Оператор отрицания (!
) повторяется дважды.
Обратите внимание, что только объекты ruby, имеющие значение false (в логическом выражении), являются nil
и false
.
Следовательно,
some_role
будет истинным, !some_role
ложным и !!some_role
снова истинным. nil
ложным, !nil
- это истина, а !!nil
- это ложь.
Таким образом, это «умный» способ проверить, равна ли роль, возвращаемая из find_by_name
, нулю или нет.(И, следовательно, существует ли роль с таким именем или нет)
Полагаю, мне не нужно говорить вам, что это плохо для удобства чтения.Вы всегда можете проверить, равен ли результат нулю обычными средствами, такими как result.nil?
или result == nil
.