当函数返回Void
类型时,处理Base.source_dir()
类型的最佳方法是什么? http://docs.julialang.org/en/release-0.5/manual/faq/#how-does-null-or-nothingness-work-in-julia中的建议不起作用。
MWE(必须从REPL运行,以便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
):
MemoryStream ms = new MemoryStream();
Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
panel1.DrawToBitmap(bmp, panel1.Bounds);
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] Pic_arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(Pic_arr, 0, Pic_arr.Length);
ms.Close();
这是Julia 0.5。后一种选择有效,但它有点难看。
答案 0 :(得分:8)
Void
是一个单例 - 只有一个实例的类型。
那个实例Void()
也称为nothing
。
请注意nothing === Void()
您可以像对待任何其他值一样对待它。
它由一系列函数返回,如println
。
您可以检查某些内容是否已返回nothing
- 即Void
类型的实例。
通过
julia> println()===nothing
true
为了类型稳定性,
一个方法不应该在某些时候返回nothing
,而在某些时候也不应该返回。
在这种情况下,它应该返回Nullable
,
一般