【发布时间】:2013-01-28 22:19:23
【问题描述】:
我正在阅读Why's Poignant Guide to Ruby,我发现了这个代码示例,其中他向 String 类添加了一个类变量和一个实例方法。这个想法是,给定一个外星人名字的字符串,比如“Paij-Ree”,我们可以运行类似
"Paij-ree".determine_significance # returns "Personal AM"
代码如下:
class String
@@syllables = [
{ 'Paij' => 'Personal',
'Gonk' => 'Business',
'Blon' => 'Slave',
'Stro' => 'Master',
'Wert' => 'Father',
'Onnn' => 'Mother' },
{ 'ree' => 'AM',
'plo' => 'PM' }
]
# a method to determine what a certain
# name of his means
def determine_significance
parts = self.split( '-' )
syllables = @@syllables.dup
signif = parts.collect do |p|
syllables.shift[p]
end
signif.join( ' ' )
end
end
我的问题:在 Array#shift 方法后面有方括号的 collect 块中发生了什么?我只能找到这样使用它的示例:
letters = ['a','b','c']
letters.shift # returns "a"
这是怎么回事?
syllables.shift[p]
【问题讨论】: