Scala, эквивалентный API Выражения C#

Их эквивалент API Выражения C# в scala?

Например, я хотел бы иметь лямбду как это:

(Foo) => Foo.bar

и будьте в состоянии получить доступ к "панели" в функции, которой она передается.

14
задан user281655 21 January 2010 в 07:11
поделиться

4 ответа

Это не поддерживается Scala. SCALAQL: Интеграция языка База данных Для Scala описывает функциональность в LinQ в Scala:

, в то время как Microsoft можно для Microsoft просто продлить свой язык этим Особая особенность, низко приложение Разработчики не так повезло. Для ТЕХНИЧЕСКИЕ, К ЛЮБО (за пределами Sun Microsystems) к внедрить любую форму LINQ в Java Из-за языковых модифициров который потребуется. Мы столкнулись на А. похожие проблемы, пытающиеся Внедрить LINQ в Scala.

К счастью, Scala на самом деле достаточно мощный в и сам по себе внедрить форму LINQ даже без Добавление поддержки для деревьев выражения. Через комбинацию оператора Перегрузка, неявные преобразования и Управляемая семантика для вызова, мы смогли достичь того же вытеснить, не внесенные никаких изменений в сам язык.

9
ответ дан 1 December 2019 в 13:33
поделиться

есть экспериментальный Scala.reflect.code.lift , который может представлять интерес, но короткий ответ не является, Scala не имеет доступа к AST в любой форме (выражение деревьев представляют собой подмножество AST C #).

6
ответ дан 1 December 2019 в 13:33
поделиться

Мне не совсем понятно, что вы хотите. Если вы хотите функцию, которая возвращает Getter для поля, вы можете сделать это довольно легко:

class Holder(var s: String) { }
class StringSaver(f: Holder => (() => String), h: Holder) {
  val getter = f(h)
  def lookAtString = getter()
}

val held = new Holder("Hello")
val ss = new StringSaver((h: Holder) => (h.s _) , held)
println(ss.lookAtString)
held.s = "Bye now"
println(ss.lookAtString)

Ключ заключается в том, чтобы повернуть Getter H.S в функцию через (H.S _).

2
ответ дан 1 December 2019 в 13:33
поделиться

Нет, насколько мне известно.

1
ответ дан 1 December 2019 в 13:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: