我在想,
有没有(通过某些魔法)可能做到以下事情:
&&
、and
、||
和or
是基础核心不可改变的功能(就像其他语言如php中的那样),还是像&
<=>
这样的对象方法,但是以某种神奇的方式定义?
关于我的思考方式的更多细节:
[] & [10]
# => []
[].&([10])
# => []
"aaa".& 10
# NoMethodError: undefined method `&' for "aaa":String
注意:它说未定义的方法
...当然你可以做到。
true.& false
# => false
但是你不能做到以下几点:
true.&& false
# SyntaxError:
所以如果有这个可能性
class String
# monkey patch. If you googled this don't use this in real world, use ruby mixins insted
def &(right_side)
# do something meaningfull
right_side
end
end
"aaa".& 10
# => 10 # ta-da!
有没有(通过某些魔法)可能做到以下事情:
class String
# monkey patch. If you googled this don't use this in real world, use ruby mixins insted
def &&(right side)
# do something meaningfull
right side
end
end
# => SyntaxError: (irb):13: syntax error, unexpected keyword_end
thx