Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby,如何获取数组元素的特定百分比_Ruby_Arrays - Fatal编程技术网

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结构)