var tt = ['ID', 'Name', 'Price', 'Quantity', 'Item Total'];
for(i; i < tt.length; i++){
var x = document.createElement('th');
x.appendChild(document.createTextNode(tt[i]))
header.appendChild(x);
}
但我得到以下错误=
val g = List(1,2,3)
val k = g.fold((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))
有人可以解释,为什么它期待“任何”类型。
但下面有效:
found : ((Int, Int), Int) => (Int, Int)
required: (Any, Any) => Any
g.fold((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))
答案 0 :(得分:7)
您的意思是使用foldLeft
:
val k = g.foldLeft((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))
fold
有签名
def fold[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1
因此它要求元素类型与累加器类型匹配,而您的示例对于两者都有不同的类型。
答案 1 :(得分:0)
具体回答这一部分:
李的答案给出了签名:有人可以解释,为什么它期待&#34;任何&#34;类型。
fold[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1
。在您的情况下,编译器知道A
为Int
,并且您将(0,0)
的类型(Int, Int)
传递为z
。因此A1
必须是Int
和(Int, Int)
的超类型。 Any
是他们最不重要的上限。