Немного более читабельно (на мой взгляд):
if ((y == a) && (y == b) && (y == c) && (y == d) ...)
, но я не верю, что для этого есть что-то на базовом языке.
Есливы действительно хотите что-то вроде того, что вы предлагаете, вот для чего нужны функции, что-то вроде:
if (isSetToAll (y, a, b, c, d, ...))
, но вы, возможно, захотите быть осторожными в области производительности.*
Одна вещь может быть полезной для вас, если это делается в цикле, где a/b/c/d/...
инвариантны (другими словами, где меняется только y
).
Проверьте равенство для инвариантов вне цикла:
if ((a == b) && (a == c) && (a == d) ...)
, потому что, если это не так, то y
никогда не может быть равен всем им.Затем внутри цикла просто выполните:
if (y == a)
Тот факт, что вы уже знаете, что все переменные, не являющиеся y
, равны друг другу, означает, что вам нужно проверять только y
на одномиз них.
Но, поскольку я не видел ваш полный код, я не уверен, будет ли он вам полезен.
Я должен упомянуть об этом, хотя и многословнонет ничего на самом деле нечитаемого в вашем исходном коде, особенно если он хорошо отформатирован.Даже чудовище:
if ((y == a) && (y == b) && (y == c) && (y == d) &&
(y == e) && (y == f) && (y == g) && (y == h) &&
(y == i) && (y == j) && (y == k) && (y == l) &&
(y == m) && (y == n) && (y == o) && (y == p) &&
(y == q) && (y == r) && (y == s) && (y == t) &&
(y == u) && (y == v) && (y == w) && (y == x))
{
...
}
доступно для чтения (хотя я не большой поклонник кратких имен переменных).
Конечно, в этот момент вы можете захотеть использоватьмассивы с циклами, а не с сингулярными переменными.