У меня есть класс, следующим образом:Реализация метода SCALA с помощью частичной функции
trait Foo {
def greet(name: String) : String
}
trait Bar {
def hello(name: String) = s"Hello ${name}!"
}
class Greeter extends Foo with Bar {
def greet(name: String) = hello(name)
}
Мне интересно, если это возможно реализовать greet
с частичным применением метода hello
? Что-то вроде:
class Greeter extends Foo with Bar {
def greet = hello
}
(Очевидно, что это не работает)
Таким образом, это невозможно сделать, если только s более высокий класс уже определил метод как String => String, а не (name: String) String. Интересно, что 'def greet (name: String) = hello (name)' и 'def greet = hello _' не совпадают, несмотря на то, что они имеют одинаковое имя и эффективный тип String => String и что можно определить как в тот же класс. Haskell 1, Scala 0.;) –