2

我正在尝试使用 Pluto 笔记本学习Javis.jl 。在做教程时,我尝试将Video对象和Object不同的 Pluto 块分开,如图所示:

md"""
Some md here
"""
begin
    myvideo = Video(500, 500)
    Background(1:70, ground)
end

md"""
Some markdown here. Separate block.
"""

begin
    red_ball = Object(....)
    blue_ball = Object(....)
end

这向我显示了一个错误说

A `Video` must be defined before an `Object`

var"#Object#10"(::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, ::Type{Javis.Object}, ::Symbol, ::Function, ::Luxor.Point)@Object.jl:77
...

myvideo如果我将and 与 andBackground放在同begin...end一块中,red_ball则不会发生此错误blue_ball

检查源代码后,调用Video()会在环境中设置一个全局变量,所以我不清楚这是怎么发生的。

关于可能是什么问题的任何想法?谢谢。

4

1 回答 1

2

我不是 100% 确定,但我认为这可能是因为为每个单元格Pluto创建了一个不同Module的单元格,所以对象可能无法CURRENT_VIDEO从另一个单元格中看到正确的常量。

如果我可以问你,你为什么要使用不同的细胞?

于 2022-01-19T16:45:38.603 回答