Скажем, я пишу метод, который принимает функцию, и имеет другую функцию, которая возвращает функцию. Я могу написать мой метод, как так:В чем разница между `() =>` и `=>`?
def logParens(f:() => String) = println(f())
Или вот так:
def logNoParens(f: => String) = println(f)
И скажем, у меня есть метод, который возвращает строку
def foo = "foo"
Каким образом я могу передать Foo непосредственно в logNoParens
, но не logParens
? Похоже, Scala заставляет foo
в => foo
перед тем, как передать его в logNoParens
.
logParens(foo) // this gives me a type error
logParens(() => foo) // this compiles
logNoParens(foo) // this compiles just fine
В чем разница между =>
и () =>
?
http://stackoverflow.com/questions/4543228/whats-the-difference-between-and-unit, на который ссылается амбициозный http://stackoverflow.com/tags/scala/info –
Добавить parens to def foo() ', чтобы получить расширение eta. –
Спасибо, @ som-snytt. Этот вопрос довольно сложный для Google. – bioball