Ruby,如何获取数组元素的特定百分比
在测试上下文中,我需要获取数组元素的特定百分比 我请求的规格可在本测试中描述:Ruby,如何获取数组元素的特定百分比,ruby,arrays,Ruby,Arrays,在测试上下文中,我需要获取数组元素的特定百分比 我请求的规格可在本测试中描述: def test_percent_elements array = [1,2,3,4,5,6,7,8,9,10] assert_equal([], array.percent_elements(0)) assert_equal([1], array.percent_elements(1)) assert_equal([1], array.percent_elements(10)) assert_
def test_percent_elements
array = [1,2,3,4,5,6,7,8,9,10]
assert_equal([], array.percent_elements(0))
assert_equal([1], array.percent_elements(1))
assert_equal([1], array.percent_elements(10))
assert_equal([1,2], array.percent_elements(11))
assert_equal([1,2,3,4,5], array.percent_elements(50))
assert_equal([1,2,3,4,5,6,7,8,9,10], array.percent_elements(100))
end
用Ruby解决这个问题的最佳方法是什么?我的实际方法是:
class Array
def percent_elements(percent)
total = self.length
elements = ((total * percent) / 100.to_f).ceil
self[0, elements]
end
end
我会写:
class Array
def percent_elements(percent)
take((size * percent / 100.0).ceil)
end
end
这就是你要找的吗?意思是你得到答案了吗?作为评论,我会说:1)不要写明确的
self
s。2) 无需创建total
,因为length
/size
已经存在。3) 100.to_f
->100.0
。4) self[0,元素]
->take(元素)
。5) 这是我的第一个方法,我一直在寻找一个更美的解决方案作为公认的答案。@fguillen是的!那么你的方法应该在你的帖子上,而不是在回答。我喜欢这样的一句俏皮话+1.或采用(尺寸*百分比/100.0)。ceil
应用了一些建议的更改。我更喜欢使用paren(除非编写一些DSL结构)