gpt4 book ai didi

elixir - 如何访问结构定义的模块内的结构[Elixir]

转载 作者:行者123 更新时间:2023-12-04 16:58:35 27 4
gpt4 key购买 nike

我刚开始学习 Elixir,但有几种 OOP 语言的编程背景,主要是 Ruby。我找到了如何在模块内定义结构的示例:

defmodule Example.User do
defstruct name: "Sean", roles: []
end

另外,我发现我可以在创建结构时设置这个值: steve = %Example.User{name: "Steve", roles: [:admin, :owner]}并且可以通过调用 steve.name 在模块外部访问它

问题是,我如何访问 struct data INSIDE 模块,假设我想访问 姓名 来自 的字段call_my_name 功能:
defmodule Example.User do
defstruct name: ""
def call_my_name do
IO.write(???)
end
end
martin = %Example.User{name: "Martin"}

就 OOP 而言,我只是想写一个 getter。

我该怎么做?什么是好的/默认方法?如果我不能,为什么?

最佳答案

只是在这里堆积,你不需要在你自己的模块中使用完整的命名空间,只要你没有另一个用户模块可以引用。试试这个:

defmodule Example.User do
alias __MODULE__ # <- this is the magic

defstruct [:name]

def my_fun(%User{} = user)
IO.inspect(user)
end
end

感谢 https://dockyard.com/blog/2017/08/15/elixir-tips给小费

关于elixir - 如何访问结构定义的模块内的结构[Elixir],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39854281/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com