Недостает двойных равных. Таким образом, он выполняет присваивание вместо сравнения на равенство (и помните, возвращаемое значение присваивания является новым значением). В большинстве случаев тот факт, что большинство типов не являются логическими, означает, что результат не является логическим, и поэтому он становится недопустимым для оператора if
, что приводит к ошибке компилятора. Однако, поскольку тип здесь уже является логическим, присваивание приводит к логическому, и проверка безопасности завершается неудачно. Таким образом, b = true
означает, что b
присвоено значение true
, и это значение возвращается и проверяется оператором if
.