isless 功能的新调度不起作用
New dispatch for isless function does not work
我需要能够比较名为 Hijri
的结构的实例,因此我为 isless()
函数定义了一个新方法,如下所示:
function isless(a::Hijri, b::Hijri)
tuple_a = datetuple(a)
tuple_b = datetuple(b)
return tuple_a < tuple_b
end
datetuple()
returns Hijri
结构的值作为元组。
这很好用:
@show isless(a, b)
不过,这个
@show a < b
抛出错误:
ERROR: LoadError: MethodError: no method matching isless(::Main.HijriConverter.Hijri, ::Main.HijriConverter.Hijri)
Closest candidates are:
isless(::Any, ::Missing) at ~/Downloads/julia-1.7.0/share/julia/base/missing.jl:88
isless(::Missing, ::Any) at ~/Downloads/julia-1.7.0/share/julia/base/missing.jl:87
Stacktrace:
[1] <(x::Main.HijriConverter.Hijri, y::Main.HijriConverter.Hijri)
@ Base ./operators.jl:352
[2] top-level scope
@ show.jl:1047
in expression starting at /home/jafar_isbarov/Documents/projects/hijri/HijriConverter.jl/src/HijriConverter.jl:1
可能是什么原因?
我不得不从 Base
导入 isless
:
import Base: isless
或在我的函数定义中使用 Base.isless
(而不是 isless
)。
function Base.isless(...)
end
这个问题最初是在 Julia Discourse.
上回答的
我需要能够比较名为 Hijri
的结构的实例,因此我为 isless()
函数定义了一个新方法,如下所示:
function isless(a::Hijri, b::Hijri)
tuple_a = datetuple(a)
tuple_b = datetuple(b)
return tuple_a < tuple_b
end
datetuple()
returns Hijri
结构的值作为元组。
这很好用:
@show isless(a, b)
不过,这个
@show a < b
抛出错误:
ERROR: LoadError: MethodError: no method matching isless(::Main.HijriConverter.Hijri, ::Main.HijriConverter.Hijri)
Closest candidates are:
isless(::Any, ::Missing) at ~/Downloads/julia-1.7.0/share/julia/base/missing.jl:88
isless(::Missing, ::Any) at ~/Downloads/julia-1.7.0/share/julia/base/missing.jl:87
Stacktrace:
[1] <(x::Main.HijriConverter.Hijri, y::Main.HijriConverter.Hijri)
@ Base ./operators.jl:352
[2] top-level scope
@ show.jl:1047
in expression starting at /home/jafar_isbarov/Documents/projects/hijri/HijriConverter.jl/src/HijriConverter.jl:1
可能是什么原因?
我不得不从 Base
导入 isless
:
import Base: isless
或在我的函数定义中使用 Base.isless
(而不是 isless
)。
function Base.isless(...)
end
这个问题最初是在 Julia Discourse.
上回答的