我正在通过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,但这里是符号的冒号和转换为字符串的方法,而不是跟在&
符号后面的块。
我真的很感激任何帮助!
答案 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