2013-05-18 17 views

Antwort

15

Sie sind unäre + und - Methoden. Sie werden aufgerufen, wenn Sie -object oder +object schreiben. Die Syntax +x wird zum Beispiel durch [email protected] ersetzt.

Bedenken Sie:

class Foo 
    def +(other_foo) 
    puts 'binary +' 
    end 

    def [email protected] 
    puts 'unary +' 
    end 
end 

f = Foo.new 
g = Foo.new 

+ f 
# unary + 

f + g 
# binary + 

f + (+ g) 
# unary + 
# binary + 

Ein anderes, weniger konstruiertes Beispiel:

class Array 
    def [email protected] 
    map(&:[email protected]) 
    end 
end 

- [1, 2, -3] 
# => [-1, -2, 3] 

Sie erwähnt werden here und es gibt einen Artikel darüber, wie sie here zu definieren.

+0

'[] + []' oder '[] + ([])' nach dieser Definition gibt keinen Fehler zurück. – sawa

+2

@sawa: Das kommt daher, dass 'Array' bereits mit einer binären' + 'Methode kommt. – hammar

+0

@sawa Welchen Fehler erwarten Sie? – toro2k