Dar*_*man 10 ruby arrays string inject
我正在上一堂在线课程,通常有一个非常简单的单行解决方案.一个问题表明,给定以下数组:
["emperor", "joshua", "abraham", "norton"]
Run Code Online (Sandbox Code Playgroud)
我必须使用#inject一个字符串,所有名称都用一个字符串连接在一起,每个名称的初始上限,如下所示:
"Emperor Joshua Abraham Norton"
Run Code Online (Sandbox Code Playgroud)
虽然这很容易用#map和完成#join,但这个特殊的练习只需要使用#inject.我提出了这样的事情:
["emperor", "joshua", "abraham", "norton"].inject("") do |memo, word|
memo << word.capitalize << " "
end
Run Code Online (Sandbox Code Playgroud)
这会给我:
"Emperor Joshua Abraham Norton "
Run Code Online (Sandbox Code Playgroud)
其中字符串末尾的空格不作为正确的解决方案传递.
#inject,传递一个空字符串?<<组合字符串?试试这个:
a.map{|t| t.capitalize}.join(" ")
Run Code Online (Sandbox Code Playgroud)
我不认为你可以通过注射逃脱额外的空间.你还需要做
memo = memo + word.capitalize + " "
Run Code Online (Sandbox Code Playgroud)
编辑:因为声明已经改变,迫使你不要使用连接和映射,这里有一个有点难看的解决方案与注入:
a.inject("") do |memo, world|
memo << " " unless memo.empty?
memo << word.capitalize
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8665 次 |
| 最近记录: |