Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 朱莉娅:如何使用字体_Julia - Fatal编程技术网

Julia 朱莉娅:如何使用字体

Julia 朱莉娅:如何使用字体,julia,Julia,我假设Julia的struct与C中的struct一样。所以我不知道为什么会出现错误: 类型int64没有字段数据 Julia中的函数返回其中的最后一个表达式。在这种情况下,返回的是data=1,即data而不是MyData的新实例。只需在data=1之后添加带有new(data)的行,即可返回MyData的新实例,它将正常工作。通常您希望使用所谓的“外部构造函数”,即在类型本身定义之外定义的同名函数。您还希望将每个字段的类型指定为具体类型,例如本例中的Int: struct MyData

我假设Julia的
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)