匿名函傳入某個(gè)高階函數(shù)問題
第一種方式,高階函數(shù)傳入無參匿名函數(shù)時(shí)提示type mismatch:
第二種方式,高階函數(shù)傳入有參匿名函數(shù)時(shí),是正常的
老師能否解答一下這個(gè)問題,拿不準(zhǔn),是不是因?yàn)椋珻all-By-Name是語法和傳入的無參函數(shù)在調(diào)用高階函數(shù)時(shí)語法上面有沖突?那這個(gè)時(shí)候我如何去使這個(gè)能夠傳入一個(gè)無參的匿名函數(shù)呢?
? 注:經(jīng)測試顯示定義的函數(shù)是可以傳入不報(bào)錯(cuò)的,例如def anonymous = 10;
??
2017-09-01
剛才測試了一下:話不多說看代碼:
package scala.jeny
object Greeting extends App {
? ? //定義一個(gè)無參匿名函數(shù),返回一個(gè)Int類型,并使用變量anonymous接收
? val anonymous = () => 10;
? //定義一個(gè)加法函數(shù),函數(shù)名為add,接受一個(gè)無參函數(shù),并對這個(gè)函數(shù)進(jìn)行兩次計(jì)算并求和
? //可以說就是一個(gè)call-by-name的語法
? //這個(gè)點(diǎn)上可以傳入無參函數(shù),也可以傳入一個(gè)表達(dá)式,個(gè)人認(rèn)為前者就是后者包涵的部分
? def add(b:() => Int) = {
????? b() + b();
? };
println(add(anonymous));
}