朱莉娅:朱莉娅数组中的undef是什么

时间:2019-10-17 10:36:53

标签: julia

  1. 这是数组的构造函数:

for (int i = 1 ; i < trList.size() ; i++) { tdList = trList.get(i).findElements(By.tagName("td")); cell = tdList.get(index); columnCells.add(cell); }

我是Julia的新手,并且没有良好的编程背景。用这种语法,为什么for (WebElement tr : trList.subList(1, trList.size())) { tdList = tr.findElements(By.tagName("td")); cell = tdList.get(index); columnCells.add(cell); } 用于创建数组?

  1. Julia中的构造函数是什么,在什么情况下我们要使用构造函数?

如果我们不键入构造函数,Julia将自动创建一个构造函数。那么,为什么我们要使用构造函数?

1 个答案:

答案 0 :(得分:6)

首先,您想了解什么是构造函数: 为此,我建议您使用Julia文档:Constructors in Julia

现在您有了理论,让我们分解一下这个表达式:

a = Array{Int}(undef, (2, 2)) 

该表达式的意思是“我希望a成为维度(2,2)的Array”。因此,朱莉娅会要求一些内存空间。当我在Julia REPL上写它时:

julia> a = Array{Int}(undef, (2, 2))
2×2 Array{Int64,2}:
 0  0
 0  0

现在Array{T}(undef, dims)是它的概括。 “构造具有特定数量的维度T的特定类型dims的数组”

到目前为止,我还没有解释undef是什么。 undefUndefInitializer()的快捷方式。在此示例中,我们需要一个未初始化的数组。这是什么意思?为此,您必须了解未在终端上 ex nihilo 创建变量。它们在计算机内存中占据特定位置。有时,同一内存空间被另一个变量占用。因此,我的新变量可以占用的空间可能不会为空:

julia> a = Array{Float64}(undef, (2, 2))
2×2 Array{Float64,2}:
 6.94339e-310  6.94339e-310
 6.94339e-310  0.0  

在这里,我从未要求这些值存在。我可以删除它以使用一个干净的变量。但这将意味着删除每个单元格的值,并且计算机要替换每个值而不是声明“这里是新变量”要昂贵得多。

因此,基本上,undef和未初始化的数组用于性能目的。如果要对数组进行良好的初始化,则可以使用 fill