在自然语言中,我们会说"如果颜色是红色,蓝色或黄色,某些颜色是主要颜色."
在我看过的每种编程语言中,都转化为:
isPrimaryColor = someColor == "Red" or someColor == "Blue" or someColor == "Yellow"
Run Code Online (Sandbox Code Playgroud)
为什么没有更接近匹配英语句子的语法.毕竟,如果颜色为红色,或者颜色为蓝色,或者颜色为黄色,则不会说"某些颜色是原色."
我只是isPrimaryColor = someColor == ("Red" or "Blue" or "Yellow")因为而不是红色和黄色它们可能是布尔语句,在这种情况下布尔逻辑适用,但是如下所示:
isPrimaryColor = someColor ( == "Red" or == "Blue" or == "Yellow")
Run Code Online (Sandbox Code Playgroud)
作为一个额外的奖励,语法将允许更多的灵活性,说你想看一个数字是1到100或1000和2000,你可以说:
someNumber ((>= 1 and <=100) or (>=1000 and <=2000))
Run Code Online (Sandbox Code Playgroud)
编辑:
非常有趣的答案,并指出我应该学习更多的语言.在阅读完答案之后,我同意,对于严格的相等比较,类似于集合成员资格的东西是表达同一事物的清晰简洁的方式(对于具有简明内联列表或集合和测试成员资格的语言支持的语言)
出现的一个问题是,如果要比较的值是昂贵计算的结果,则需要(好的,应该)创建临时变量.另一个问题是可能需要检查不同的评估,例如"一些昂贵的计算结果应该是素数并且在200到300之间"
更多功能语言也涵盖了这些场景(虽然取决于语言可能不是更简洁),或者实际上任何可以将函数作为参数的语言.例如,前面的例子可能是
MeetsRequirements(GetCalculatedValue(), f(x):x > 200, f(x):x < 300, IsPrime)
Run Code Online (Sandbox Code Playgroud)