我循环访问值列表,并且在列表中有一个案例可以选择应返回的值。代码循环代码如下所示:
value = code &&& key
IO.puts "+++++"
IO.puts "key:#{key},code:#{code},code &&& key:#{value},value == key:#{value == key}"
case value do
  key -> IO.puts "value is true"
  _ -> IO.puts "value is false"
end
Run Code Online (Sandbox Code Playgroud)
这些调用的日志输出为:
+++++
key:1,code:1,code &&& key:1,value == key:true
value is true
+++++
key:2,code:1,code &&& key:0,value == key:false
value is true
+++++
key:4,code:1,code &&& key:0,value == key:false
value is true
+++++
key:8,code:1,code &&& key:0,value == key:false
value is true
+++++
key:16,code:1,code &&& key:0,value == key:false
value is true
Run Code Online (Sandbox Code Playgroud)
我总是得到“值是true”,并且我们可以清楚地看到case值是false。这里会发生什么?
谢谢你的帮助。
我正在尝试使用该Enum.map函数迭代一个字符列表,但它的行为与我期望的行为不同。
第一行不将字符列表视为字符列表,在第二行中我不明白为什么修改匿名函数会这样做。
iex(32)> Enum.map('ABCD',fn(char)->char end)  
'ABCD'
iex(33)> Enum.map('ABCD',fn(char)->[char] end)
['A', 'B', 'C', 'D']
Run Code Online (Sandbox Code Playgroud)
我期待第一行返回['A','B','C','D'],第二行返回[['A'],['B'],['C'],['D']]。为什么不是这种情况?
elixir ×2