如何在 julia 中实现 self 和 __init__()

How to implement self and __init__() in julia

我想知道在 Julia 中实现 self__inti__() 的正确方法是什么?

例子

class rectangle:
   def __init__(self, length, breadth, height):
      self.length = length
      self.breadth = breadth
      self.height = height
   def get_area(self):
      return self.length * self.breadth
r = rectangle(160, 20, 1000)
print("area is", r.get_area())

我已经在Julia中尝试过了,但是既不符合运行预期也不符合结果。

struct rectangle
    length
    breadth
    height
end

function __init__(rectangle) 
    rectangle.length = length
    rectangle.breadth = breadth
    rectangle.height = height
end
function get_area(rectangle)
    return rectangle.length*rectangle.breadth
end
data_obj = __init__()

r = get_area(data_obj)
end

请提出在 Julia 中实现 python 示例的适当方法。 提前致谢!!

直接从 Python 翻译而来的大胆举措。显然,这样行不通。

但是,以下应该足够了:

struct Rectangle{T}
    length::T
    breadth::T
    height::T
end

area(rectangle) = rectangle.length * rectangle.breadth

r = Rectangle(160, 20, 1000)
println(area(r))

(类型参数不是你要求的,而是推荐的。)

现在,如果您需要做的不仅仅是简单地分配字段,您可以编写一个外部构造函数:


function Rectangle(l, b, h)
    ...
    return Rectangle(l, b, h)
end

但是除非需要一些实际逻辑,否则没有必要这样做。