gpt4 book ai didi

F# 元编程 : is it possible to make IF X = 1 OR 2 syntax?

转载 作者:行者123 更新时间:2023-12-01 13:18:41 26 4
gpt4 key购买 nike

我想简化表达式 if(x == 1 || x == 2)
我希望我可以写 if(x == 1 or 2) 但没有相应的语法。
其他可能性是使用 Contains 或 Any 方法,例如:if([1,2].Contains(x)) 但这涉及不必要的调用。

我可以创建一些允许我执行此操作的运算符吗?

我可以用 Nemerle 语言编写宏:

macro @|||(left, right)
match (left)
| <[ $x == $y ]> => <[ $x == $y || $x == $right ]>
| _ => Message.Error("Error"); <[ ]>

然后用法:

if (x == 1 ||| 2) { .. }

我可以在 F# 中以这种方式创建运算符吗?

最佳答案

我同意 Brian 的评论,即构造一个宏来保存三个字符可能不是一个好主意。这只会使程序更难阅读(对于那些不知道您的自定义宏或运算符含义改变的人)。

此外,您很可能可以使用模式匹配等标准 F# 结构以更简洁的方式编写相同的逻辑。例如:

match x with
| 1 | 2 -> printfn "yes"
| _ -> printfn "no"

惯用的解决方案将取决于具体情况,很难从您给出的示例中判断。

关于F# 元编程 : is it possible to make IF X = 1 OR 2 syntax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140007/

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