Во-первых, обратите внимание, что
val m = x.min
делает то, что вы хотите, как
val m = (Int.MaxValue /: x)(_ min _)
Я предоставлю вам больше информации об этих вещах (метод min для коллекций и складок; обратите внимание, что они не так быстры, как написанные вами).
Проблема в том, что компилятор теряется из-за того, что вы имеете в виду, и из-за того, какие допустимые типы могут быть, когда вы пишете подчеркивание, и когда вы добавляете информацию о типе, он думает, что вы пытаетесь написать функцию прямо здесь и присвойте его m
. Но, конечно, m
- это Int
, а не функция, поэтому он жалуется.
Просто напишите это явно. Это всего лишь несколько дополнительных символов:
x.foreach(i => m = m min i)