На самом деле, я бы ожидал, что это будет if (x) 1 else 0
, а не if (x) 0 else 1
.
Вот почему вы должны писать свои собственные преобразования. Целое число не является логическим значением, и если по какой-то причине вы хотите хранить логические значения в виде целых чисел, вам следует отточить свои собственные стандарты представления истины, а не истины.
Логическое «истина» - это не число, это экземпляр логического типа. Как java.lang.Boolean.TRUE
. Он может храниться внутри как целое число, но это деталь реализации, которая не должна попадать в язык.
Я бы сказал, что if (x) 0 else 1
является предпочтительным методом конвертации. Это просто и быстро.
Вы также можете написать x match {case true => 0; case false => 1}
, если хотите использовать более общий подход сопоставления с образцом.