2013-07-20 86 views
2

在下面的代碼中,我嘗試更改+運算符行爲。然而,與其他所有可能的方法不同,它似乎並不接受多個參數。這在Ruby中甚至可能嗎?+具有多個參數的運算符

class A 
    def add(a,b) 
    p a 
    p b 
    end 

    def +(a, b) 
    p a 
    p b 
    end 
end 

@a = A.new 
@a + 1, 3 # <<<< crash 
@a.add 1, 3 # <<<< works 

回答

4

您錯過了.運營商。

class A 
    def add(a,b) 
    p a 
    p b 
    end 

    def +(a, b) 
    p a 
    p b 
    end 
end 

@a = A.new 
@a.+ 1, 3 
@a.add 1, 3 
# >> 1 
# >> 3 
# >> 1 
# >> 3 
+1

啊是的,這是有效的。有沒有辦法做到這一點沒有額外的點? – Napoleon

+2

@Napoleon號''+'是Ruby中的一元或二元運算符,而不是三元。而在'a。+ b,c'中,'+'只是一個方法調用,而不是操作符,因此可以接受任意數量的參數。 –