Q
红宝石混入在药剂
0
A
回答
1
你不能。 Mixin是一个对象概念,Elixir中没有任何对象。
如果你只是想为功能短名称,你可以使用import
,让您可以参考函数W/O使用完整的模块名称。
http://elixir-lang.org/getting-started/alias-require-and-import.html
另外还有一点,你可以用它来注入来自另一模块代码到当前模块中使用宏。这可能是最接近Ruby Mixin的东西。见
http://elixir-lang.org/getting-started/meta/domain-specific-languages.html
对于如何使用__using__
宏的例子。
此外,还有用于功能多态性行为和协议。
行为是当你想要一个自定义函数在相同的参数,协议是当你想要相同的功能在不同的数据 类型工作。
2
这里是__using__
宏的动作一个例子:如果你使用凤凰
# mixin.ex
defmodule Mixin do
defmacro __using__(_) do
quote do
def hello do
IO.puts "Hello World"
end
end
end
end
defmodule MyModule do
use Mixin
end
Interactive Elixir (1.4.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> c "mixin.ex"
[MyModule, Mixin]
iex(2)> MyModule.hello()
Hello World
:ok
iex(3)>
,你可以在你web/web.ex
文件中添加了高清的报价定义为内要扩展特定组件。例如,我会经常为我的模型添加一个all()函数。
# web/web.ex
def MyApp.Web do
def model do
quote do
use Ecto.Schema
import Ecto
import Ecto.Changeset
import Ecto.Query
def all, do: Repo.all(__MODULE__)
end
end
# ...
end
请注意,我们不会在Elixir中将它们称为mixin。
相关问题
- 1. 红宝石混入物业
- 2. 混淆,当`在红宝石
- 3. 红宝石混入最佳实践
- 4. 混淆红宝石恒
- 5. 红宝石混淆块
- 6. 红宝石,before_action混淆
- 7. 红宝石版本混乱
- 8. 红宝石OOP混乱
- 9. 红宝石散列在红宝石
- 10. 在红宝石
- 11. 在红宝石
- 12. 在红宝石
- 13. 在红宝石
- 14. 在红宝石
- 15. 在红宝石
- 16. :在红宝石
- 17. 在红宝石
- 18. 在红宝石
- 19. 在红宝石
- 20. 在红宝石
- 21. 在红宝石
- 22. 在红宝石
- 23. 在红宝石
- 24. 在药剂
- 25. 药剂
- 26. 混淆安装不同的红宝石宝石
- 27. 混乱与红宝石`Marshal`概念
- 28. 红宝石模块和类混乱
- 29. 如何混为一谈红宝石
- 30. 红宝石搜索树示例混淆
你的问题是什么?我无法理解 – coderVishal
我不知道你问了什么,但也许这会有所帮助 - > http://elixir-lang.org/getting-started/alias-require-and-import.html – JustMichael
@coderVishal,如何创建一个混蛋。 – Johshi