匿名函传入某个高阶函数问题
第一种方式,高阶函数传入无参匿名函数时提示type mismatch:
第二种方式,高阶函数传入有参匿名函数时,是正常的
老师能否解答一下这个问题,拿不准,是不是因为,Call-By-Name是语法和传入的无参函数在调用高阶函数时语法上面有冲突?那这个时候我如何去使这个能够传入一个无参的匿名函数呢?
注:经测试显示定义的函数是可以传入不报错的,例如def anonymous = 10;
第一种方式,高阶函数传入无参匿名函数时提示type mismatch:
第二种方式,高阶函数传入有参匿名函数时,是正常的
老师能否解答一下这个问题,拿不准,是不是因为,Call-By-Name是语法和传入的无参函数在调用高阶函数时语法上面有冲突?那这个时候我如何去使这个能够传入一个无参的匿名函数呢?
注:经测试显示定义的函数是可以传入不报错的,例如def anonymous = 10;
2017-09-01
刚才测试了一下:话不多说看代码:
package scala.jeny
object Greeting extends App {
//定义一个无参匿名函数,返回一个Int类型,并使用变量anonymous接收
val anonymous = () => 10;
//定义一个加法函数,函数名为add,接受一个无参函数,并对这个函数进行两次计算并求和
//可以说就是一个call-by-name的语法
//这个点上可以传入无参函数,也可以传入一个表达式,个人认为前者就是后者包涵的部分
def add(b:() => Int) = {
b() + b();
};
println(add(anonymous));
}
举报