2015-12-16 36 views
-6

更正此代碼,以便greet函數返回期望值。ruby​​ def函數代碼不起作用

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'參數名稱不應該有'@'符號,因爲你插入了實例變量,所以你不需要它們。另外,當你的代碼有錯誤時,你應該發佈它。 –

+2

我同意,你應該在提問時添加更多細節。它的措辭使它看起來像是一項家庭作業。 –

+1

歡迎來到Stack Overflow。 「更正此代碼」?讓我們考慮Stack Overflow是什麼:在您給我們提供了適當的所需信息之後,我們會幫助您調試代碼中的問題。閱讀「[問]」和「[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

您需要從問候方法中刪除@符號。參數不能是實例變量。