किनारे के मामले का बिट, लेकिन कोई विचार क्यों & & = इस तरह से व्यवहार करेगा? मैं 1.9.2 का उपयोग कर रहा हूँ।रूबी और& = एज केस
obj = Object.new
obj.instance_eval {@bar &&= @bar} # => nil, expected
obj.instance_variables # => [], so obj has no @bar instance variable
obj.instance_eval {@bar = @bar && @bar} # ostensibly the same as @bar &&= @bar
obj.instance_variables # => [:@bar] # why would this version initialize @bar?
तुलना के लिए, || = नहीं के बराबर करने के लिए उदाहरण चर initializes, के रूप में मैं उम्मीद थी:
obj = Object.new
obj.instance_eval {@foo ||= @foo}
obj.instance_variables # => [:@foo], where @foo is set to nil
धन्यवाद!
यह पोस्ट प्यारपूर्वक [सिंबलहाउंड] (http://www.symbolhound.com/) के साथ मिला! –