2017-05-19 49 views
0

我目前完全停留在學校問題上,並認爲我會伸出一些指導。在RUby中使用散列設置屬性

定義一個名爲User的類。它的初始化方法應該以Hash作爲參數。我們將其命名參數配置和參數的默認值設置爲空哈希:

class User 
    def initialize(config = {}) 
    end 
end 

config = {}語法用品初始化一個「默認參數」。如果有人初始化一個沒有配置參數的User實例,那麼方法中的配置變量會自動設置爲我們給它的默認值 - 一個空的哈希值。

在配置參數應被用於設置任何對用戶的以下屬性:nameemailbioage,和sex。如果在Hash參數中未提供屬性,則initialize方法應將其默認值設置爲「n/a」。例如:

class User 
    def initialize(config = {}) 
    @name = config[:name] || "n/a" 
    @email = config[:email] || "n/a" 
    ... 
    end 
end 

設置默認值是Ruby中非常常見的任務。一個基本的方法是使用||賦值運算符,意思是「或」。考慮以下示例:

a = 3 
a = a || 6 
a #=> 3 
b = b || 9 
b #=> 9 

解碼上述條件賦值中的邏輯。

我們還需要訪問初始化方法中設置的實例變量。爲此,我們可以使用attr_accessor方法聲明。 attr_accessor方法還允許我們在一行上聲明多個屬性。例如:

class User 
    attr_accessor :name, :email 

    def initialize(config = {}) 
    @name = config[:name] || "n/a" 
    @email = config[:email] || "n/a" 
    # ... 
    end 
end 

寫完User類和initialize方法來處理所有必需的屬性。

我完全失去了這一點。提前致謝。

+3

只需將所有必需的屬性添加到'attr_accessor'的參數列表中,並將現有模式後面的每個必需屬性添加到'initialize'。或者我錯過了什麼? – spickermann

+1

你到底迷惑了什麼?如何給類添加屬性?你對attr_accessor有困惑嗎?這項任務有哪些其他要求?因爲它看起來已經完成了,所有你需要做的就是將其餘的屬性添加到用戶類中。 –

回答

-1

看起來好像您是直接複製了作業。我不會做的工作適合你,但我會給你的幾行代碼一些提示:

def initialize(config = {}) 

在定義方法這是使用默認的參數值。如果用戶不提供config散列,則默認情況下該方法將使用空散列。

@name = config[:name] || "n/a" 

此聲明使用||進行流量控制。如果設置了config[:name],則將該值分配給@name。否則,它默認爲「不適用」。

attr_accessor :name, :email 

這是一個快捷方式創建getter和setter :name:email。看起來您的任務是添加bio,agesex作爲實例變量,並將其設置爲適當的默認值。