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