반응형
Elixir에서 기능을 나열 할 모듈을 얻을 수있는 방법이 있습니까?
루비에서 메소드를 나열하기 위해 어떤 객체 (또는 클래스)를 얻을 수있는 것과 같은 방식으로, 모듈에 속한 모든 함수를 나열하는 Elixir 함수가 있습니까? (적어도 원격으로) String.functions
( String
다른 모듈 이름으로 대체 될 수있는 곳 )?
Elixir의 각 모듈 __info__
은 해당 모듈에 대한 정보를 얻기 위해 호출 할 수 있는 함수를 정의합니다 .
Elixir Docs, 1.6.6 예 에 따르면 :functions
모듈에 포함 된 함수 목록을 가져 오기 위해 전달할 수 있습니다.
Map.__info__(:functions)
[delete: 2, drop: 2, equal?: 2, fetch: 2, fetch!: 2, from_struct: 1, get: 2,
get: 3, has_key?: 2, keys: 1, merge: 2, merge: 3, new: 0, pop: 2, pop: 3,
put: 3, put_new: 3, size: 1, split: 2, take: 2, to_list: 1, update: 4,
update!: 3, values: 1]
Elixir는 Erlang이기도하므로이를 수행하는 Erlang 방식도 있습니다.
모든 Elixir 및 Erlang 모듈에는 module_info
컴파일 시간에 정의 된 함수가 있습니다. 이 함수에는 두 가지 요소가 있습니다. 예를 들면 :
iex(1)> Atom.module_info
[module: Atom,
exports: [__info__: 1, to_string: 1, to_char_list: 1, module_info: 0,
module_info: 1], attributes: [vsn: [66271031909514292894123295368320335064]],
compile: [options: [:debug_info], version: '6.0.1',
time: {2015, 9, 29, 2, 34, 37},
source: '/private/tmp/elixir20150928-10892-fvin6a/elixir-1.1.1/lib/elixir/lib/atom.ex'],
native: false,
md5: <<49, 219, 86, 35, 141, 153, 70, 174, 245, 100, 68, 5, 62, 231, 60, 216>>]
반환 할 특정 속성을 지정할 수 있습니다.
iex(2)> Atom.module_info(:exports)
[__info__: 1, to_string: 1, to_char_list: 1, module_info: 0, module_info: 1]
Erlang 함수 버전 :
iex(3)> :crypto.module_info(:exports)
[version: 0, stop: 0, supports: 0, info_lib: 0, hash: 2, hash_init: 1,
hash_update: 2, hash_final: 1, hmac: 3, hmac: 4, hmac_init: 2, hmac_update: 2,
hmac_final: 1, hmac_final_n: 2, block_encrypt: 4, block_encrypt: 3,
block_decrypt: 3, next_iv: 2, next_iv: 3, stream_init: 3, stream_init: 2,
stream_encrypt: 2, stream_decrypt: 2, rand_bytes: 1, strong_rand_bytes: 1,
rand_bytes: 3, rand_uniform: 2, rand_seed: 1, mod_pow: 3, verify: 5, sign: 4,
public_encrypt: 4, private_decrypt: 4, private_encrypt: 4, public_decrypt: 4,
exor: 2, generate_key: 2, generate_key: 3, compute_key: 4, md5: 1, md5_init: 0,
md5_update: 2, md5_final: 1, md4: 1, md4_init: 0, md4_update: 2, md4_final: 1,
sha: 1, sha_init: 0, sha_update: 2, ...]
이것은 Elixir와 Erlang 기능을 모두 확장 할 수 있도록 IEx 자동 완성 기능이 사용하는 것입니다.
나는 iex(1)> exports TargetModuleName
. 모듈에 속한 모든 기능과 매크로를 나열합니다. 나는 Map.__info__(:functions)
긴 함수 목록을 자르는 것을 멈추는 방법을 알아 내려고 우연히 발견했습니다 .
반응형
'IT Share you' 카테고리의 다른 글
객체 ID 배열로 몽구스 스키마를 만드는 방법은 무엇입니까? (0) | 2020.11.30 |
---|---|
Windows 작업 스케줄러를 사용하여 PowerShell 스크립트를 자동으로 실행하려면 어떻게해야합니까? (0) | 2020.11.30 |
첫 번째 정규식과 일치하는 문자열 반환 (0) | 2020.11.30 |
distutils : 사용자 정의 매개 변수를 setup.py에 전달하는 방법은 무엇입니까? (0) | 2020.11.30 |
Azure 저장소 위치에 하위 컨테이너를 만드는 방법 (0) | 2020.11.30 |