[英]julia type dependend function behaviour
我只是尝试为仅依赖一个输入的函数dependend定义多个方法。 单个输入为不同类型,并且行为应根据输入类型而变化。
问题在于它不起作用,因为仅存储了函数定义的最后一个“版本”。
这是代码:
abstract foo
type bar <: foo end
type car <: foo end
type dar <: foo end
f(bar) = "bar"
f(car) = "car"
f(dar) = "dar"
methods(f)
> # 1 method for generic function "f":
> f(dar)
我是否遗漏了某些东西,或者是否有可能无法实现基于单个输入的函数依赖的不同方法?
f(bar) = "bar"
等效于f(bar::Any) = "bar"
,这里函数声明语法中的bar
是一个参数,而不是您先前定义的类型。 它们属于不同的范围。
f(car) = "car"
f(dar) = "dar"
这里发生的是f(x::Any)
被覆盖了两次。
正确的方法是定义一个函数,其参数应为类型,因此该参数的类型应为DataType
,在您的特定情况下为Type{bar}
。
f(::Type{bar}) = "bar"
f(::Type{car}) = "car"
f(::Type{dar}) = "dar"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.