У меня есть класс случая тот экземпляр на основе некоторых операций БД:Создание вложенных объектов из для-понимания в Scala
case class FullFight(fight: FightsRow, firstBoxer: BoxersRow,
secondBoxer: BoxersRow, bookiesOdds: Seq[BookiesOddsRow])
val tupledJoin = for {
f <- Fights
b1 <- Boxers if f.firstBoxerId === b1.id
b2 <- Boxers if f.secondBoxerId === b2.id
} yield (f, b1, b2)
db.run(tupledJoin.result).map(_.map(FullFight.tupled))
Проблема заключается в том, что я не хотел бы указать, какие bookiesOdds в этом запросе (они заполняются каким-то другим запросом). Вместо этого я хотел бы создать кортеж tupledJoin, содержащий пустую последовательность Seq [BookiesOddsRow], чтобы создать объект класса case. Есть ли способ смешать это в цикле для понимания? Я полагаю, мне нужно что-то вроде этого:
val seq: Seq[BookiesOddsRow] = Nil
val tupledJoin = for {
f <- Fights
b1 <- Boxers if f.firstBoxerId === b1.id
b2 <- Boxers if f.secondBoxerId === b2.id
} yield (f, b1, b2, seq)
Возможно ли это? Как правильно его реализовать?
С наилучшими пожеланиями
Ваш последний фрагмент, кажется, делает именно то, что вы описываете. В чем проблема? – Dima
Я получил ошибку 'недостаточно аргументов для карты метода: (неявная форма: slick.lifted.Shape [_ <: slick.lifted.FlatShapeLevel, (models.Tables.Fights, models.Tables.Boxers, models.Tables.Boxers , Seq [models.Tables.BookiesOddsRow]), T, G]) slick.lifted.Query [G, T, Seq]. Unspecified value parameter shape. ' – Gandalf
Я не вижу ничего общего с пятном в вашем фрагменте. Ваш вопрос должен иметь отношение к некоторым особенностям пятна, но вы не разместили достаточно подробностей для определения этой проблемы. Я могу сказать вам, что абсолютно ничего плохого в том, что вы опубликовали фрагмент 'for-comprehension'. – Dima