【发布时间】:2020-11-18 20:02:35
【问题描述】:
我正在学习 Scala 编程语言。
这里有一些简单的函数和闭包有bug,请帮我修复它们,Rational.scala:
// function
def f11(a:Int, b:Int):Int { return a+b; }
def f12(a:Int, b:Int):Int = a+b
def f21(a:(Int)=>Int, b:Int):Int { return a(b); }
def f22(a:(Int)=>Int, b:Int):Int = a(b)
def f31(a:Int, b:Int):(Int)=>Int { return (c:Int) => a + b + c; }
def f32(a:Int, b:Int):(Int)=>Int = (c:Int) => a + b + c
// closure
val g11 = (a:Int, b:Int) => a + b;
val g12:(Int,Int)=>Int = (a:Int, b:Int) => { return a + b; }
val g21 = (a:(Int)=>Int, b:Int) => a(b);
val g22:((Int)=>Int,Int)=>Int = (a:(Int)=>Int, b:Int) => { return a(b); }
val g31 = (a:Int, b:Int) => (c:Int) = a+b+c;
val g32:(Int,Int)=>(Int)=>Int = (a:Int, b:Int) => { return (c:Int) => a+b+c; }
用scala Rational.scala 运行它们,给我错误信息:
Rational.scala:32: error: illegal start of declaration (possible cause: missing `=` in front of current method body)
def f11(a:Int, b:Int):Int { return a+b; } // (Int,Int)->Int
^
Rational.scala:36: error: illegal start of declaration (possible cause: missing `=` in front of current method body)
def f21(a:(Int)=>Int, b:Int):Int { return a(b); } // ((Int)->Int,Int)->Int
^
Rational.scala:40: error: illegal start of declaration (possible cause: missing `=` in front of current method body)
def f31(a:Int, b:Int):(Int)=>Int { return (c:Int) => a + b + c; } // (Int,Int)->(Int)->Int
^
Rational.scala:54: error: ';' expected but '=' found.
val g31 = (a:Int, b:Int) => (c:Int) = a+b+c;
【问题讨论】:
标签: scala functional-programming closures