Julia マクロを使用していると、試行錯誤のプログラミングに陥ってしまうようですが、これも例外ではありません。式のエラーをキャッチし、式が失敗した場合にフラグを設定する単純なマクロを作成しようとしています。呼び出しコンテキストで式 (1 つまたは複数の代入ステートメントを含む可能性があります) を評価したいので、これはマクロです。したがって、次のようなものです:
macro flag_errors(ex)
broken = false
esc(quote
try
$(ex)
catch
broken = true
end
end)
end
関数をネストするさまざまな方法を試しましesc
たが、呼び出し環境で割り当てを適切に評価する方法をまだ見つけていません。
julia> @flag_errors a=2
2
julia> a
a not defined
julia> @flag_errors a=2+"X"
true
julia> a
a not defined
julia> broken
broken not defined
このマクロの正しい書き方は? try
ブロックが問題の原因ですか?