给定复合类型的Julia对象,如何确定其字段?
如果您正在REPL中工作,我知道一个解决方案:首先,您通过调用typeof
来确定对象的类型,然后进入帮助模式(?
),然后查找类型。有没有更多的编程方式来实现同一目标?
最佳答案
适用于v0.7 +
使用fieldnames(x)
,其中x
是DataType
。例如,使用fieldnames(Date)
而不是fieldnames(today())
,否则使用fieldnames(typeof(today()))
。
这将返回Vector{Symbol}
,依次列出字段名称。
如果字段名称是myfield
,则使用getfield(x, :myfield)
或快捷方式语法x.myfield
来检索该字段中的值。
另一个有用的相关功能是dump(x)
。
v0.7之前的版本
使用fieldnames(x)
,其中x
是您感兴趣的复合类型的实例,或者是DataType
。也就是说,fieldnames(today())
和fieldnames(Date)
是同等有效的,并且具有相同的输出。