ruby - 从另一个数组填充一个数组

标签 ruby arrays populate

我想用每个元素的第一个字母创建一个数组,但我一直只获取整个元素 - 我做错了什么?

def each_group_by_first_letter
  self.each do |x| 
    first_letter = []
    first_letter = x[0, 1].to_s
  end

  x = ["abcd", "efgh", "able"]
  x.each_group_by_first_letter do |letter, words|
    printf("%s: %s\n", letter, words)
  end

最佳答案

您的代码有几个问题。其中:

  • 您创建一个名为 first_letter 的数组, 但随后在下一行用字符串覆盖它而不是将字符串添加到它。 (要将项目添加到数组中,您通常会使用 Array#push Array#<< 。)
  • 你不回first_letter ,这意味着您将隐式返回数组本身(假设这就是 self 是什么——因为这就是 Array#each 返回的)。
  • 当您调用 each_group_by_first_letter你传递给它一个 block ( do ... )但是你的方法不接受或使用一个 block 。你可能想调用each关于 each_group_by_first_letter 的结果.

无论如何,Array 类已经拥有您需要的工具——无需为此定义新方法。

x = [ 'abcd', 'efgh', 'able' ]

x.map {|word| word[0] }
# => [ 'a', 'e', 'a' ]

关于ruby - 从另一个数组填充一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8131669/

相关文章:

ruby - 如何使用 Go 共享库在 Ruby 中传递字符串数组并获取字符串数组?

ruby - Thread.join 阻塞主线程

对象数组中的javascript排序元素

java - 使用循环创建待定数量的对象

c++ - 比较整数 vector 的 2 个 vector 的更好(更快)算法?

jquery - 下拉填充ajax

ruby-on-rails - Rails - 系统找不到指定的路径

ruby - rvm Ruby 安装期间运行 '__rvm_make -j 1' 错误 |打开SSL错误

android-sqlite - 通过从断言复制数据库文件在 Room 中使用预填充的数据库

visual-studio-2010 - 使用 Visual Studio 2010 数据库项目填充静态数据的最佳实践?