为什么List (1 , 2 , 3) :: List (4 , 5 , 7 , 8 , 9) :: List (10, 11 , 12)
的运算结果是List(List(1, 2, 3), List(4, 5, 6, 7, 8, 9), 10, 11, 12)
;而不是List (1 , 2 , 3) :: List (4 , 5 , 7 , 8 , 9) :: List (10, 11 , 12)
这个呢?转化
答案 0 :(得分:0)
“ cons”方法::
用于向List
的开头添加新元素。
val pet = 'c' :: List('a', 't') //pet: List[Char] = List(c, a, t)
那么当您执行以下操作时会发生什么:List(4,5,7,8,9) :: List(10,11,12)
?您正在将List[Int]
类型的一个新元素添加到Int
的列表中。结果是一个包含四个元素的列表:List[Int],Int,Int,Int
。由于类型Int
和List[Int]
是不相关的,因此结果是类型List[Any]
。
val bad = List(4,5,7,8,9) :: List(10,11,12)
//bad: List[Any] = List(List(4, 5, 7, 8, 9), 10, 11, 12)
外推到另一个List[Int]
元素,您会明白为什么它返回您得到的结果。
val notGood = List(1,2,3) :: List(4,5,7,8,9) :: List(10,11,12)
//notGood: List[Any] = List(List(1, 2, 3), List(4, 5, 7, 8, 9), 10, 11, 12)