2016-07-24 80 views
2

有人可以提供一個簡單的例子defdelegate。我找不到任何東西,因此很難理解。如何在靈藥中使用defdelegate?

defmodule Dummy do 
    def hello, do: "hello from dummy" 
end 

我得到undefined function world/0爲以下:

defmodule Other do 
    defdelegate hello, to: Dummy, as: world 
end 

我想委託Other.worldDummy.hello

+0

在https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib /string.ex你可以找到defdelegate split(二進制)到:String.Break –

回答

8

兩件事情:

  1. 你把名字和as:錯誤。 as:應包含目標模塊中函數的名稱,第一個參數應該是當前模塊中要定義的名稱。

  2. as的參數需要是原子。

最後的工作代碼:

defmodule Dummy do 
    def hello, do: "hello from dummy" 
end 

defmodule Other do 
    defdelegate world, to: Dummy, as: :hello 
end 

IO.puts Other.world 

輸出:

hello from dummy