Julia和成员变量中的抽象类型

Julia和成员变量中的抽象类型,julia,Julia,我很困惑Julia中的abstract类型是否可以有成员变量(比如C++中的虚拟类)。我肯定医生提到了,但我找不到 我试过这样的方法: abstract AbstractR source end 现在我有一个具体的实施方案: type RR <: AbstractR end function loadSource(reg::RR, x::AbstractString) println("Hello") end generic.jl abstract AbstractR s

我很困惑Julia中的
abstract
类型是否可以有成员变量(比如C++中的虚拟类)。我肯定医生提到了,但我找不到

我试过这样的方法:

abstract AbstractR
  source
end
现在我有一个具体的实施方案:

type RR <: AbstractR
end

function loadSource(reg::RR, x::AbstractString)
  println("Hello")
end
generic.jl

abstract AbstractR
  source
end
type RR <: AbstractR
end

function loadSource(reg::RR, x::AbstractString)
  println("Hello")
end
rr.jl

abstract AbstractR
  source
end
type RR <: AbstractR
end

function loadSource(reg::RR, x::AbstractString)
  println("Hello")
end

输入RR那么您正在加载一个模块?
也许你必须先进口东西。

你能发布全部代码吗?

至少我的理解是,抽象类型是作为“节点”使用的,因此它们本身不可实例化(sp?)。因此,它们允许您将具体类型组织到层次结构中&为方法在任何一组具体类型上调度提供了一种简单的方法

我想医生解释了这一点


(有了这个错误消息也应该有意义?

您使用的是哪种Julia版本?@miguelraz 0.5.1这是正确的。抽象类型没有成员变量。如果OP对类型系统设计背后的推理感兴趣,文档中将对此进行解释。julia(或任何语言)的新用户最常问的问题是,为什么设计师没有用新用户所使用的语言进行设计。答案是这是一种不同的语言。您可能需要以不同的方式考虑代码设计,但这实际上就是为什么您要开始使用新语言的原因。一般来说,在朱利安身上学习做事是最有效的方法。@MichaelK.Borregaard我明白了。我也意识到一个人由于过去的经历而产生的偏见。了解设计背后的思维过程仍然是件好事。回到问题上来,我知道抽象类型不能被实例化(这与其他语言类似),但我遗漏的是它们也不能有成员变量。@Luca cool无意听起来很烦人:-)我认为需要认识到的一件关键事情(也许你已经认识到)是由于分派,抽象类型可以有方法,但不能有变量。因此,用面向对象的说法,抽象类型的目的是继承方法。但是,由于方法位于类型之外,因此类型层次结构中不同节点共享的方法可以进行非常详细的微调。缺少变量继承是非常常见的讨论:,,@MichaelK.Borregaard您不讨厌:-)感谢这些链接。我现在真的开始喜欢朱莉娅了。花整个周末的时间编码,对其背后的理念有一个更好的了解。有些我同意,有些我不同意。但总的来说,这是一次积极的经历。我还成功地移植了一些python代码,并获得了非常好的加速效果。我想我会把我所有的科学计算工作交给朱莉娅。看看情况如何。