我在我电脑的IDE上运行这段代码,我得到了想要的结果,但是当我用codewars运行它时,它返回nil。
def accum(s)
s = s.split("")
counter = 1
multiplier = 1
print s[0].capitalize
loop do
print "-#{s[counter].capitalize}#{s[counter].downcase * multiplier}"
counter += 1
multiplier += 1
break if counter == s.length
end
end
有人能告诉我哪里出了问题吗?
https://www.codewars.com/kata/5667e8f4e3f572a8f2000039/train/ruby
2条答案
按热度按时间nx7onnlm1#
把它改成
在这里引入
out
,在循环中附加到它,最后在末尾返回。s5a0g9ez2#
Andre Wildberg已经solved您的问题,这源于只 * 打印 * 而不从方法返回您需要的值,但如果我们仔细考虑您正在做的事情,这可以在单个表达式中完成。
你需要把一个字符串拆分成多个字符。让我们使用
s.chars
而不是s。split(“”). Now you need to loop over them with an index. You also have
多个but that and
计数器'总是相同的值。我们可以使用
#each_with_index
来得到这个索引,它从0
开始索引,所以我们只需要加上1
就可以得到字符串的长度。我们可以使用
#each_with_index
返回的枚举器Map出我们需要的子字符串,然后用"-"
将它们连接起来。测试: