Булева функция расширения

Когда я пытаюсь создать функцию расширения, чтобы установить Boolean true или false, как показано ниже.

Boolean.setTrue(){ this = true } Boolean.setFalse(){ this = false } 

Он говорит, что ожидается переменная . Как достичь этого.

Вы не можете изменить значение этого, это нарушит множество предположений, даже если бы вы не смогли изменить значение, поскольку логические переменные неизменяемы.

В более общем плане, есть тонкая грань между упрощением кода и усложнением его, и в этом случае это усложнит его. Я бы согласился с тем, что добавление String.splitByDot() может иметь смысл, но замена идиоматического кода имеет тенденцию просто сделать код более сложным, так как вы начинаете задаваться вопросом, почему код пришлось заменить.

Извините, но это не имеет смысла. Просто используйте myBool=false , это то, что кто-то понимает и не может myBool=false больше. Также Boolean неизменен, и то, что вы пытаетесь, невозможно в любом случае.

Мы должны быть осторожны, чтобы не злоупотреблять расширениями. Это одна из самых больших возможностей, которые предлагает Котлин (и другие), но в некоторых примерах, например, пытается изменить способ передачи мертвого простого Boolean , он становится опасным ИМХО (к счастью, это невозможно).

Причина, по которой вы не можете сделать это, заключается в том, что вы не можете переназначить приемник в функции расширения.

Невозможно изменить значение булева, потому что оно неизменное.