В естественных языках мы бы сказали, что «какой-то цвет является основным цветом, если цвет красный, синий или желтый».
На каждом языке программирования, который я видел, это выглядит примерно так:
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)