Это ужасно скрытый способ преобразования типов.
!
- NOT . Таким образом, !true
- false
, а !false
- true
. !0
- true
, а !1
- false
.
Итак, вы преобразовываете значение в логическое, затем инвертируете его, а затем снова инвертируете.
// Maximum Obscurity:
val.enabled = !!userId;
// Partial Obscurity:
val.enabled = (userId != 0) ? true : false;
// And finally, much easier to understand:
val.enabled = (userId != 0);