为了账号安全,请及时绑定邮箱和手机立即绑定

匿名函传入某个高阶函数问题

第一种方式,高阶函数传入无参匿名函数时提示type mismatch:

http://img1.sycdn.imooc.com//59a8c3bd0001291706740259.jpg

第二种方式,高阶函数传入有参匿名函数时,是正常的

http://img1.sycdn.imooc.com//59a8c33000016c9410480311.jpg

老师能否解答一下这个问题,拿不准,是不是因为,Call-By-Name是语法和传入的无参函数在调用高阶函数时语法上面有冲突?那这个时候我如何去使这个能够传入一个无参的匿名函数呢?

  注:经测试显示定义的函数是可以传入不报错的,例如def anonymous = 10;

  http://img1.sycdn.imooc.com//59a8c5110001d34e07660259.jpg

正在回答

1 回答

刚才测试了一下:话不多说看代码:

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));

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

匿名函传入某个高阶函数问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信