2016-10-06 1 views
5

Void 형식이 함수에서 반환 될 때 처리하는 가장 좋은 방법은 무엇입니까? http://docs.julialang.org/en/release-0.5/manual/faq/#how-does-null-or-nothingness-work-in-julia의 제안이 작동하지 않습니다.줄리아 처리 void 반환 형식

julia> isempty(Base.source_dir()) 
ERROR: MethodError: no method matching start(::Void) 
Closest candidates are: 
    start(::SimpleVector) at essentials.jl:170 
    start(::Base.MethodList) at reflection.jl:258 
    start(::IntSet) at intset.jl:184 
    ... 
in isempty(::Void) at ./iterator.jl:3 
in isempty(::Void) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:? 

julia> isdefined(Base.source_dir()) 
ERROR: TypeError: isdefined: expected Symbol, got Void 

julia> typeof(Base.source_dir()) == Void 
true 

이 줄리아 0.5에 :

MWE는 (그래서 Base.source_dir() 반환 Void REPL에서 실행해야합니다). 후자의 옵션이 작동하지만 약간 추한 것입니다.

답변

7

Void은 정확히 하나의 인스턴스가있는 유형입니다. 그 하나의 인스턴스는 nothing이라고도하는 Void()입니다. nothing === Void()

다른 값과 마찬가지로 처리 할 수 ​​있습니다.

println과 같은 일련의 함수에 의해 반환됩니다.

nothing - 즉 Void의 인스턴스가 반환되었는지 확인할 수 있습니다. 형태 안정성을 위해서

julia> println()===nothing 
true 

, 으로

방법은 시간의 일부를 시간의 일부를 nothing을 반환하고 뭔가 안된다. 이 경우 대신 Nullable, 을 일반적으로 반환해야합니다.

+0

'==='는 일반적으로 권장됩니다. 이상한 방법으로'=='를 확장 할 수 있습니다. –