Рассмотрим простую коллекцию с поиском минимума и максимума за одну итерацию:
val v = Vector (2, 1, 3, 5, 4)
val mima = (v(0), v(0))
val mami = (mima /: v) {case ((a, b), c) => if (c<a) (c, b) else if (c>b) (a, c) else (a, b)}
Пока все просто. Если я заменю if / else на троичный оператор (X? Y: Z), это не сработает;Я получаю сообщение об ошибке:
val mami = (mima /: v) {case ((a, b), c) => (c<a) ? (c, b) : (c>b) ? (a, c) : (a, b)}
<console>:1: ';' expected but : found.
в последнем двоеточии. Добавление паренов не помогло:
val mami = (mima /: v) {case ((a, b), c) => (c<a) ? (c, b) : ((c>b) ? (a, c) : (a, b))}
Я совершил глупую ошибку или есть небольшая проблема с вложенным троичным оператором?
Разыскивая эту проблему, она не связана со складками, только:
if (c < 4) "small" else if (c > 8) "big" else "medium"
работает
(c < 4) ? "small" : (c > 8) ? "big" : "medium"
не удается аналогичным образом.