В естественных языках мы бы сказали: "какой-то цвет является основным цветом, если цвет красный, синий или желтый".
На каждом языке программирования, который я видел, это переводится как-то вроде:
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))
Edit:
Очень интересные ответы и точка зрения, что я должен выучить больше языков. Прочитав ответы, я согласен с тем, что для строгого сравнения сравнений нечто подобное заданному членству является ясным и сжатым способом выражения одного и того же (для языков, которые поддерживают язык для кратких встроенных списков или наборов и тестирования членства)
Одна из проблем, которые возникли, заключается в том, что если значение для сравнения является результатом дорогостоящего расчета, то временная переменная должна быть (ну, должно быть) создана. Другая проблема заключается в том, что могут быть разные оценки, которые необходимо проверить, например, "результат какого-то дорогостоящего расчета должен быть простым и от 200 до 300"
Эти сценарии также охватываются более функциональными языками (хотя в зависимости от языка может быть не более кратким) или действительно любого языка, который может принимать функцию в качестве параметра. Например, предыдущий пример может быть
MeetsRequirements(GetCalculatedValue(), f(x):x > 200, f(x):x < 300, IsPrime)