0
我剛開始學習Elixir,我無法弄清Elixir中的導入工作原理。 當我使用import
將模塊導入另一個模塊時,我無法使用導入的功能模塊調用導入的功能。在elixir中直接調用導入的模塊功能
但是我可以在導入的模塊中調用導入模塊的功能。
defmodule A do
def func do
IO.puts("func called")
end
end
defmodule B do
import A
end
A.funC# o/p: "func called"
B.funC# (UndefinedFunctionError) undefined function: B.func/0
defmodule B do
import A
def func2 do
func
end
end
B.func2 # o/p "func called"
我無法弄清楚,爲什麼不B.func作品,而我是能夠調用func
從func2
。是否有某種我缺少的理論。來自Ruby背景的這種行爲對我來說看起來很奇怪。請任何人都可以幫助我,或者指點我一些很好的資源來閱讀。
感謝您的聯繫和詳細的解答 –
另一個方式來說是導入是詞法,這篇文章可以希望澄清它:http://thepugautomatic.com/2015/11/elixir-scoping/此外,避免「繼承像」的東西,它只鼓勵回調。 :) –