def和val的区别?
⭐️⭐️⭐️⭐️
val是函数,def是方法,方法通常定义在类/特质/对象里面。
根据ETA技术,大部分情况下它俩可以等价交换。
函数是一个对象,该对象是Function0~Function22的实例,并拥有一些通用操作。
尽管ETA使得两种方式基本等价,但本质上函数是个支持序列化的值,方法不是。所以方法名只能作为参数去调用另一个接受函数为参数的方法(ETA),或者使用自己所需的参数来调用自己,但函数的使用与其他类型的值使用起来几无区别。
调用柯里化方法,并部分应用该函数时(只传部分参数),实际上是将方法转化为了函数(根据柯里化层级,可能是高阶函数),该函数以原方法剩下(排除部分应用的调用时你已经传递的)的参数为参数,返回类型不变。
1.定义柯里化函数
def sss(i:Int)(j:Int) = 10
2.部分应用,只传一个参数。下划线在Scala2是必须的,Scala3中,优化的ETA已经支持省略下划线
sss(1) _
3.得到一个新函数,注意,是函数,不是方法。该函数的参数Int是用于接受j这个刚刚你没有传的参数。
Int => Int
答到1 3及格
答完满分
Last updated
Was this helpful?