Как я могу объявить метод, который возвращает значение Option в Thrift/Scrooge?
Я использую Scrooge для генерации кода интерфейса Thrift следующим образом:
struct UserInfo {
1: i64 userId,
2: string name
}
service userservice {
UserInfo getUserById(1:i64 userId)
}
Скрудж сгенерирует этот метод из файла IDL выше: def getUserById(userId: Long): Future[UserInfo]
,
Однако в scala значение, которое может отсутствовать, может быть представлено через тип данных Option. Таким образом, экономный код, сгенерированный в Scala-way, может выглядеть так def getUserById(userId: Long): Future[Option[UserInfo]]
, В то время как Опция специфична для scala, есть ли способ заставить Скруджа это поддерживать?
Большое спасибо!
1 ответ
Ты можешь использовать list<T>
подражать варианту. И поскольку Option может рассматриваться как набор элементов 0|1, эта замена также корректна с точки зрения семантики.
Для преобразования этого списка в опцию в вашем коде Scala вы можете использовать headOption
метод.