【问题标题】:Understanding IO.puts with elixir用 Elixir 理解 IO.puts
【发布时间】:2026-01-09 16:30:01
【问题描述】:

我正在尝试使用 Elixir 将理解的结果简单地打印到控制台。这是我要打印的问题和代码:

range = 1..999

multiple_of_3? = fn(n) -> rem(n, 3) == 0 end
multiple_of_5? = fn(n) -> rem(n, 5) == 0 end
import Integer
IO.puts for n <- range, multiple_of_3?.(n), multiple_of_5?.(n), do: n

非常简单。唯一的问题是当我从控制台运行它时,这就是我得到的结果:

<KZix¥´ÃÒáðÿĎĝĬĻŊřŨŷƆƕƤƳǂǑǠǯǾȍȜȫȺɉɘɧɶʅʔʣʲˁː˟ˮ˽̛̪̹͈̌͗ͦ͵΄Γ΢απϏϞ

这不是我要找的,不用说。为什么这不打印实际数字

【问题讨论】:

标签: elixir phoenix-framework


【解决方案1】:

您的意思可能是IO.inspect 而不是IO.putsIO.puts 会将列表解释为字符数据。

iex(15)> IO.puts [15,30,45]  
^O^^-
:ok
iex(14)> IO.puts <<15,30,45>>
^O^^-
:ok

【讨论】:

  • IO.puts 不会解释任何内容,它会接收一个字符列表作为参数并将其吐出。
  • @mudasobwa 谢谢你的评论。这取决于你如何解释“解释”这个词。 :)