2013-03-26 43 views

回答

0

如果您在循環中多次執行hash["name"+"xxx"],那麼將鍵從循環中拉出並將其變爲符號可能會有好處。這只是一個表演的事情。符號在內存中使用單個位置,但每次創建字符串時都會進行計算。

+0

爲什麼downvote? – AGS 2013-03-26 14:38:22

+0

我也想知道 – 2013-03-26 14:39:20

+0

這不是問題的答案。串聯的情況只是OP提出的一個例子,在這個例子中,使用字符串鍵可能(或不可能)有用。指出在這種情況下它沒有用處就是忽略了問題的關鍵。問題是:何時使用字符串鍵有用?這個答案正在討論一個完全不相干的事情。 – sawa 2013-03-26 14:40:01

2

即使鍵級聯可以很容易地轉換:

hash[ ("name" + "xxx").to_sym ] 

簡短的回答是,你使用字符串作爲Ruby的鍵,其中鍵是僅僅是語義上的標籤,使您可以參考在代碼中的值,避免受益。在這種情況下,很明顯符號可以更高效地完成這項工作(正如前面指出的那樣,假設您沒有執行許多轉換來生成標籤)。

當您解析任意數據時,例如XMl或JSON,那麼字符串作爲鍵可能是表達結構的更自然的方式。同樣,從解析器發出的字符串到標籤的轉換時間量可能是一個因素。

0

如果你有一個.yaml文件看起來像這樣:

- thing1: value1 
    thing2: value2 
    thing3: value3 
- thing1: value1 
    thing2: value2 
    thing3: value3 
- thing1: value1 
    thing2: value2 
    thing3: value3 

和你YAML::load_file('filename')加載它,那麼你將需要使用字符串鍵。

但是,如果你的YAML文件看起來像這樣:

- :thing1: value1 
    :thing2: value2 
    :thing3: value3 
- :thing1: value1 
    :thing2: value2 
    :thing3: value3 
- :thing1: value1 
    :thing2: value2 
    :thing3: value3 

然後你可以用符號鍵。這種情況下的符號對於紅寶石側來說是優選的,但是紗線會更清潔。

相關問題