Это просто два !
логических оператора, которые не сидят рядом друг с другом.
Причина использования этой идиомы заключается в том, чтобы убедиться, что вы получаете 1
или 0
. На самом деле он возвращает пустую строку, которая нумеруется до 0. Хотя обычно она используется только в числовом или логическом контексте.
Вы часто будете видеть это в соревнованиях Code Golf , потому что это короче, чем использование троичного оператора ? :
с 1
и 0
($test ? 1 : 0
) .
!! undef == 0
!! 0 == 0
!! 1 == 1
!! $obj == 1
!! 100 == 1
undef ? 1 : 0 == 0
0 ? 1 : 0 == 0
1 ? 1 : 0 == 1
$obj ? 1 : 0 == 1
100 ? 1 : 0 == 1