使用getproperty(),我可以这样解压我的struct:
struct Person
name::String
age::Int32
end
amber = Person("Amber",22)
name = getproperty(amber,:name)
println(name) # Output: Amber当我这样做时,我无法捕捉到结果:
(; name, age) = amber如何只打印name?我在文件里找不到。
发布于 2022-06-19 20:32:32
您所做的是将amber的属性分解为name和age,所以直接使用它们:
println(name) # Output: Amber它与getproperty()方法有两种不同之处:
name传递给getproperty()时,您传递的是一个symbol:
println(类型(:名称))#输出:符号是请求上的Github更新了手册,使其包括解构赋值和多个返回值之后的属性破坏。这是很幽默的,因为在阅读了链接文档之后,我决定尝试使用struct而不是iterable来销毁结构的例子,它成功了!
我搜索了一下,发现了这个示例。
发布于 2022-06-19 22:16:57
你可以这样做:
julia> (;name)=amber;
julia> name
"Amber"或者您可以在这里找到using Parameters包:
@unpack name = amber而且总是有最简单的方法:
julia> amber.name
"Amber"https://stackoverflow.com/questions/72680167
复制相似问题