Я играл с Ruby, и я наткнулся на &!
, так что я играл с ним немного:Ruby &! (И взрыва) Оператор
true &! true #=> false
true &! false #=> true
true &! nil #=> true
true &! {:test=>:foo} #=> false
false &! true #=> false
false &! false #=> false
false &! nil #=> false
false &! {:test=>:foo} #=> false
nil &! true #=> false
nil &! false #=> false
nil &! nil #=> false
nil &! {:test=>:foo} #=> false
Выглядит как value && !value
до сих пор, но ...
{:test=>:foo} &! true
дал ошибку
NoMethodError: undefined method `&' for {:test=>:foo}:Hash
from (irb):23:in `block (2 levels) in irb_binding'
from (irb):23:in `each'
from (irb):23:in `block in irb_binding'
from (irb):23:in `each'
from (irb):23
from /usr/local/bin/irb:11:in `<main>'
Таким образом, я предполагаю, что это 2 разных операторов? Если да, что они делают? Я не думаю, что видел их. Безопасно ли использовать для сравнения значений?
PS: Вот сценарий, я использовал, чтобы проверить это:
test.each {|v| test.each{ |v2| print "#{v.inspect} &! #{v2.inspect} #=> " ; p v &! v2 }}
@ penne12 Это все, что вы хотели знать? – sawa
@sawa Я просто очень оценил тот факт, что ответ включал sexp - помог мне понять это лучше - ваш ответ тоже был очень полезен, –