2017-05-29 226 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的回答