Это потому, что varars
- это единственный аргумент - массив строк (обратите внимание, что я не пишу Array[String]
, потому что это не java Array
, более подробно здесь ), тогда как, глядя на подпись def someOtherFunction(someOtherVarars: String*): Unit
, мы можем сказать, что someOtherFunction
принимает несколько аргументов типа String
каждый. Вы не можете просто передать массив в качестве параметра в someOtherFunction
, вам нужно сначала «развернуть» его.
Другими словами, аргумент может быть передан в someOtherFunction
, он должен быть помечен как аргумент последовательности , Не было бы особого смысла передавать varargs
и varargs(1)
в одну функцию. Это описано в SLS §4.6.2 .