2017-05-29 177 views
-4

我學習RubyonRails,我從PHP紅寶石獲取價值

的背景來我有一個看起來像這樣

TYPES = [ 
    'Casual' => 'casual', 
    'Full-Time' => 'full_time', 
    'Part-Time' => 'part_time', 
] 

數組我想指數Casual的價值這是我在做什麼來得到它

work_type = TYPES.first['Casual'] 

雖然它運行完美,我能夠得到的價值,但我想知道這是否是做了正確的方式,如果I S HOULD是使用map

+0

你不能有一個數組,看起來像。這是無效的。 – sawa

+0

@SergioTulentsev你說得對。 – sawa

+0

@SergioTulentsev OP的描述正確的Hash文字在PHP中?如果是這樣,應該寫入文字是在PHP中。否則,背景並不重要。 – sawa

回答

3

不,這是不正確的做法,並沒有,你不應該正在使用地圖。相反,你應該忘記PHP稱之爲「關聯數組」的那種可怕的憎惡。

Ruby有適當的詞典/包含HashMap,你要在這裏使用它們:

TYPES = { 
    'Casual' => 'casual', 
    'Full-Time' => 'full_time', 
    'Part-Time' => 'part_time', 
} 

TYPES['Casual'] # => 'casual' 
+0

是的,我第一次嘗試這個,並給我一個TypeError的錯誤:沒有將字符串隱式轉換爲整數 – Saadia

+0

@Saadia:注意不同的括號 –

1

這實際上是Hash

TYPES = [{ 
    'Casual' => 'casual', 
    'Full-Time' => 'full_time', 
    'Part-Time' => 'part_time', 
}] 

Array是的,你可以使用first如果你有內部Array

只有一個哈希但如果你有兩個以上的Hash並且你想收集所有的值Casualmap

work_types = TYPES.map { |type| type['Casual'] } 
#=> ["casual", "something else"] 

編輯

如果你有一個單一的哈希那麼我會建議你使用@sergio的回答