1
내가 가진 모듈엘랙서에서 모든 모듈의 임포트되고 정의 된 기능을 어떻게 볼 수 있습니까?
defmodule There do
import Othermodule, only: [a: 1]
def b do
end
end
어떻게 기능 a
& b
의 목록을 얻을 수 있을까?
내가 가진 모듈엘랙서에서 모든 모듈의 임포트되고 정의 된 기능을 어떻게 볼 수 있습니까?
defmodule There do
import Othermodule, only: [a: 1]
def b do
end
end
어떻게 기능 a
& b
의 목록을 얻을 수 있을까?
당신은 Dogbert 언급 Module.__info__(:functions)
으로 __ENV__
macro 조합을 사용할 수 있습니다
my_functions = __MODULE__.__info__(:functions)
imported_functions = __ENV__.functions
|> Enum.filter(fn {module, _functions} -> module != Kernel end)
|> Enum.map(&elem(&1, 1))
|> List.flatten
(my_functions ++ imported_functions)
|> Enum.map(&elem(&1, 0))
|> inspect
|> IO.puts
당신이 Enum.map
마지막을 제거 할 경우 {function_name, function_arity}
의 키워드 목록을 얻을 것이다.
또한 :'Enum.filter'는'Enum.map'과'Enum.filter_map'을 조합 할 수 있습니다. – nietaki
'There .__ info __ (: functions)'을 사용하여 정의 된 함수를 얻을 수 있지만 가져온 함수를 가져올 방법이 없다고 생각합니다. 왜 이것을 필요로합니까? 어쩌면 당신이 원하는 것을 성취 할 수있는 또 다른 방법이있을 것입니다. – Dogbert
'There .__ info __ (: functions)'은 내가 인터넷에서 발견 한 유일한 정보입니다. 다른 질문을하자. – asiniy