use*_*856 2 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
Run Code Online (Sandbox Code Playgroud)
您的代码有几个问题.其中:
first_letter
,但然后在下一行用字符串覆盖它而不是将字符串添加到它的数组.(要将项添加到通常使用的数组Array#push
或Array#<<
.)first_letter
,这意味着你隐式返回数组本身(假设它是什么self
- 因为这是Array#each
返回的).each_group_by_first_letter
你传递一个块(do ...
),但你的方法不采取或使用一个块.你可能想要调用each
结果each_group_by_first_letter
.无论如何,Array类已经拥有了您需要的工具 - 无需为此定义新方法.
x = [ 'abcd', 'efgh', 'able' ]
x.map {|word| word[0] }
# => [ 'a', 'e', 'a' ]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2041 次 |
最近记录: |