Спасибо Рэндаллу Шульцу за хороший однострочный ответ.
Я искал такую возможность, чтобы создать инструмент INVARIANT, который бы выполнял несколько утверждений вместе. Решение, которое я тогда придумал, состоит в том, чтобы просто иметь методы 1..5 apply
, поскольку число необходимых вам varargs конечно.
object INVARIANT {
def apply = {}
def apply( conds: => Boolean * ) = { // DOES NOT COMPILE
conds.foreach( assert(_) )
}
}
object TestX extends App {
class A {
println("A body")
INVARIANT( true )
}
class B extends A {
println("B body")
INVARIANT( true, false )
}
new B
}
Я опубликовал это, чтобы показать, что я считаю правильным вариантом использования varargs для переменных «по имени». Если есть лучшее имя, пожалуйста, оставьте комментарий. Спасибо.