Programming languages 具有速记相等逻辑的编程语言,用于将一个变量与多个变量进行比较

Programming languages 具有速记相等逻辑的编程语言,用于将一个变量与多个变量进行比较,programming-languages,equality,Programming Languages,Equality,我很想知道是否有编程语言具有“速记等式结构”(我只是编了一个术语,但不知道如何描述它) 因此,与正常情况不同: 如果(X==1 | | X==2) 一种简写的平等性检查,像这样: 如果(X==1 | | 2) 我知道对这种结构有很多赞成和反对的意见。我可以创建函数来做类似的事情,但我很感兴趣的是,是否有一些语言可以让你开箱即用 编辑 谢谢Michael帮我澄清问题,我喜欢Python的工作方式 我会尽量解释得更好,因为我上面的问题解释得不太好 而不是在集合中检查某些内容,或在后台创建集合 我想

我很想知道是否有编程语言具有“速记等式结构”(我只是编了一个术语,但不知道如何描述它)

因此,与正常情况不同:

如果(X==1 | | X==2)

一种简写的平等性检查,像这样:

如果(X==1 | | 2)

我知道对这种结构有很多赞成和反对的意见。我可以创建函数来做类似的事情,但我很感兴趣的是,是否有一些语言可以让你开箱即用


编辑

谢谢Michael帮我澄清问题,我喜欢Python的工作方式

我会尽量解释得更好,因为我上面的问题解释得不太好

而不是在集合中检查某些内容,或在后台创建集合

我想知道是否有编程语言,当只定义一次左手变量时,它会自动为您创建左手和右手

所以写这篇文章:

如果(X==1 | | 2 | | 3)

实际上会创造

如果(X==1 | | X==2 | | X==3)


我意识到这个伪synatx没有多大用处,创建集合是一个很好的方法。但我想知道它是否存在于任何地方。

我不知道这种语法有什么,但它与测试集合成员关系密切相关,许多语言都将集合成员关系作为语言结构或库包含在内

例如,考虑这一点Python:

x = 1
if x in {1, 2}:
    #do something
这在Python2.7+中是有效的,在Python2.7+中,集合文本有语法。Python的早期版本将集合构造为:

x = 1
if x in set([1, 2]):
    #do something
除了语法上的差异外,上述基于集合的方法的不同之处还在于,所有可能的值都被热切地评估。例如,您不能这样做:

x = 1
if x in {1, 2/0}:
    #do something
除以零会出现错误。

Bourne shell:

case $x in one | 2 | thr33 | f0re) echo less than six;; esac  # spot logic error

谢谢你,迈克尔。您的意思是检查X是在数组中还是在列表中?有没有一种方法可以对抗文字单变量?@Alex Key这些例子能澄清问题吗?谢谢Michael的例子。根据我对python的理解,大括号和set关键字创建了一种类似于数组/列表结构的结构,并查看其中是否有X?虽然这个答案在技术上是正确的,但它省略了使用列表和元组(以及任何其他集合),而
in
关键字可以对其进行操作+1不管怎样。@Walter这并不是关于Python支持什么的答案,而是关于集合与OP所问的类似。特别是在评论中,我可以看到我所说的在Python中必须使用集合;正如你所指出的,还有其他选择,包括滚动你自己的支持成员资格测试的集合。所以测试也需要短路吗?@Michael,是的,想想看,测试会短路。我想我想知道是否有语言具有速记“if”。@AlexKey-条件运算符是速记
if
。事实上,您可以使用它来编写非常神秘(但很漂亮)的if-else条件:@AlexKey-您的集合成员资格语法导致语法不明确。
X==1 | | 2
是按照您的意愿扩展到
X==1 | | X==2
,还是像我预期的那样扩展到
X==true
逻辑or运算符(
| |
)在大多数编程语言中都会这样。嗨@AaditMShah,所以我想知道是否有任何语言可以将构造扩展到X==1 | X==2tanks@tripleee,我不熟悉伯恩的剧本。。。这会从“一个2个thr33个f0re”中创建一个集合吗?把它绕过去?或者它会生成一组相等检查吗?@Alex Key:如果变量
$x
one
2
thr33
f0re
,则条件为true。所有这些都是严格意义上的字符串。我猜在内部,它被转换成一个字符串数组,循环一直运行,直到有匹配项,或者所有项都被比较<代码>案例**中的$1)字符串中有一个点;;esac很有趣,这是从另一个角度回答我的问题。它在背景中创建循环,因此不是经典“=”的简写,而是完成相同的事情。。。一个方便的语法+sql也做了同样的事情:
其中x在(1,2,3)
!:)