Elixir 使用变量结构
我正试着写《干灵丹妙药》,戴夫·托马斯的书还在后边呢 下面是Phoenix控制器的一部分,它是为Elixir 使用变量结构,elixir,Elixir,我正试着写《干灵丹妙药》,戴夫·托马斯的书还在后边呢 下面是Phoenix控制器的一部分,它是为卡自动生成的。实际上,我有各种各样的产品,它们的性能与卡完全相同,因此我想概括一下。下面是我的一项工作,但它没有编译,错误在**{}** 我很确定我犯了一个根本性的错误,因为我对这门语言(但不是函数式编程)还不熟悉 如果您可以帮助我,请注意,我还需要将card\u path转换为变量,但我认为这将与estimate\u path product类似 我也尝试过,但也没有成功 (Struct, pa
卡自动生成的。实际上,我有各种各样的产品,它们的性能与卡
完全相同,因此我想概括一下。下面是我的一项工作,但它没有编译,错误在**{}**
我很确定我犯了一个根本性的错误,因为我对这门语言(但不是函数式编程)还不熟悉
如果您可以帮助我,请注意,我还需要将card\u path
转换为变量,但我认为这将与estimate\u path product
类似
我也尝试过,但也没有成功
(Struct, path) =
case product do
"cards" -> (Card, card_path)
_ -> (Card, card_path)
end
如果要创建空结构(使用默认值),可以在模块上调用自动生成的\uuuuuuuuu结构/0
函数
改变
changeset = map[product].changeset(%map[product]**{}**, card_params)
到
要在变量中存储卡路径
函数,至少有2个选项:
使用path=&card\u path/3
存储对函数的引用,然后将其称为path。(conn,:show,card)
将其存储为一个原子,如path=:card\u path
并使用apply/3
将其命名为:apply(YourApp.Router.Helpers,path,[conn,:show,card])
谢谢第一点起作用了,我相信你对后者的看法也是正确的。为此,我使用的是Phoenix,它有resources”/estimates/:product“,EstimateController,除了:[:new,:edit]
,所以我想知道是否也有办法玩estimate\u path
,这是惯用的吗?我这样问,因为现在我看到我只能使用map
如果它在create
中,而我需要它用于其他功能,您应该使用模块属性来存储映射。在模块中使用@map%{…}
定义它,然后在函数中使用@map
访问它。第一个问题是,您可以创建一个类似@map%{“cards”=>%{module:Card,path::Card_path},…}
的映射,然后使用:module
中的值作为\uu结构
,和:带有应用的路径
。
changeset = map[product].changeset(%map[product]**{}**, card_params)
changeset = map[product].changeset(map[product].__struct__, card_params)