返回信息流1. trait somehing [A,B]
中括号里的A,B代表什么?
2.一个类里定义一个方法: def someMethod (x: => Boolean) :Boolean
中的参数x 的类型是 匿名函数吗? 为什么 "=>"前是空的?
(这两种用法是Coursera上课程里的例子,保证是正确的用法)
这是一条镜像帖。来源:北邮人论坛 / java / #28820同步于 2014/3/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
两个Scala有关语法的问题
kuibu
2014/3/13镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
1. A和B是类型参数。类似Java的泛型(Generic)类型参数。
2. => T指的是参数的这个位置是一个“按名传递”(pass by name)的表达式,其值类型是T。在函数体中,每次使用这个按名传递的参数,都会对这个表达式重新求值一次。但是普通的“按值传递”的参数则是在调用之前先求值。
比如
def showMe(y: Int): Int = {
println("Hey, I am %d".format(y))
return y
}
def someMethod(x: => Int): Unit = {
println(x)
println(x)
println(x)
}
def someMethodElse(x: Int): Unit = {
println(x)
println(x)
println(x)
}
someMethod(showMe(4))
/* 输出:
Hey, I am 4
4
Hey, I am 4
4
Hey, I am 4
4
*/
someMethodElse(showMe(4))
/* 输出:
Hey, I am 4
4
4
4
*/
thx~ 第二个例子举的真好。[ema11]
很符合 pass by name 的字面意,传递参数时一直使用Name,不被Value替换掉,每次使用被计算一次。
【 在 nuanyangyang 的大作中提到: 】
: 1. A和B是类型参数。类似Java的泛型(Generic)类型参数。
: 2. => T指的是参数的这个位置是一个“按名传递”(pass by name)的表达式,其值类型是T。在函数体中,每次使用这个按名传递的参数,都会对这个表达式重新求值一次。但是普通的“按值传递”的参数则是在调用之前先求值。
: 比如
: ...................
大神在用scala吗