2015-12-27 2 views
1

Для отладки, я хочу, чтобы напечатать принятый аргумент, какЕсть ли макросы, чтобы увидеть мой код во время выполнения?

def myfunc(arg: MyType) = println(str_macro(arg) + " = " + arg) 

Я знаю, I can define mine own. Но это кажется стандартным. Is поставляется стандартными библиотеками?

+0

Вы знаете, что если 'myfunc' не является самим макросом, код для' arg' будет довольно разочаровывающим? - это будет просто что-то вроде «ValDef» (моя догадка) и совсем не отражает то, что вы отправляете туда с сайта вызова. Эта информация исчезла. –

ответ

1

Я не думаю, что в стандартной библиотеке есть одна, но см. https://github.com/adamw/scala-macro-debug и https://github.com/vn971/macro-format (вы также можете сделать show(reify(arg).tree)). Обратите внимание, что в этом случае, как говорит 0__, код для arg будет всего лишь arg!

+0

Да, нам нужно 'QUOTE (arg)' вместо 'debug_print (arg)'. –

Смежные вопросы