簡體   English   中英

從另一個數組填充數組

[英]Populating an array from another array

我想用每個元素的第一個字母創建一個數組,但我只是得到了整個元素 - 我做錯了什么?

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#pushArray#<< 。)
  • 你沒有返回first_letter ,這意味着你隱式返回數組本身(假設是self的 - 因為這就是Array#each返回的內容)。
  • 當你調用each_group_by_first_letter你傳遞一個塊( do ... ),但你的方法不采用或使用一個塊。 你可能想要在each_group_by_first_letter的結果上調用each

無論如何,Array類已經擁有了您需要的工具 - 無需為此定義新方法。

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

x.map {|word| word[0] }
# => [ 'a', 'e', 'a' ]
x = ["abcd", "efgh", "able"]
y = x.map{|e| e[0]}          # keeps x intact

要么

x = ["abcd", "efgh", "able"]
x.map!{|e| e[0]}             # modifies x

 => ["a", "e", "a"] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM