如何让Julia脚本自动显示所有未加;的代码执行结果(类似MATLAB)
Julia 脚本自动显示每行执行结果(仿MATLAB)
要让Julia脚本自动输出每行代码的执行结果,无需手动添加display(),可以试试这几种实用方法:
1. 用交互式REPL直接运行(最省事)
打开Julia终端(REPL),将代码逐行粘贴或输入:
- 非赋值语句(比如
a * transpose(a))默认会自动显示结果; - 若要让赋值语句(比如
a = [1;0;0])也显示结果,要么在赋值后单独加一行变量名(a = [1;0;0]; a),要么用@show宏:@show a = [1;0;0],这样会同时输出变量名和对应的值。
2. 自定义宏批量处理脚本代码
如果必须通过脚本文件运行,可在脚本开头定义一个宏,自动给所有表达式添加显示逻辑:
# 定义自动显示所有表达式结果的宏 macro showall(block) # 过滤掉行号节点,给每个有效表达式添加display调用 display_calls = [:(display($expr)) for expr in block.args if !(expr isa LineNumberNode)] return quote $(display_calls...) end end # 把需要执行的代码放在@showall块内 @showall begin a = [1; 0; 0] b = [0; 1; 0] c = [0; 0; 1] a * transpose(a) b * transpose(b) c * transpose(c) end
运行该脚本时,每个表达式的结果都会自动在终端输出。
3. 命令行调用时模拟REPL行为
若不想修改脚本内容,可在命令行用--eval参数结合逐行解析执行,让Julia以类似REPL的方式运行脚本:
julia --eval 'for expr in readlines("your_script.jl") isempty(strip(expr)) && continue res = eval(Meta.parse(expr)) display(res) end'
这个命令会逐行读取脚本内容,跳过空行,解析并执行每行代码后自动显示结果。
内容的提问来源于stack exchange,提问作者Nate
相关产品推荐
相关产品推荐

