2013-10-16 42 views
0

我見過很多使用deleteHash方法的Ruby類的示例,我不確定使用它的優點是什麼。Ruby:試圖更好地理解哈希的使用#delete

例子:

class Example 
    def initialize(default_params = {}) 
    @foo = default_params.delete(:bar) 
    end 
end 

任何有識之士將是非常有幫助的!謝謝!

+2

他們真的,應該不是。他們正在修改一個他們不應該修改的對象,如果他們正在做你的代碼。如果他們首先是自相矛盾的,那就不同了。 – meagar

+0

這是我看到的代碼示例:https://github.com/amro/gibbon/blob/master/lib/gibbon/api.rb – dennismonsewicz

+0

這是一個表現不佳的圖書館。他想提取幾個密鑰,並將其餘的密鑰傳遞給某些API,但他不恰當地修改正在傳入的哈希值。 – meagar

回答

1

Hash#delete是在下列情況下有效:

def method(options) 
    if options.delete(:condition) 
    # Do something if options[:condition] is true 
    else 
    # Otherwise do something else 
    end 

    # Now options doesn't have the :conditions key-value pair. 
    another_method_that_doesnt_use_the_condition(options) 
end 

我不確定,如果你拉具體的例子應該使用Hash#delete