有没有办法在 Julia 中显示没有用“;”抑制的每一行代码?,就像在 MATLAB 中一样?

Nat*_*ate 3 terminal matlab julia visual-studio-code

假设我正在运行 Julia 脚本。我希望每一行代码都像在 MATLAB 中一样显示在终端中。有什么方法可以做到这一点吗?对我来说,为我想在终端中看到的每个变量编写 display(...) 很笨重,尤其是当我想快速检查我的工作时。

例如,假设我有以下代码:

a = [1; 0; 0]
b = [0; 1; 0]
c = [0; 0; 1]
a * transpose(a)
b * transpose(b)
c * transpose(c)
Run Code Online (Sandbox Code Playgroud)

我希望所有六行都自动显示在终端中,而不必编写:

a = [1; 0; 0]
b = [0; 1; 0]
c = [0; 0; 1]
display(a)
display(b)
display(c)
display(a * transpose(a))
display(b * transpose(b))
display(c * transpose(c))
Run Code Online (Sandbox Code Playgroud)

先感谢您。

Prz*_*fel 6

处理这个问题的一种方法是编写自己的宏:

\n
macro displayall(code)\n    for i in eachindex(code.args)\n        typeof(code.args[i]) == LineNumberNode && continue\n        code.args[i] = quote\n            display($(esc(code.args[i])));\n        end\n    end\n    return code\nend\n
Run Code Online (Sandbox Code Playgroud)\n

现在您可以使用它,例如:

\n
julia> @displayall begin\n       a = [1; 0; 0]\n       b = [0; 1; 0]\n       c = [0; 0; 1]\n       a * transpose(a)\n       b * transpose(b)\n       c * transpose(c)\n       end\n3-element Vector{Int64}:\n 1\n 0\n 0\n3-element Vector{Int64}:\n 0\n 1\n 0\n3-element Vector{Int64}:\n 0\n 0\n 1\n3\xc3\x973 Matrix{Int64}:\n 1  0  0\n 0  0  0\n 0  0  0\n3\xc3\x973 Matrix{Int64}:\n 0  0  0\n 0  1  0\n 0  0  0\n3\xc3\x973 Matrix{Int64}:\n 0  0  0\n 0  0  0\n 0  0  1\n
Run Code Online (Sandbox Code Playgroud)\n