Scala集合的map方法传入偏函数运行时会报错问题

2021-08-08  本文已影响0人  顺风飘千里

问题描述

map方法中传入偏函数,编译时不会报错,但是在运行时如果输入数据不符合偏函数类型会报错。代码如下

scala> val a = (1 to 10).toList
a: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala> a map {
     |  case x: Int => println("这是整型")
     | }
这是整型
这是整型
这是整型
这是整型
这是整型
这是整型
这是整型
这是整型
这是整型
这是整型
res5: List[Unit] = List((), (), (), (), (), (), (), (), (), ())

scala> val a = (1,"string")
a: (Int, String) = (1,string)

scala> a map {
     |  case x: Int => println("这是整型")
     | }
<console>:13: error: value map is not a member of (Int, String)
       a map {

原因

个人理解是因为map方法在使用时只能传入一个方法。当传入一个偏函数时,偏函数里面对数据进行筛选的方法不会运行,只会运行后面对数据进行处理的方法,所以当传入一个不符合筛选类型的数据时就会报错,如果一直传入符合要求的类型则不会报错。

上一篇 下一篇

猜你喜欢

热点阅读