gpt4 book ai didi

conditional-statements - Elixir 中 cond block 中条件内的绑定(bind)表达式?

转载 作者:行者123 更新时间:2023-12-05 09:22:22 27 4
gpt4 key购买 nike

有没有办法在 cond block 的条件中有多个绑定(bind)表达式,类似于:

cond do
a = 1; a * 2 == 2 -> "Yes"
end

?我想如果 Elixir 中有像 Haskell 中那样的“引入”绑定(bind)表达式,那将是可能的:

let a = 1 in a * 2

更新在下面的例子中,我想将 String.replace 表达式绑定(bind)到一个变量以提高可读性(我当然可以在 cond 之外进行,这不是一个出于显而易见的原因的最佳解决方案)。该条件检查 input 是否仅为大写(非字母字符除外)并且来自 exercism.io 挑战:

      String.upcase(String.replace(input, ~r/[^A-Za-z]/, "")) == String.replace(input, ~r/[^A-Za-z]/, "") and String.length(String.replace(input, ~r/[^A-Za-z]/, "")) > 0 -> "Whoa, chill out!"

最佳答案

直接回答第一个问题,答案是肯定的。您的原始代码:

cond do
a = 1; a * 2 == 2 -> "Yes"
end

解析为:

cond do
a = 1
a * 2 == 2 -> "Yes"
end

因为;表示整个表达式的结束。如果您想包含多个表达式,请使用括号:

cond do
(a = 1; a * 2 == 2) -> "Yes"
end

关于conditional-statements - Elixir 中 cond block 中条件内的绑定(bind)表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27337186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com