Ruby:生成数组

Ruby:生成数组,ruby,refactoring,Ruby,Refactoring,我正在尝试自动化测试。有没有更好的方法来解决这个问题?我正在尝试创建一个数组,它只包含三的倍数,其他什么都不包含 (1...100).each_with_object([]) { |i, a| a << i if i % 3 == 0 }.reject { |i| i % 5 == 0 } (1…100)。每个对象([]){i,a | a为什么不map将数字1到33分别乘以3,然后拒绝5的倍数 (1..33).map { |i| i * 3 }.reject { |i| i % 5

我正在尝试自动化测试。有没有更好的方法来解决这个问题?我正在尝试创建一个数组,它只包含三的倍数,其他什么都不包含

(1...100).each_with_object([]) { |i, a| a << i if i % 3 == 0 }.reject { |i| i % 5 == 0 }

(1…100)。每个对象([]){i,a | a为什么不
map
将数字1到33分别乘以3,然后拒绝5的倍数

(1..33).map { |i| i * 3 }.reject { |i| i % 5 == 0 }

为什么不
map
将数字1到33分别乘以3,然后拒绝5的倍数

(1..33).map { |i| i * 3 }.reject { |i| i % 5 == 0 }

为什么不
map
将数字1到33分别乘以3,然后拒绝5的倍数

(1..33).map { |i| i * 3 }.reject { |i| i % 5 == 0 }

为什么不
map
将数字1到33分别乘以3,然后拒绝5的倍数

(1..33).map { |i| i * 3 }.reject { |i| i % 5 == 0 }
我正在尝试创建一个数组,它只包含三的倍数,其他什么都不包含

使用
数值#步骤
枚举器:

3.step(100, 3).to_a
创建三倍到100倍的所有倍数

您的代码似乎还具有过滤掉五个字符的附加效果。您可以过滤掉它们:

3.step(100, 3).reject { |i| i % 5 == 0 }
或者你可以做一些完全不同的事情:

require 'set'
((1..100).to_set - 3.step(100, 3) - 5.step(100, 5)).to_a
比拒绝方式更易读一点,但可能慢一点

我正在尝试创建一个数组,它只包含三的倍数,其他什么都不包含

使用
数值#步骤
枚举器:

3.step(100, 3).to_a
创建三倍到100倍的所有倍数

您的代码似乎还具有过滤掉五个字符的附加效果。您可以过滤掉它们:

3.step(100, 3).reject { |i| i % 5 == 0 }
或者你可以做一些完全不同的事情:

require 'set'
((1..100).to_set - 3.step(100, 3) - 5.step(100, 5)).to_a
比拒绝方式更易读一点,但可能慢一点

我正在尝试创建一个数组,它只包含三的倍数,其他什么都不包含

使用
数值#步骤
枚举器:

3.step(100, 3).to_a
创建三倍到100倍的所有倍数

您的代码似乎还具有过滤掉五个字符的附加效果。您可以过滤掉它们:

3.step(100, 3).reject { |i| i % 5 == 0 }
或者你可以做一些完全不同的事情:

require 'set'
((1..100).to_set - 3.step(100, 3) - 5.step(100, 5)).to_a
比拒绝方式更易读一点,但可能慢一点

我正在尝试创建一个数组,它只包含三的倍数,其他什么都不包含

使用
数值#步骤
枚举器:

3.step(100, 3).to_a
创建三倍到100倍的所有倍数

您的代码似乎还具有过滤掉五个字符的附加效果。您可以过滤掉它们:

3.step(100, 3).reject { |i| i % 5 == 0 }
或者你可以做一些完全不同的事情:

require 'set'
((1..100).to_set - 3.step(100, 3) - 5.step(100, 5)).to_a

比拒绝方式更易读一点,但可能慢一点。

在ruby中有一百万种迭代方式

(1..100).collect{|i| i if i % 3 == 0 && i % 5 != 0}.compact!
(1..100).select{|i| i if i % 3 == 0 && i % 5 != 0}
这是另一本,读起来很好

(1..100).find_all{|i| i % 3 ==0 && i % 5 !=0}

在ruby中迭代的一百万种方法

(1..100).collect{|i| i if i % 3 == 0 && i % 5 != 0}.compact!
(1..100).select{|i| i if i % 3 == 0 && i % 5 != 0}
这是另一本,读起来很好

(1..100).find_all{|i| i % 3 ==0 && i % 5 !=0}

在ruby中迭代的一百万种方法

(1..100).collect{|i| i if i % 3 == 0 && i % 5 != 0}.compact!
(1..100).select{|i| i if i % 3 == 0 && i % 5 != 0}
这是另一本,读起来很好

(1..100).find_all{|i| i % 3 ==0 && i % 5 !=0}

在ruby中迭代的一百万种方法

(1..100).collect{|i| i if i % 3 == 0 && i % 5 != 0}.compact!
(1..100).select{|i| i if i % 3 == 0 && i % 5 != 0}
这是另一本,读起来很好

(1..100).find_all{|i| i % 3 ==0 && i % 5 !=0}

我完全忘记了map!谢谢你的洞察力。+1用于map并降低了枚举数。你甚至可以做
(1.33)。map{I | I*3除非I*3%5==0}。压缩!
我完全忘记了map!谢谢你的洞察力。+1用于map并降低了枚举数。你甚至可以做
(1.33)。map{| i | i*3,除非i*3%5==0}。紧凑!
我完全忘记了map!感谢您的洞察力。+1用于map并减少枚举数。您甚至可以执行
(1.33)。map{| i | i*3,除非i*3%5==0}.compact!
我完全忘记了map!谢谢你的洞察力。+1用于map并减少枚举数。你甚至可以做
(1.33)。map{I | I*3,除非I*3%5==0}。compact!
我从来没有使用过step,非常酷。你教了我一些新的东西。:-
(1..100)。to
也可以编写成
set.new
。我不知道
to_set
可以用于将可枚举对象(以及,因此,枚举器对象,例如
3.step(100,3)
,因为枚举器包括
s Enumerable)转换为集合,但[它确实如此](http://www.ruby-doc.org/stdlib-2.1.1/libdoc/set/rdoc/Set.html),但我仍然不明白为什么没有可枚举的to#set
。我只找到了to#set。to#set`。我从来没有用过step,非常酷。你教了我一些新东西。:-
(1..100)。to#set
也可以写为
set。new(1..100)
。我不知道,
to set
可以用来转换可枚举对象(因此,枚举器对象,如
3.步骤(100,3)
,因为枚举器包括
s可枚举)到一个集合,但[确实如此](http://www.ruby-doc.org/stdlib-2.1.1/libdoc/set/rdoc/Set.html),但我仍然不明白为什么没有可枚举的to#set
。我只找到了to#set。to#set`。我从来没有用过step,非常酷。你教了我一些新东西。:-
(1..100)。to#set
也可以写为
set。new(1..100)
。我不知道,
to set
可以用来转换可枚举对象(因此,枚举器对象,如
3.步骤(100,3)
,因为枚举器包括
s可枚举)到一个集合,但[确实如此](http://www.ruby-doc.org/stdlib-2.1.1/libdoc/set/rdoc/Set.html),但我仍然不明白为什么没有可枚举的to#set
。我只找到了to#set。to#set`。我从来没有用过step,非常酷。你教了我一些新东西。:-
(1..100)。to#set
也可以写为
set。new(1..100)
。我不知道,
to set
可以用来转换可枚举对象(因此,枚举器对象,如
3.步骤(100,3)
,因为枚举器包括
s可枚举)到一个集合,但[确实如此](http://www.ruby-doc.org/stdlib-2.1.1/libdoc/set/rdoc/Set.html),但我仍然不明白为什么没有
可枚举的#to#u set
。我只找到了
集合。to#u set`。我不太确定你要找的是哪一系列数字,但每个可以被3整除的数字都可以被另一个数字整除。如果
x
平均除以3,得到
y