2015-12-16 2 views
-6

Исправить этот код, чтобы функция greet вернула ожидаемое значение.ruby ​​def function code not working

class Person 

    def initialize(name, other_name) 

    @name = name 

    @other_name = other_name 

    end 



    def greet(@other_name, @name) 

    "Hi #{@other_name}, my name is #{@name}" 

    end 

end 
+3

Какова ожидаемая стоимость? Имена параметров 'greet' должны быть * not * иметь знаки' @ ', и они вам не нужны, так как вы интерполируете переменные экземпляра. Кроме того, когда ваш код имеет ошибку, вы должны отправить его. –

+2

Согласен, вам нужно добавить более подробную информацию, задавая вопрос. Способ, которым он сформулирован, делает его похожим на домашнее задание. –

+1

Добро пожаловать в переполнение стека. «Исправить этот код»? Давайте рассмотрим, что такое переполнение стека: мы помогаем вам отлаживать проблемы с вашим кодом после того, как вы предоставили нам необходимую необходимую информацию. Прочитайте «[ask]» и «[mcve]» и посмотрите, сделали ли вы это. –

ответ

1

переменные экземпляра хранятся в экземпляре класса, вам не нужно передавать их в качестве аргументов:

def greet() 

    "Hi #{@other_name}, my name is #{@name}" 

end 
3

Вы могли бы переписать как:

class Person 
    def initialize(name, other_name) 
    @name = name 
    @other_name = other_name 
    end 

    def greet 
    "Hi #{@other_name}, my name is #{@name}" 
    end 
end 

c = Person.new("Sam", "Ruby") 

2.1.0 :073 > c.greet 
=> "Hi Ruby, my name is Sam" 
1

Вам нужно для удаления знаков @ из метода приветствия. Аргументы не могут быть переменными экземпляра.