【发布时间】:2016-04-28 20:18:33
【问题描述】:
我刚刚尝试为仅依赖于单个输入的函数定义多个方法。单个输入是不同类型的,行为应该根据输入类型而改变。
问题在于它不起作用,因为只存储了函数定义的最后一个“版本”。
代码如下:
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(x::bar) = "bar"; f(x::car) = "car"; f(x::dar) = "dar";可能只是一个错字? ;) -
您好,谢谢您的回复。在这种情况下,没有。不是错字。目的是采用诸如 f(::car) 之类的参数,而不是具体对象。
-
我还是不明白。
f(::bar) = "bar"或f(::Type{bar}) = "bar"你想要什么? -
f(::Type{bar}) = "bar" 是吧。
-
知道了。这正是我正在寻找的行为。您可以将其发布为答案吗?
标签: function methods types julia