Ruby on rails 使用本机方法替换详细的代码块(RubyonRails)
我一直在尝试学习Rails中包含的方法,遇到了似乎应该有更好/更干净的方法来完成相同任务的情况,但我不确定如何改进 我最近遇到的一个例子如下所示,其中我有一个作为参数传入的散列数组。如果数组少于5个元素,那么我初始化元素,直到总共有5个Ruby on rails 使用本机方法替换详细的代码块(RubyonRails),ruby-on-rails,ruby,Ruby On Rails,Ruby,我一直在尝试学习Rails中包含的方法,遇到了似乎应该有更好/更干净的方法来完成相同任务的情况,但我不确定如何改进 我最近遇到的一个例子如下所示,其中我有一个作为参数传入的散列数组。如果数组少于5个元素,那么我初始化元素,直到总共有5个 def do_stuff(numbers) raise "Maximum of 5 numbers can be defined in numbers array." if numbers.count > 5 blank_range = (numb
def do_stuff(numbers)
raise "Maximum of 5 numbers can be defined in numbers array." if numbers.count > 5
blank_range = (numbers.count-1)..5
if blank_range.count > 0
blank_range.each do |i|
numbers[i] = {"entry" = " "}
end
end
end
这是我想要的一个非常基本的例子,尽管这是我发现自己使用过几次的模式。有没有一种内置的方法可以做到这一点?我认为方法#fill
是您所需要的。它需要三个参数——一个附加到数组的对象和一个用该对象填充的范围
numbers.fill({ 'entry' => ' ' }, numbers.size...5)
因此,{'entry'=>'}
是您的对象,number.size
是起始位置,5
是结束位置
如果numbers.size
为5,则不填充任何内容
数组类的Ruby文档将是一个很好的起点。在那里,您将找到构造和操作数组的不同方法 例如,要构造包含3个单空格字符串的数组,请执行以下操作:
[" "] * 3 => [" ", " ", " "]
Array.new(3, " ") => [" ", " ", " "]
然后,您可以使用+
连接数组,如Array.new(3,“”)+numbers
数组类包括枚举
,范围
。从其他内容构造数组时,inject
可能很有用
类似于(1..3).注入(数字){|数字,i |数字.unshift(“”)}
或者可能是
3.times{numbers.unshift(“”)}
完美。谢谢你