可以编译以下代码
def isEven(a:Int)=
if (a%2==0) true else false
def main(args: Array[String]) {
List(1, 10) filter isEven foreach println
但如果我改为以下(列表(1,10) - >列表(1到10))
def isEven(a:Int)=
if (a%2==0) true else false
def main(args: Array[String]) {
List(1 to 10) filter isEven foreach println
}
List(1,10)和List(1到10)之间有什么区别?
答案 0 :(得分:5)
List(1, 2)
只是一个包含两个Int
元素的列表:1和2.表达式1 to 10
创建一个Range
实例,因此List(1 to 10)
是一个列表使用一个元素:Range
。
答案 1 :(得分:3)
List(1, 10)
是List[Int]
而List(1 to 10)
是List[Range]
。观察以下REPL会话中的类型:
scala> 1 to 10
res3: scala.collection.immutable.Range.Inclusive with scala.collection.immutable.Range.ByOne = Range(1, 2, 3, 4, 5, 6, 7
, 8, 9, 10)
scala> List(1 to 10)
res4: List[scala.collection.immutable.Range.Inclusive with scala.collection.immutable.Range.ByOne] = List(Range(1, 2, 3,
4, 5, 6, 7, 8, 9, 10))
scala> List(1, 10)
res5: List[Int] = List(1, 10)
答案 2 :(得分:3)
missingfaktor是对的,所以这只是一个补充。
如果您希望List[Int]
的数字从1到10,您可以写
List(1 to 10:_*)
或
1 to 10 toList