пример из бережливости websiteЧто 1: значит, в списке параметров бережливость
int multiply(1:int n1, 2:int n2);
Почему мы должны использовать метки 1:
и 2:
перед тем именами переменных, какова цель этого лейбла?
пример из бережливости websiteЧто 1: значит, в списке параметров бережливость
int multiply(1:int n1, 2:int n2);
Почему мы должны использовать метки 1:
и 2:
перед тем именами переменных, какова цель этого лейбла?
Эти числа («1:» и «2:») являются порядковыми значениями параметров. Ординал - это причудливый способ сказать «положение в серии», однако цифры не обязательно должны быть последовательными, только уникальными.
[TLDR]
В Apache сберегательной IDL, порядковые присваиваются каждый параметр в списке параметров и каждое поле в структурах. Когда клиентские программы вызывают сервер Apache Thrift, они не передают имя параметра, они пропускают гораздо меньший порядковый номер, число, представляющее тип параметра и сериализованное значение параметра.
Это не только экономит место на проводе, но и позволяет добавлять параметры в функцию с течением времени и отправлять параметры в любом порядке без нарушения работы клиентов или серверов. Если программа Apache Thrift получает параметр с порядковым номером, он не распознает его, игнорирует его.
Также, если параметр отсутствует, можно использовать значение по умолчанию. Вот еще один пример служба со значением по умолчанию, назначенное для параметра allowPartialMatch:
service SocialLookup {
string GetSiteByRank(1: i32 rank)
i32 GetSiteRankByName(1: string name, 2: bool allowPartialMatch=false)
list<string> GetSitesByUsers(1: i32 minUserCount, 2: i32 maxUserCount)
}
Если клиент вызывает метод GetSiteRankByName и не проходит пары «2:», используются по умолчанию. Предоставление интерфейсов таким образом развивается так важно в средах, где вы хотите выпускать новые версии отдельных служб без необходимости одновременного обновления всех пользователей службы, например. микросервисы и CI/CD.
Важно отметить, что после установки вы никогда не должны изменять порядковый номер, поскольку это может привести к тому, что данный клиент и сервер неправильно понимают друг друга. Вы можете удалить параметры, но лучше всего прокомментировать их, чтобы каждый знал, что нельзя повторно использовать порядковый номер.
[/ TLDR]
Можно добавить, что эти цифры информация только используется между клиентом и сервером для идентификации конкретного поля. Имена полей, как правило, даже не сериализуются в сообщениях.
отличная вещь! вся цель ординалов состоит в том, чтобы устранить необходимость сериализации больших названий полей, что очень важно (на самом деле критическое). – codeSF