Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 区别于;fun1参数|>;fun2“;及;fun1(arg)|>;fun2“;长生不老药_Elixir - Fatal编程技术网

Elixir 区别于;fun1参数|>;fun2“;及;fun1(arg)|>;fun2“;长生不老药

Elixir 区别于;fun1参数|>;fun2“;及;fun1(arg)|>;fun2“;长生不老药,elixir,Elixir,我一直在试用Elixir中的一些简单键盘IO,主要是IO模块IO.puts非常方便,因为它的最基本形式是打印提示并等待键入字符串 我遇到了一些奇怪的行为;“奇怪”是因为我不知道到底发生了什么。下面是iex课程以及评论和问题: iex(85)> IO.gets "Your name: " Your name: polo "polo\n" 到目前为止还不错 iex(86)> IO.gets "Your name: " |> String.trim Your name:po

我一直在试用Elixir中的一些简单键盘IO,主要是IO模块
IO.puts
非常方便,因为它的最基本形式是打印提示并等待键入字符串

我遇到了一些奇怪的行为;“奇怪”是因为我不知道到底发生了什么。下面是iex课程以及评论和问题:

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解析器中的函数调用,因此:

IO.gets "Your name: " |> String.trim
与以下内容完全相同:

IO.gets("Your name: " |> String.trim)
IO.gets(String.trim("Your name: "))
这与:

IO.gets("Your name: " |> String.trim)
IO.gets(String.trim("Your name: "))
正如您已经了解到的,如果要修剪
IO.gets
的结果,应该执行以下操作:

IO.gets("Your name: ") |> String.trim

|>
的优先级高于Elixir解析器中的函数调用,因此:

IO.gets "Your name: " |> String.trim
与以下内容完全相同:

IO.gets("Your name: " |> String.trim)
IO.gets(String.trim("Your name: "))
这与:

IO.gets("Your name: " |> String.trim)
IO.gets(String.trim("Your name: "))
正如您已经了解到的,如果要修剪
IO.gets
的结果,应该执行以下操作:

IO.gets("Your name: ") |> String.trim

正如您所知,管道操作符在长生不老药中非常常见。 区别

IO.gets "Your name: " |> String.trim 

这是至关重要的


在第一个示例中,您只将
“您的姓名:
”传递给String.trim,在第二个示例中,您将
IO.get(“您的姓名:”)
的结果传递给String.trim。建议在处理管道操作符时使用括号。

正如您所知,管道操作符在长生不老药中非常常见。 区别

IO.gets "Your name: " |> String.trim 

这是至关重要的

在第一个示例中,您只将
“您的姓名:
”传递给String.trim,在第二个示例中,您将
IO.get(“您的姓名:”)
的结果传递给String.trim。建议在处理管道操作员时使用括号