0
私はスカラ関数のリテラルフォーマットを研究するために単体テストを行いましたが、それはかなり混乱していました。別の構文の意味を理解してもらえますか?scala関数リテラル混同
@Test def supplierLiteral: Unit = {
object Taker {
def takeFunctionLiteral(supplier: => Int): Unit = {
println("taker takes")
// println(supplier.apply()) //can't compile
println(supplier)
}
def takeExplicitFunction0(supplier:() => Int): Unit = {
println("taker takes")
println(supplier())
}
}
val give5:() => Int =() => {
println("giver gives")
5
}
println(give5.isInstanceOf[Function0[_]])
Taker.takeFunctionLiteral(give5) //can't compile, expected Int
println()
Taker.takeExplicitFunction0(give5)
}
なぜtakeFunctionLiteral
でprintln(suppiler.apply())
正しくない構文がありますか? どちらも同じではありませんか?事前に
supplier:() => Int
と
supplier: => Int
感謝の違いは何ですか。
参照http://stackoverflow.com/questions/32802104/some-questions-about-difference-between-call-by-name-and-0-arity-functions – Yawar