首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >朱莉娅: OOP或不OOP

朱莉娅: OOP或不OOP
EN

Stack Overflow用户
提问于 2015-11-17 11:25:27
回答 7查看 37.4K关注 0票数 64

我在和朱莉娅合作朱诺。

我不知道朱莉娅是否支持OOP。

例如,有类似于classstruct of c++的东西吗?

如何使用成员(如数据或函数)声明它?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-11-17 21:49:13

当有疑问的时候,读读文件..。

https://docs.julialang.org/en/v1/manual/types/#Composite-Types-1

长话短说:

代码语言:javascript
复制
struct MyType
    a::Int64
    b::Float64
end

x = MyType(3, 4)

x.a

编辑:方法是在类型定义之外定义的。

代码语言:javascript
复制
function double(x::MyType)
    x.a *= 2
end

方法不存在于类型中,例如,它们在C++或Python中会这样做。这允许Julia的一个关键特性,即多个分派,也可以处理用户定义的类型,这些类型与系统定义的类型完全相同。

票数 63
EN

Stack Overflow用户

发布于 2016-01-21 15:45:08

Julia不是完全面向对象的,因为您不能将方法附加到Julia的对象(“type”)上。不过,这些类型确实与对象非常相似。但是,由于它们没有自己的关联方法,并且没有继承,所以对象本身不执行操作。相反,您有作用于对象的函数。

区别是ball.checkCollision()和checkCollision(球、墙壁)。实际上,这没什么大不了的。您可以通过让一个类型具有另一个类型的字段来实现类似的继承,并且多个分派允许您编写基于您给它们的对象执行不同事情的函数,这些函数几乎类似于object方法。真正的区别在于您将函数和类型保存在文件中的位置。所以你可以用朱莉娅做一种准反对的风格,但它仍然与面向对象的语言有明显的不同。

票数 52
EN

Stack Overflow用户

发布于 2015-11-17 11:54:03

我想在朱莉娅用户组朱莉娅与面向对象编程中提及这段有价值的对话。

对我来说,朱莉娅不像一种传统的面向对象语言,我总是喜欢把朱莉娅看作是一种面向方法的语言,而不是一种面向的面向对象的语言,这是因为如果您试图在Julia中创建一个由封装的数据和功能组成的结构,那么您很快就会陷入麻烦。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33755737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档