繁体   English   中英

朱莉娅类型依赖函数行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM