2013-07-20 6 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

@ Наполеон № '+' является либо унарным, либо двоичным оператором в Ruby, а не тернарным. Если в 'a. + B, c',' + '- это просто вызов метода, а не оператор, и поэтому может принимать любое количество аргументов. –

Смежные вопросы