【问题标题】:What does `julia>` seen in code bracket examples in Julia language mean?在 Julia 语言的代码括号示例中看到的 `julia>` 是什么意思?
【发布时间】:2021-02-01 05:23:21
【问题描述】:

我是 Julia lang 的新手,我在许多文档的代码示例中看到了很多 julia>

一开始,我以为这只是一个 REPL 代码示例,但我在看起来像脚本的代码示例中看到了它们,所以我很困惑。

来自MJLFlux.jl repository的示例:

using MLJ
import RDatasets
iris = RDatasets.dataset("datasets", "iris");
y, X = unpack(iris, ==(:Species), colname -> true, rng=123);
@load NeuralNetworkClassifier

julia> clf = NeuralNetworkClassifier()
NeuralNetworkClassifier(
    builder = Short(
            n_hidden = 0,
            dropout = 0.5,
            σ = NNlib.σ),
    finaliser = NNlib.softmax,
    optimiser = ADAM(0.001, (0.9, 0.999), IdDict{Any,Any}()),
    loss = Flux.crossentropy,
    epochs = 10,
    batch_size = 1,
    lambda = 0.0,
    alpha = 0.0,
    optimiser_changes_trigger_retraining = false) @ 1…60

【问题讨论】:

  • 我认为这只是意味着他们从 repl 复制并粘贴了代码。 Julia 很聪明,可以忽略行首的julia>,这样你就可以复制粘贴了。
  • 嗯,我明白了。但是为什么上面代码的开头也没有julia>?原始代码在什么上下文中运行?
  • 我的猜测是他们想在这些最小示例中显示特定行的一些输出。因此,他们不想输出的行会像在脚本中一样被压缩显示,而那些带有julia> 提示符的行被分开并显示来自 REPL 的输出。
  • 可能有些代码是从文件中复制的,有些是从 REPL 中复制的。当我包含julia> 提示和删除它时,我也倾向于有点不一致。
  • 我认为一个好的做法是将从 REPL 复制的代码块与未复制的代码块分开。复制粘贴到 REPL 的能力很神奇,但它只有在复制的整个段都是这样的情况下才有效 --- 如果你粘贴上面的块,你可能会得到“错误:方法定义中的错误:函数基础。>必须显式导入才能进行扩展”,因为 julia> clf = NeuralNetworkClassifier() 被读取为函数定义 >(julia, clf) = ...

标签: julia


【解决方案1】:

julia> 就是你说的 REPL 提示符。

在示例中包含它的一个原因是命令的输出显示在命令本身的正下方。我认为这就是您的示例代码不一致的原因。为简洁起见,作者可能省略了前几行的提示和输出,但确实想显示最后一行的输出。

另一个原因可能是将作者存储在文件中的代码与在 REPL 中动态运行的代码区分开来。设置问题环境的代码可能会从文件中运行一次,而调用已建立函数的代码可能会从 REPL 中调整和执行多次。

对此没有严格的规定,您可以在很大程度上忽略它,只是要注意提示下方的文本可能是输出而不是执行的代码。 (请注意,一个 REPL 提示可以有多个输入和输出行。)

julia> for i in 1:5
           println(i)
       end
1
2
3
4
5

【讨论】:

  • 哦,所以我猜它是故意混合的?我想我只需要习惯它。很高兴有确认的想法。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-29
  • 2020-07-03
  • 1970-01-01
相关资源
最近更新 更多