【发布时间】:2017-04-13 12:26:04
【问题描述】:
我是新手,正在学习 Scala 编程。我正在努力使用以下代码。如果我试图用声明的类型“typeDouble”替换“def combine”函数中的“(Double,Double)”,那么为什么它不起作用。 代码是:
type typeDouble = (Double,Double)
def foo: (Double,Double) => Double = (x: Double,y:Double) => x*y
def combine(x: Double, y: Double, z: Double, fun1 : typeDouble => Double) = fun1(fun1(x,y), z)
combine(1,2,3, foo)
编译器说:
type mismatch;
found : (Double, Double) => Double
required: A$A228.this.typeDouble => Double
(which expands to) ((Double, Double)) => Double
combine(1,2,3, foo);}
^
请解释这个概念出了什么问题?
【问题讨论】:
-
注意:这有点太冗长了:
def foo: (Double,Double) => Double = (x: Double,y:Double) => x*y,你可以避免重复类型名称:def foo: (Double,Double) => Double = (x,y) => x*y,或def foo = (x: Double,y : Double) => x*y。
标签: scala functional-programming