有人可以解释这段代码吗?

时间:2015-09-16 14:02:07

标签: scala

新手在这里。我偶然发现了以下这段代码

.fc-toolbar {
    display: none !important;
}
.fc-day-header {
    display: none !important;
}

有人可以解释class A class B extends A val printB: B => Unit = { b => println("Blah blah") } 功能吗?我无法理解printB是什么,因为它没有在任何地方定义。

1 个答案:

答案 0 :(得分:6)

printB是一个匿名函数。它的作用类似于这种方法:

 def printBmethod(b: B): Unit = { println("Blah blah") }

除了要使它成为一个函数之外,你必须eta-expand就像:

 val printB = printBmethod _

另请参阅:Difference between method and function in Scala

解释lambda本身,b是一个输入参数,所以你可以这样称呼它:

 printB(new B)

B => Unit表示需要B并返回Unit的函数,因此scala正在寻找需要B并返回Unit的内容 - 如{{1} }}

P.S。没有b: B => ...类型推断的原始代码如下所示:

b

所以在这里你看到实际上val printB: B => Unit = { b: B => println("Blah blah") } 是什么。