Как я могу объявить метод, который возвращает значение 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 метод.

Другие вопросы по тегам