为什么scala列表结果是这个,请关注,谢谢

时间:2018-08-28 02:36:11

标签: scala

为什么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)这个呢?转化

1 个答案:

答案 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。由于类型IntList[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)