【发布时间】:2016-12-23 04:42:51
【问题描述】:
我一直在 Elixir 中尝试一些简单的键盘 IO,主要是在 IO 模块中。 IO.puts 非常方便,因为它的最基本形式是打印提示并等待输入字符串。
我遇到了一些奇怪的行为; “奇怪”,因为我无法弄清楚到底发生了什么。下面是 iex 会议以及 cmets 和问题:
iex(85)> IO.gets "Your name: "
Your name: polo
"polo\n"
到目前为止一切顺利
iex(86)> IO.gets "Your name: " |> String.trim
Your name:polo
"polo\n"
首先请注意polo 不再像以前那样用空格与提示符隔开。此外,trim 函数不适用,因为我在字符串末尾得到了\n。
现在,如果我输入:
iex(87)> String.trim(IO.gets "Your name: ")
Your name: polo
"polo"
一切似乎都恢复了正常行为:提示中的空格在这里,输入按预期修剪。
最后我记得在一本书(或者是博客?)中读到这两种语法之间存在一些细微差别,所以我尝试了:
iex(88)> IO.gets("Your name: ") |> String.trim
Your name: polo
"polo"
还有宾果游戏!
所以,基本上问题是,IO.gets "Your name: " |> String.trim 和 IO.gets("Your name: ") |> String.trim 之间有什么区别?
【问题讨论】:
标签: elixir