我是Scala的初学者。
我读过有关地图操作的代码,但无法理解它是如何工作的。
val terms = Map (1 -> 1.0, 2-> 2.0)
val (exp, coeff) = (2, 4.0)
exp -> (coeff + terms(exp)) //> res: (Int, Double) = (2,6.0)
coeff + terms(exp) //> res: Double = 6.0
我认为第三行可能应用了地图功能,
但右边显然是一个数字
为什么输出是一对?
感谢。
答案 0 :(得分:4)
val (exp, coeff) = (2, 4.0)
这是一个解构函数,它将值2
和4.0
分配给名称exp
和coeff
。 exp
现在为2
,coeff
现为4.0
。
terms(exp)
这是一个导致2.0
的地图查找exp -> (coeff + terms(exp))
此箭头->
是构建配对的简短术语。它现在具有值2
和6.0
,因为coeff + terms(exp)
是6.0
。
答案 1 :(得分:2)
public static boolean sortArrayList(final int[] data) {
for(int i = 1; i < data.length; i++) {
if(data[i-1] > data[i]) {
return false;
}
}
return true;
}
在terms(exp)
定义的键处访问“地图对象”terms
的值。
与此相反,“地图方法”的用法如下所示:
exp
val list = List(1, 2, 3, 4)
val double = (i: Int) => i * 2
val list2 = list.map(double)
printf(list2.toString)
为列表的每个成员执行函数文字list.map(double)
,并返回一个新的List对象。
打印输出为:
double
答案 2 :(得分:1)
terms(exp)
是地图查找,解析为2.0
(coeff + terms(exp))
因此4.0 + 2.0
在exp -> (coeff + terms(exp))
中,箭头->
构建了一对左右操作数。