我在和朱莉娅合作朱诺。
我不知道朱莉娅是否支持OOP。
例如,有类似于class或struct of c++的东西吗?
如何使用成员(如数据或函数)声明它?
发布于 2015-11-17 21:49:13
当有疑问的时候,读读文件..。
https://docs.julialang.org/en/v1/manual/types/#Composite-Types-1
长话短说:
struct MyType
a::Int64
b::Float64
end
x = MyType(3, 4)
x.a编辑:方法是在类型定义之外定义的。
function double(x::MyType)
x.a *= 2
end方法不存在于类型中,例如,它们在C++或Python中会这样做。这允许Julia的一个关键特性,即多个分派,也可以处理用户定义的类型,这些类型与系统定义的类型完全相同。
发布于 2016-01-21 15:45:08
Julia不是完全面向对象的,因为您不能将方法附加到Julia的对象(“type”)上。不过,这些类型确实与对象非常相似。但是,由于它们没有自己的关联方法,并且没有继承,所以对象本身不执行操作。相反,您有作用于对象的函数。
区别是ball.checkCollision()和checkCollision(球、墙壁)。实际上,这没什么大不了的。您可以通过让一个类型具有另一个类型的字段来实现类似的继承,并且多个分派允许您编写基于您给它们的对象执行不同事情的函数,这些函数几乎类似于object方法。真正的区别在于您将函数和类型保存在文件中的位置。所以你可以用朱莉娅做一种准反对的风格,但它仍然与面向对象的语言有明显的不同。
发布于 2015-11-17 11:54:03
我想在朱莉娅用户组朱莉娅与面向对象编程中提及这段有价值的对话。
对我来说,朱莉娅不像一种传统的面向对象语言,我总是喜欢把朱莉娅看作是一种面向方法的语言,而不是一种面向的面向对象的语言,这是因为如果您试图在Julia中创建一个由封装的数据和功能组成的结构,那么您很快就会陷入麻烦。
https://stackoverflow.com/questions/33755737
复制相似问题