Julia 朱莉娅:如何使用字体
我假设Julia的Julia 朱莉娅:如何使用字体,julia,Julia,我假设Julia的struct与C中的struct一样。所以我不知道为什么会出现错误: 类型int64没有字段数据 Julia中的函数返回其中的最后一个表达式。在这种情况下,返回的是data=1,即data而不是MyData的新实例。只需在data=1之后添加带有new(data)的行,即可返回MyData的新实例,它将正常工作。通常您希望使用所谓的“外部构造函数”,即在类型本身定义之外定义的同名函数。您还希望将每个字段的类型指定为具体类型,例如本例中的Int: struct MyData
struct
与C中的struct
一样。所以我不知道为什么会出现错误:
类型int64没有字段数据
Julia中的函数返回其中的最后一个表达式。在这种情况下,返回的是
data=1
,即data
而不是MyData
的新实例。只需在data=1
之后添加带有new(data)
的行,即可返回MyData
的新实例,它将正常工作。通常您希望使用所谓的“外部构造函数”,即在类型本身定义之外定义的同名函数。您还希望将每个字段的类型指定为具体类型,例如本例中的Int
:
struct MyData
data
# constructor
function MyData()
data = 1
end
end
myData = MyData()
myData.data #error
这已经自动定义了两个构造函数:
struct MyType
data::Int
end
您可以定义新的外部构造函数,例如,使用默认值:
x = MyType(3)
x.data
您试图定义的构造函数类型称为“内部构造函数”(因为它位于类型定义内部)。当您希望为每个新对象强制执行某些特殊的操作时,可以使用此选项。例如,您可以确保数据必须为正,如果不是,则抛出并出错:
MyType() = MyType(0) # defines a new constructor
x = MyType()
struct MyType2
数据::Int
函数MyType2(x::Int)
如果x
struct MyType2
data::Int
function MyType2(x::Int)
if x <= 0
throw(ArgumentError("x must be positive"))
end
new(x)
end
end
x = MyType2(3)
y = MyType2(-17)