Скала foreach с одним дополнением, не может принять любую операцию? - PullRequest
0 голосов
/ 02 ноября 2018

Я новичок в Scala и нахожу 'foreach' немного запутанным, как:

    (1 to 10).foreach(println(_)) //OK
    (1 to 10).foreach(x=>println(x+1)) //OK
    (1 to 10).foreach(println(_+1)) //ERROR

Я бы знал, что происходит в 3-й строке кода. Любая помощь приветствуется, спасибо

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Нет способа использовать _ для этого анализа, предшествующего проверке типов, поэтому у компилятора действительно нет возможности прочитать ваши мысли здесь и угадать, что вы намеревались подумайте над тем, чтобы написать приведенный ниже код, так как это более чистый код, потому что он хранит вычисления отдельно от ввода-вывода.

(1 to 10).map(_ + 1).foreach(println)

0 голосов
/ 02 ноября 2018
(1 to 10).foreach(println(_+1))

компилятор видит вышеприведенное выражение как:

(1 to 10).foreach(println(x => x + 1))

И вы хотите это так:

(1 to 10).foreach(x=>println(x+1))

Синтаксис заполнителя для анонимных функций заменяет наименьшее возможное выражение, содержащее выражение,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...