Uri*_*ren 6 javascript scala immutability
我是scala的新手,但我有javascript的背景.
虽然我看到需要分开val和var(可变和不可变),但我不明白为什么def应该需要这个陈述.
如果函数是真正的一等公民,就像在javascript中一样,为什么要声明它们def而不是声明val?
该设计决策是基于JVM相关的约束,还是存在一些我无法理解的基础逻辑?
函数的一个很大的局限是它们不能作为值通用.例如
def foo[A](bar: A): Unit
Run Code Online (Sandbox Code Playgroud)
这不能表示为函数值
val foo: A => Unit // A is _not_ a type parameter
Run Code Online (Sandbox Code Playgroud)
这需要类型参数的解决方案A.其他差异是:方法带有一个自然概念this作为封闭类; 他们可以通过中止return.它们可以有多个参数列表,最重要的是隐式参数列表.他们有命名和默认参数.(我试图想象一个带有命名和默认参数的函数看起来如何,也许它可以被设计)
可能不可能只有函数值,但def似乎更好地匹配Scala的OO方面.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |