我是Ruby的新手,我一直在寻找编写/重构代码的最佳方法。在这里,我想创建一个方法,该方法创建一个包含两个新数组的数组。第一个,仅包含等于size
参数的单词并按字母顺序排序。第二个单词也与所有其他单词一起排序。我很确定自己可以改进此代码,但我不知道如何做。谢谢你的帮助 !
sentence = ["dog", "data", "ask", "my", "win", "two", "beer", "as"]
def size_splitter(array, size)
first_array = []
second_array = []
final_array = []
array.sort.each do |arr|
if arr.size == size
first_array << arr
else
second_array << arr
end
end
final_array.push(first_array, second_array)
end
puts size_splitter(sentence, 3)
#result : [["ask", "dog", "two", "win"], ["as", "beer", "data", "my"]]
您实际上可以使用Enumerable#partition作为一个班轮来完成
返回两个数组,第一个包含该块求值为true的enum元素,第二个包含其余的数组。
当它说“返回两个数组”时,实际上意味着“返回一个包含两个数组的数组”,这是您需要的结果(请注意,Ruby不支持某个函数的多个返回值,因此返回两个数组的唯一方法是将它们包装在另一个数组中)
sentence.sort.partition { |x| x.length == 3 }
# => [["ask", "dog", "two", "win"], ["as", "beer", "data", "my"]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句