Макрос Scala для печати кода?
Я хочу сделать что-то вроде этого:
def assuming[A](condition: => Boolean)(f: => A): A = {
require(condition, /* print source-code of condition */)
f
}
Пример использования:
def fib(n: Int) = n match { // yes, yes, I know this is not efficient
case 0 => 0
case 1 => 1
case i => assuming(i > 0) { fib(i-1) + fib(i-2) }
}
Теперь, например, если вы звонитеfib(-20)
Я хочу, чтобы это выдало исключение с сообщениемAssertion failed: -20 > 0
или жеAssertation failed: i > 0