You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查List中是否存在指定原子key的键值对及BadBooleanError报错处理

错误原因

  • 取值逻辑错误:options = [symbol: ?|]是Elixir的关键字列表结构,执行args = options[:symbol]后,args已经是:symbol对应的值?|(即字符|的ASCII码整数124)。后续你对整数args执行args[:symbol]取值,返回的仍然是整数124,不是你预期的布尔判断结果。
  • 运算符使用不符合规范:Elixir中and是严格布尔运算符,要求左右两侧的操作数必须是布尔值,如果你要使用「真值/假值」的弱判断逻辑,应该使用&&运算符。

修复方案

如果你要实现「先判断关键字列表中存在:symbol键,再判断对应值不是整数」的逻辑,可以使用以下两种写法:

  1. 严格布尔判断写法(可读性更高,明确检查键是否存在)
options = [symbol: ?|]

if Keyword.has_key?(options, :symbol) and not is_integer(options[:symbol]) do
  # 你的业务逻辑
end
  1. 取值复用写法(需要多次使用:symbol对应值时使用)
options = [symbol: ?|]
symbol_val = options[:symbol]

if symbol_val && not is_integer(symbol_val) do
  # 你的业务逻辑
end

内容的提问来源于stack exchange,提问作者hnhl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:45:03