请考虑以下代码:
defmodule T do
def does_not_contain?(s, t) do
s |> not(String.contains?(t))
end
end
Run Code Online (Sandbox Code Playgroud)
这会在编译时出现以下错误:
** (CompileError) iex:3: undefined function not/2
Run Code Online (Sandbox Code Playgroud)
我也试过这样的结构:
defmodule T do
def does_not_contain?(s, t) do
s |> String.contains?(t) |> not
end
end
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
** (SyntaxError) iex:4: unexpected token: end
Run Code Online (Sandbox Code Playgroud)
我可以做这样的工作:
defmodule T do
def does_not_contain?(s, t) do
does_contain = s |> String.contains?(t)
not(does_contain)
end
end
Run Code Online (Sandbox Code Playgroud)
但尝试将整个事情保持在管道中是非常有吸引力的.有没有办法在管道中否定一个布尔值?
Gaz*_*ler 19
如果您使用该函数的完全限定版本,则可以在管道中使用它:
iex(1)> true |> Kernel.!
false
iex(2)> true |> Kernel.not
false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1337 次 |
| 最近记录: |