С новым Scala 2.11.0 нам все еще нужно использовать Slick HList для преодоления ограничения арности?

Хорошие новости, выпущена версия Scala 2.11.0. Наконец-то они установили предел арности ‹22 для классов дел http://www.scala-lang.org/news/2014/04/21/release-notes-2.11.0.html

Мой вопрос связан с slick orm. Должны ли мы по-прежнему использовать HList для преодоления ограничений арности?


person Vlad Miller    schedule 22.04.2014    source источник


Ответы (1)


На данный момент нет готовой версии Slick для Scala 2.11.0. Только веха Slick версии 2.1.0-M1 компилируется на новом Scala.

Для класса Slick Table требуются методы tupled и unapply для компиляции. Эти методы не существуют в классах с арностью > 22.

Таким образом, по состоянию на 22 апреля 2014 года нам все еще нужно использовать HList для преодоления ограничений арности.

Спасибо @Régis Jean-Gilles, который помог мне не запутаться.

person Vlad Miller    schedule 22.04.2014
comment
Часть о apply и unapply неверна. Классы case с арностью › 22 do имеют метод apply, но, учитывая, что функции по-прежнему ограничены максимальным числом 22, вы не можете поднять apply в функцию (без эта-расширения возможно). Пока вы напрямую вызываете apply (как в MyClass(1,2,3,...), вы хороши. И хотя нет метода unapply, сопоставление с образцом все еще работает: сопоставитель с образцом сам знает, как сопоставить класс case с образцом, ему не нужно вызывать unapply метод. - person Régis Jean-Gilles; 22.04.2014
comment
да, вы совершенно правы применить. Спасибо @RégisJean-Gilles - person Vlad Miller; 22.04.2014
comment
Без проблем. Я вижу, вы отредактировали свой ответ. Но разве тот факт, что вы можете вызвать apply и выполнить сопоставление с образцом, не сделает предложение Также применить метод, ограничивающий функции 22 параметрами, совершенно неуместным? Или Slick нужно больше (например, нужно ли ему выполнять эта-расширение на apply)? - person Régis Jean-Gilles; 22.04.2014
comment
Да, ты прав. Я запутался сам. Для работы Slick требуются методы tupled && unapply. Этих методов нет в классах case с арностью › 22 - person Vlad Miller; 22.04.2014
comment
Спасибо, что прояснили это. Есть перспективы на будущее? Это основная проблема, удерживающая меня от переноса приложения с JPA на Slick. Можем ли мы ожидать, что эта проблема будет должным образом решена в (не столь отдаленном) будущем? - person kliron; 13.10.2014
comment
Вы по-прежнему можете портировать свои приложения на Slick. Если в ваших таблицах более 22 столбцов, используйте HList - person Vlad Miller; 14.10.2014