gpt4 book ai didi

ruby - "each"函数在 Ruby(以及 Rails)中如何工作?

转载 作者:太空宇宙 更新时间:2023-11-03 17:05:48 25 4
gpt4 key购买 nike

在我正在阅读的学习 Rails (RailsS​​pace) 的书中,作者创建了两个函数(如下)来将所有大写的城市名称(如 LOS ANGELES)变成洛杉矶。但是,关于下面的第一个功能,我有些事情不明白。

即,“词”从何而来?我知道“word”是一个局部/ block 变量,在函数完成后消失,但是传递给/分配给“word”的是什么。换句话说, split 的是什么?

我原以为会有某种参数将数组或散列传递给这个函数......然后“每个”函数运行它......

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

最佳答案

让我们分解一下。

split(space)

将字符串转换为可能的单词列表。 (实际上,如果字符串连续有两个空格,则列表中将包含一个空字符串。但这对于此目的无关紧要。)我假设这是 String 中的一个实例方法;否则,split 将不会被定义。

.each { |word| word.capitalize! }

.each 获取列表中的每个事物(由 split 返回),并在其上运行以下 block ,将事物作为 arg 传递给该 block 。 |word| 表示此 block 将调用 arg“word”。如此有效,它所做的是将字符串中的每个单词大写(以及每个空白字符串和标点符号,但同样,这并不重要——大写不会改变没有大小写概念的字符)。

.join(space)

将单词粘在一起,重新插入之前用于分隔它们的空格。它返回的字符串也是函数的返回值。

关于ruby - "each"函数在 Ruby(以及 Rails)中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com