Ruby类方法与每个方法:通过Bloc学习新手
我目前是一名通过Bloc学习的学生,正在努力学习课堂教学方法。我正在复习每种方法的课程。说明的第一部分是: 让我们将每个新技巧与我们一直在练习的一些Ruby类方法与每个方法:通过Bloc学习新手,ruby,methods,Ruby,Methods,我目前是一名通过Bloc学习的学生,正在努力学习课堂教学方法。我正在复习每种方法的课程。说明的第一部分是: 让我们将每个新技巧与我们一直在练习的一些类概念结合起来。创建一个ArrayModifier类。它应该将数组作为其initialize函数的参数,并具有一个实例方法: 感叹号——在数组中循环并返回添加感叹号的每个元素的新数组 到目前为止,我的想法是这样的,但我不知道我做错了什么。我特别不了解初始化以及如何正确使用它 class ArrayModifier attr_accessor
类
概念结合起来。创建一个ArrayModifier
类。它应该将数组作为其initialize
函数的参数,并具有一个实例方法:
——在数组中循环并返回添加感叹号的每个元素的新数组感叹号
class ArrayModifier
attr_accessor :array
def initialize(array)
@array = array
end
def exclaim
@array.each do |i|
puts i + "!"
end
@array
end
end
看看这句话:
循环遍历数组并返回每个元素的新数组,其中添加了感叹号
它不要求您打印数组的每个元素。它要求您返回一个“新”数组,其中所有元素都添加了一个感叹号
class ArrayModifier
attr_accessor :array
def initialize(array)
@array = array
end
def exclaim
new_array = []
@array.each do |i|
new_array << i.to_s + "!"
end
new_array
end
end
您使用的初始化是正确的。它所要做的就是捕获并保存发送进来的数组。如果你想变得花哨,你可以写信
def initialize( arr )
raise ArgumentError unless arr.is_a?(Array)
@array = arr
end
毕竟,如果我们没有传入一个实际的数组,那么所有即将到来的事情都将失败。当您进入更高级的编程时,您将看到这种模式
但是put
不会“返回”东西,只会“打印”出来,让实际返回值@array
与以前一样
您正在学习每个,但是当您阅读关于该方法的文档时,您会发现它有类似的“表亲”。我认为在这种情况下,您希望使用映射
:
def exclaim
@array.map do |i|
"#{i}!"
end
end
这将获取数组中的每个元素,将其插入到一个字符串中,该字符串的后缀带有字符“!”是零安全的,这使它成为简洁性的最佳实践。由于此数组修改是该方法中的唯一表达式,因此它是该方法的return
结果
irb
调试器将把.equirm
的结果打印到屏幕上,但其他Ruby代码将捕获该并将其作为Ruby对象返回
,并能够对其进行进一步操作 “返回”是不明确的。在代码尝试中,放入每个元素,而不是返回它们。很高兴知道这个问题的目的是什么。什么是集团@sawa我想我认为你得到了反对票和旗帜,因为这是一个非常简单的问题。它甚至缺乏对语言的一些最基本基础的证明。然而,仔细投票后,我认为你应该回答你所得到的答案,并考虑一下你是如何独立完成这项研究的。
def exclaim
@array.map do |i|
"#{i}!"
end
end