Julia:为类型实现标准数学运算

时间:2017-11-21 20:26:49

标签: julia

有没有办法在julia

中为用户创建的类型实现基本算术

例如:

type Foo
    bar::Float32
    foo::Int32
end
a = Foo(3.23,23)
b = Foo(4.56,54)
c = a+b

如果可能,我该如何做到这一点? 提前致谢

1 个答案:

答案 0 :(得分:10)

您需要显式导入Base函数,以便为它们添加自己类型的方法。我不确定这是否是最佳方式,但以下内容可让您将两个Foos一起添加。

type Foo
bar::Float32
foo::Int32
end

import Base: +
+(a::T, b::T) where {T<:Foo} = Foo(a.bar+b.bar, a.foo+b.foo)

a = Foo(3.23,23)
b = Foo(4.56,54)
c = a+b