匿名函傳入某個高階函數問題
第一種方式,高階函數傳入無參匿名函數時提示type mismatch:
第二種方式,高階函數傳入有參匿名函數時,是正常的
老師能否解答一下這個問題,拿不準,是不是因為,Call-By-Name是語法和傳入的無參函數在調用高階函數時語法上面有沖突?那這個時候我如何去使這個能夠傳入一個無參的匿名函數呢?
? 注:經測試顯示定義的函數是可以傳入不報錯的,例如def anonymous = 10;
??
第一種方式,高階函數傳入無參匿名函數時提示type mismatch:
第二種方式,高階函數傳入有參匿名函數時,是正常的
老師能否解答一下這個問題,拿不準,是不是因為,Call-By-Name是語法和傳入的無參函數在調用高階函數時語法上面有沖突?那這個時候我如何去使這個能夠傳入一個無參的匿名函數呢?
? 注:經測試顯示定義的函數是可以傳入不報錯的,例如def anonymous = 10;
??
2017-09-01
舉報
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));
}