Их эквивалент API Выражения C# в scala?
Например, я хотел бы иметь лямбду как это:
(Foo) => Foo.bar
и будьте в состоянии получить доступ к "панели" в функции, которой она передается.
Это не поддерживается Scala. SCALAQL: Интеграция языка База данных Для Scala описывает функциональность в LinQ в Scala:
, в то время как Microsoft можно для Microsoft просто продлить свой язык этим Особая особенность, низко приложение Разработчики не так повезло. Для ТЕХНИЧЕСКИЕ, К ЛЮБО (за пределами Sun Microsystems) к внедрить любую форму LINQ в Java Из-за языковых модифициров который потребуется. Мы столкнулись на А. похожие проблемы, пытающиеся Внедрить LINQ в Scala.
К счастью, Scala на самом деле достаточно мощный в и сам по себе внедрить форму LINQ даже без Добавление поддержки для деревьев выражения. Через комбинацию оператора Перегрузка, неявные преобразования и Управляемая семантика для вызова, мы смогли достичь того же вытеснить, не внесенные никаких изменений в сам язык.
есть экспериментальный Scala.reflect.code.lift
, который может представлять интерес, но короткий ответ не является, Scala не имеет доступа к AST в любой форме (выражение деревьев представляют собой подмножество AST C #).
Мне не совсем понятно, что вы хотите. Если вы хотите функцию, которая возвращает 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 _).