Julia 朱莉娅:朱莉娅的数组中的未定义是什么 这是数组的构造函数:
Julia 朱莉娅:朱莉娅的数组中的未定义是什么 这是数组的构造函数:,julia,Julia,数组{T}(未定义,dims) 我是朱莉娅的新手,在编程方面没有很好的背景。在这种语法中,为什么要使用unde来创建数组 Julia中的构造函数是什么,我们在什么情况下使用构造函数 如果我们不键入构造函数,Julia将自动创建一个构造函数。那么,我们为什么使用构造函数呢?首先,您想了解什么是构造函数: 为此,我建议您选择Julia doc: 既然你有了理论,让我们把这个表达式拆开: a = Array{Int}(undef, (2, 2)) 这个表达式的意思是“我希望a成为维度(2,2)的数
数组{T}(未定义,dims)
我是朱莉娅的新手,在编程方面没有很好的背景。在这种语法中,为什么要使用unde
来创建数组
如果我们不键入构造函数,Julia将自动创建一个构造函数。那么,我们为什么使用构造函数呢?首先,您想了解什么是构造函数: 为此,我建议您选择Julia doc: 既然你有了理论,让我们把这个表达式拆开:
a = Array{Int}(undef, (2, 2))
这个表达式的意思是“我希望a
成为维度(2,2)的数组”。所以Julia会要求一些内存空间。当我写在Julia REPL上时:
julia> a = Array{Int}(undef, (2, 2))
2×2 Array{Int64,2}:
0 0
0 0
现在,Array{T}(unde,dims)
是它的推广。“使用特定数量的维度构建特定类型的数组T
”
到目前为止,我没有解释什么是undef
undef
是UndefInitializer()
的快捷方式。在本例中,我们需要一个未初始化的数组。这是什么意思?为此,您必须了解,变量不是在终端上创建的。它们在计算机内存中占据特定位置。有时,相同的内存空间被另一个变量占用。因此,新变量可以占用的空间可能不是空的:
julia> a = Array{Float64}(undef, (2, 2))
2×2 Array{Float64,2}:
6.94339e-310 6.94339e-310
6.94339e-310 0.0
在这里,我从未要求这些值存在。我可以删除它以使用干净的变量。但这意味着要删除每个单元格的值,计算机替换每个值比声明“这是新变量”要昂贵得多
因此,基本上,undef
和未初始化的数组用于性能目的。如果您想要一个初始化良好的数组,可以使用 非常感谢您的回答。如何初始化我的数组?我可以避免使用除nothing之外的任何东西进行undef吗?正如我在回答的最后一句中所说的,您可以使用fill()