Юлия UndefVarError: подтипы не определены - PullRequest
3 голосов

Непонятно, почему я получаю ERROR: LoadError: UndefVarError: subtypes not defined при выполнении файла .jl, но не при выполнении из REPL.

Например

abstract type Asset end

abstract type Property <: Asset end
abstract type Investment <: Asset end
abstract type Cash <: Asset end
println(subtypes(Asset))

> 3-element Array{Any,1}:
 Cash
 Investment
 Property

... но вставляю тот же код в test.jl,

julia test.jl

> ERROR: LoadError: UndefVarError: subtypes not defined
Stacktrace:
 [1] top-level scope at /.../test.jl:6
 [2] include(::Module, ::String) at ./Base.jl:377
 [3] exec_options(::Base.JLOptions) at ./client.jl:288
 [4] _start() at ./client.jl:484
in expression starting at /.../test.jl:6

Julia версии 1.4.1, выполняется на OSX Catalina (10.15.4)

1 Ответ

4 голосов
/ 26 мая 2020

Перед звонком на subtypes необходимо добавить using InteractiveUtils. По умолчанию он уже загружен при запуске Julia REPL.

Следовательно, ваш файл должен выглядеть так:

shell> more t.jl

using InteractiveUtils
abstract type Asset end

abstract type Property <: Asset end
abstract type Investment <: Asset end
abstract type Cash <: Asset end
println(subtypes(Asset))


shell> julia t.jl
Any[Cash, Investment, Property]
...