【发布时间】:2011-09-25 01:54:16
【问题描述】:
在我正在阅读的学习 Rails (RailsSpace) 的书中,作者创建了两个函数(如下)将所有大写城市名称(如 LOS ANGELES)转换为 Los Angeles。然而,下面的第一个函数有一些我不明白的地方。
即,“词”从何而来?我知道“word”是一个局部/块变量,在函数完成后消失,但是什么被传递/分配给“word”。换句话说,什么是分裂?
我原以为会有某种参数将数组或哈希传递给这个函数......然后“每个”函数运行在它上面......
def capitalize_each
space = " "
split(space).each{ |word| word.capitalize! }.join(space)
end
# Capitalize each word in place.
def capitalize_each!
replace capitalize_each end
end
【问题讨论】:
-
这不是 Ruby 的惯用用法。如果你想把一个数组变成另一个数组,最好使用
map而不是each,像这样:words.map{|word|word.capitalize}.join(' ')。 (没有尾随的!,capitalize生成一个新字符串而不是修改旧字符串,map将这些新字符串收集到一个新数组中。)