Elixir 长生不老药&x27;s与函数名一起使用
最近我偶然发现了这个代码Elixir 长生不老药&x27;s与函数名一起使用,elixir,phoenix-framework,Elixir,Phoenix Framework,最近我偶然发现了这个代码 defmodule MyAppWeb.PageLive do use MyAppWeb, :live_view 这是Phoenix Live View生成的默认应用程序的一部分(mix phx.new--Live)。 这是我第一次看到使用构造并将函数名作为第二个参数。 我试着在网上搜索一些关于它的文档,但是找不到一个合适的名字 你能帮我理解执行时会发生什么吗 它不使用宏调用\uuuuu,而是调用函数,我不确定是否可以在那里传递一些选项,或者我需要使用“正常”方式(
defmodule MyAppWeb.PageLive do
use MyAppWeb, :live_view
这是Phoenix Live View生成的默认应用程序的一部分(mix phx.new--Live
)。这是我第一次看到
使用
构造并将函数名作为第二个参数。我试着在网上搜索一些关于它的文档,但是找不到一个合适的名字 你能帮我理解执行时会发生什么吗 它不使用宏调用
\uuuuu,而是调用函数,我不确定是否可以在那里传递一些选项,或者我需要使用“正常”方式(使用宏调用\uuuu)。
我尝试过类似于使用MyAppWeb,:live\u view,opts
的方法,但这会提高未定义函数的使用/3
只是一个宏,使用Mod,args
只是使用args(args)
的语法糖
它不使用宏调用\u,而是调用函数[…]
显然是错误的,它使用宏调用了MyAppWeb.\u
如果您打开(也生成的)MyAppWeb
,您会发现有点像
defmacro\uuu在原子(which)做什么的时候使用
应用(_模块,其中,[]))
结束
也就是说,您可以直接调用哪个
,或者修改MyAppWeb.\uuuu使用\uuuu/1
接受参数。实际上MyAppWeb
看起来是这样的:defmodule MyAppWeb do。。。def live_view do quote do。。。结束。。。结束
哦,该死的。。。我没有滚动到结尾,如果<代码>μsUsIGuangs/1 未定义在<代码> MOD,<代码>使用MOD不编译:),也考虑仔细阅读。use宏在概念上按require、import和alias进行分组,本页对每个宏进行了详细解释。