Я не понимаю, синтаксис этих:Что означают `|` и `&`?
@myVar = @myVar | 2
if @myVar & 3 == 3
Почему они отличаются от:
@myVar = 2
if @myVar == 3
Я не понимаю, синтаксис этих:Что означают `|` и `&`?
@myVar = @myVar | 2
if @myVar & 3 == 3
Почему они отличаются от:
@myVar = 2
if @myVar == 3
@myVar = @myVar | 2 //bitwise or operator
если MYVAR первоначально 0, это будет делать 0 | 2
который равен 2.
if @myVar & 3 == 3 // bitwise AND, and boolean compare
будет делать myVar & 3 и будет проверять, если результат равен 3
@myVar = 2
if @myVar == 3
Это суммарно разные, не операторы (OTER, чем = 2) не aplied. Таким образом, результат будет всегда одинаковым. Он всегда присваивает 2
myVar и проверяет, равен ли он 3
. Вы можете так же написали if 2 == 3
Я новичок в Ruby, и я не понимаю, синтаксис этих:
@myVar = @myVar | 2 if @myVar & 3 == 3
Есть несколько синтаксических элементов в первом линия:
foo = bar
является назначение.@foo
является переменной экземпляра.foo | bar
является бинарным оператором инфикса и как (почти все) бинарных операторы инфиксного (за исключением ||
, &&
, and
и or
), это синтаксический сахар для foo.|(bar)
, т.е. посылая сообщение |
к объект, полученный путем оценки foo
, передающего объект, полученный путем оценки bar
в качестве единственного аргумента.2
является целым числом.Вторая строка просто синтаксически недействительна.
почему отличаются от:
@myVar = 2 if @myVar == 3
Первая строка снова состоит из переменной экземпляра, присваивания, и целое число буквального, вторая линия снова синтаксически неверно.
Это побитовые операторы, а не булевы операторы. – eugen