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);
}
用于创建数组?
如果我们不键入构造函数,Julia将自动创建一个构造函数。那么,为什么我们要使用构造函数?
答案 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
是什么。 undef
是UndefInitializer()
的快捷方式。在此示例中,我们需要一个未初始化的数组。这是什么意思?为此,您必须了解未在终端上 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 。