Я изо всех сил пытался найти способ придерживаться функционального стиля для выражений, когда мне нужно собрать несколько параметров объекта в Список.
В качестве примера, скажем, у меня есть объект Notification, который имеет и fromId (идентификатор пользователя, от которого получено уведомление), и objectOwnerId (идентификатор пользователя, создавшего исходный объект). Они могут отличаться в уведомлениях в стиле Facebook («X также прокомментировал сообщение Y»).
Я могу собрать userIds с выражением for, например, так:
val userIds = for { notification <- notifications } yield notification.fromId
однако говорят, что я хочу собрать и fromIds, и objectOwnerIds в один список, есть ли способ сделать это в одном выражении for без пользователя vars?
Я делал что-то подобное в прошлом:
var ids = List()
for {
notification <- notifications
ids = ids ++ List(notification.fromId, notification.objectOwnerId)
}
ids = ids.distinct
но такое ощущение, что должен быть лучший способ. Использование var и необходимость вызывать Different после того, как я завершу сбор, уродливы. Я мог бы избежать отличия с помощью некоторых условных выражений, но я пытаюсь изучить правильные функциональные методы, чтобы что-то делать.
Заранее спасибо за любую помощь!