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