我对 Scala 编程语言还很陌生,并且在学习这里的讲义时正在尝试一些留在我脑海中的东西。
我想我无法真正理解 cons 运算符的工作原理,这是我尝试过的一些事情:
我创建了一个伪随机数生成器,然后尝试创建一个包含一个随机值的列表:
scala> val gen = new java.util.Random
gen: java.util.Random = java.util.Random@1b27332
scala> gen nextInt 3 :: Nil
<console>:7: error: type mismatch;
found : List[Int]
required: Int
gen nextInt 3 :: Nil
^
但它试图将 List(3) 传递给 nextnt 方法。当我使用paratheses时,没有问题
scala> (gen nextInt 3) :: Nil
res69: List[Int] = List(1)
我对执行顺序很好奇,所以我创建了一个函数来检查它
scala> def pr(i:Int):Int = { println(i); i }
pr: (i: Int)Int
scala> pr(1) :: pr(2) :: pr(3) :: Nil
1
2
3
res71: List[Int] = List(1, 2, 3)
如输出所示,执行顺序与出现顺序相同。然后我认为这可能与“nextInt”函数有关,然后我尝试了以下操作:
scala> 1 + 2 :: Nil
res72: List[Int] = List(3)
它首先执行加法,然后执行 cons。gen nextInt 3 :: Nil
那么问题来了:和有什么区别1 + 2 :: Nil
?