如何更好地重构此代码?

Aelo-74

我是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

避免反射-如何最好地重构此代码?

如何使此代码更好地工作(组合列表)?

如何在Elixir中更好地构建此代码?

如何重构此jquery代码以计算选中的选项并相应地设置消息,而不必重复相同的代码

重构此代码以更好地利用CSharpFunctionalExtensions库

如何重构此代码以删除重复项?

如何重构/使此代码更具pythonic功能?

如何在Haskell中重构此代码

如何使用 if 语句重构此代码

如何缩小此C#代码或重构此代码

如何更好地编写此C ++程序

如何为面试重构此代码OOP代码?

我怎样才能更好地使用 purrr 在 R 中重构以下代码

如何重构此获取用户当前位置的 JS 代码?

如何重构此代码以搜索 BindingList 的多个属性?

如何使用ramda.js重构此代码?

如何重构此代码片段以提高效率?

如何重构此代码以使嵌套不超过3个“ if”

如何重构此代码以从数组中获取 Mongo 数据?

如何重构此node.js代码,以避免重复

代码重构,如何优雅地覆盖对象值

Neo4j:如何更好地编写此查询?

在 C# 中如何更好地解析此 html 内容?

我将如何更好地编写此reportCandidates的函数?

如何更好地优化此 Kusto 查询以获取我的日志

我们如何改进此代码以获得更好的性能

如何在python中更好地组织你的代码?

如何更好地重新排序我的JavaScript代码?

如何消除 CLIPS 中的 if-then-else 以更好地优化代码