使用procs和符号转换数组

时间:2016-04-29 00:21:36

标签: arrays ruby symbols proc

我正在通过Ruby的Codecademy课程,我在这里https://www.codecademy.com/en/courses/ruby-beginner-en-L3ZCI/1/6?curriculum_id=5059f8619189a5000201fbcb#

将数字数组转换为字符串数组的正确代码(我不明白)发布在下面。

    numbers_array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    strings_array = numbers_array.map(&:to_s)

我一直在浏览论坛和谷歌搜索,在这一点上,我仍然很困惑这个代码中发生了什么。

我对:to_s感到困惑,因为to_s表示转换为字符串而:表示符号。 :to_s将内容转换为符号或字符串吗?

我也被&弄糊涂了。我得到&符号使其后面的块进入proc,但这里是符号的冒号和转换为字符串的方法,而不是跟在&符号后面的块。

我真的很感激任何帮助!

1 个答案:

答案 0 :(得分:2)

语法sudo adduser user www-data #change 'user' to your 是另一种构造块的方法,该块调用与数组中每个项目匹配的符号的方法。在您的情况下,它基本上与写作相同:

&:to_s

这是另一个例子:

strings_array = numbers_array.map { |number| number.to_s }

有关strings_array = numbers_array.map(&:to_f) # Same as strings_array = numbers_array.map { |number| number.to_f } 符号的进一步说明,请查看如何定义接受块作为参数的方法。

&

现在看看我们可以调用这个方法的不同方法,它们都会产生相同的结果。

def map(&block)
  # ....
end