gpt4 book ai didi

elixir - 如何将实例方法添加到 Phoenix 的模型中?

转载 作者:行者123 更新时间:2023-12-05 08:33:40 24 4
gpt4 key购买 nike

我有这个模型:

defmodule MyApp.MyModel do
use MyApp.Web, :model
import Ecto.Query

# ....

如何向它添加一个实例方法,它也使用 MyModel 上的其他字段?这不起作用,因为在 html 页面上它抛出一个异常,提示 the key :my_method not found

defmodule MyApp.MyModel do
use MyApp.Web, :model
import Ecto.Query

# doesn't work
def my_method do
# how can I get access to "this" or "self" from here?

"test"
end

最佳答案

由于 Elixir 是一种函数式编程语言,您没有方法,只有函数。您也没有“实例”的概念。有一个self函数,用于识别当前进程的 PID,但不应与您在其他编程语言中可能习惯使用的“this”混淆。

函数总是被调用:

module.function(arg1, arg2)

因此,要在您的示例中调用 my_method 函数(我已将其重命名为 my_func),您可以:

def my_func(my_model) do
my_model.some_attribute
end

这里要注意的是,您必须将结构作为参数传递给函数。然后你会调用它:

foo = %MyModel{}
MyModel.my_func(foo)

http://elixir-lang.org/getting-started/introduction.html是了解 Elixir 工作方式的好方法。

关于elixir - 如何将实例方法添加到 Phoenix 的模型中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37132413/

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