gpt4 book ai didi

elixir - Elixir 中的 is_module 保护子句

转载 作者:行者123 更新时间:2023-12-04 02:09:39 24 4
gpt4 key购买 nike

我将模块传递给函数并希望使用保护子句(函数设计为具有 :atom 或模块)传递给它。

我如何检查函数中的参数是否为模块(如原子的 is_atom?)

最佳答案

仅使用保护子句是不可能的。我会用 Code.ensure_loaded?/1在函数体中。除了在模块存在与否时返回 true/false 之外,如果它能在代码路径中找到相应的 beam 文件,这也会尝试加载模块:

iex(1)> defmodule A do
...(1)> end
iex(2)> Code.ensure_loaded?(A)
true
iex(3)> Code.ensure_loaded?(B)
false
iex(4)> Code.ensure_loaded?(Map)
true
iex(5)> Code.ensure_loaded?(:maps)
true
# I created `a.beam` using `erlc` in the same folder as `iex` was started
iex(6)> Code.ensure_loaded?(:a)
true

关于elixir - Elixir 中的 is_module 保护子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39858052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com