在Julia中键入数组元素的逻辑是什么

问题描述

我想在Julia中使用一组整数集,但是当我查看每个元素的类型时,它不是一个Set,为什么?

typeof(fill(Set{Int64}[],3)[2])

返回

 Array{Set{Int64},1}

不是

 Set{Int64}

例如,如果我使用原始类型,

 typeof([1,2][1]) # returns Int64

但是

 typeof([Set{Int64}[],Set{Int64}[]][1]) # returns Array{Set{Int64},1}

为什么有一个数组包含Set {Int64}

解决方法

您写了 typeof(fill(Set{Int64}[],3)[2])

Set{Int}[]是另一种编写Vector{Set{Int}}的方式。 通常,当在Int128[1,2,3]

这样的非空数组结构上使用usd时,这种方式更有意义

您可能希望Set{Int}()来获得一套。 选中typeof(fill(Set{Int64}(),3)[2])

但是这将用3个对同一集合的引用填充数组。因此,变异一个将全部变异。 很少你想要的。

可能您真正想要的是: [Set{Int}() for _ in 1:3]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...