首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从具有属性析构的属性中获取值?

如何从具有属性析构的属性中获取值?
EN

Stack Overflow用户
提问于 2022-06-19 20:32:17
回答 2查看 67关注 0票数 0

使用getproperty(),我可以这样解压我的struct

代码语言:javascript
复制
struct Person
    name::String
    age::Int32
end

amber = Person("Amber",22)
name = getproperty(amber,:name)
println(name) # Output: Amber

当我这样做时,我无法捕捉到结果:

代码语言:javascript
复制
(; name, age) = amber

如何只打印name?我在文件里找不到。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-19 20:32:32

您所做的是将amber的属性分解为nameage,所以直接使用它们:

代码语言:javascript
复制
println(name) # Output: Amber

它与getproperty()方法有两种不同之处:

  • 当您将name传递给getproperty()时,您传递的是一个symbol: println(类型(:名称))#输出:符号
  • 您不需要创建一个不必要的变量就可以得到结果:您已经使用了两次name!name =getproperty(琥珀,:name)

请求上的Github更新了手册,使其包括解构赋值和多个返回值之后的属性破坏。这是很幽默的,因为在阅读了链接文档之后,我决定尝试使用struct而不是iterable来销毁结构的例子,它成功了!

我搜索了一下,发现了这个示例

票数 0
EN

Stack Overflow用户

发布于 2022-06-19 22:16:57

你可以这样做:

代码语言:javascript
复制
julia> (;name)=amber;

julia> name
"Amber"

或者您可以在这里找到using Parameters包:

代码语言:javascript
复制
@unpack name = amber

而且总是有最简单的方法:

代码语言:javascript
复制
julia> amber.name
"Amber"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72680167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档