7

如果我的问题很愚蠢,我对朱莉娅很陌生,请原谅我,

例如,我定义了这样的类型:

type Vector2D
    x::Float64
    y::Float64
end

和 2 个对象 w 和 v:

v = Vector2D(3, 4)
w = Vector2D(5, 6)

如果我把它们加起来,它会引发这个错误:MethodError: no method matching +(::Vector2D, ::Vector2D)没关系,但是当我想定义一个对这些对象求和的方法时

+(a::Vector2D, b::Vector2D) = Vector2D(a.x+b.x, a.y+b.y)

它引发了这个错误:

error in method definition: function Base.+ must be explicitly imported to be extended

朱莉娅 0.5 版

4

1 回答 1

9

正如错误消息所说,您必须告诉 Julia 您+要从 Base(标准库)扩展函数:

import Base: +, -

+(a::Vector2D, b::Vector2D) = Vector2D(a.x + b.x, a.y + b.y)
-(a::Vector2D, b::Vector2D) = Vector2D(a.x - b.x, a.y - b.y)
于 2017-03-19T16:41:00.440 回答