Я новичок в языке программирования Scala и пытался что-то затеять в уме, когда я следил за лекциями на здесь.
Я думаю, что не мог понять, как работает оператор cons, вот некоторые вещи, которые я пробовал:
Я создал генератор псевдослучайных чисел, затем попытался создать список из одного случайного значения:
scala> val gen = new java.util.Random
gen: java.util.Random = [email protected]
scala> gen nextInt 3 :: Nil
<console>:7: error: type mismatch;
found : List[Int]
required: Int
gen nextInt 3 :: Nil
^
Но он попытался передать List (3) методу nextnt. Когда я использовал паратесы, проблем не было.
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
?