本地IDE运行正常但Codewars返回nil,Ruby代码问题求助
问题排查与修复
你的代码在本地IDE能看到预期结果,但Codewars返回nil的核心原因是:方法没有返回目标字符串,只是通过print把内容输出到控制台。
Ruby方法默认会返回最后一行代码的执行结果,你的accum方法最后执行的是loop块,当触发break时,loop返回nil,所以Codewars平台获取到的方法返回值就是nil,而非你期望的拼接字符串。
修复方案
把输出逻辑改成构建字符串并返回的形式,示例代码如下:
def accum(s) s.chars.each_with_index.map do |char, idx| "#{char.upcase}#{char.downcase * idx}" end.join('-') end
代码说明:
s.chars将字符串拆分为字符数组,比split("")更简洁each_with_index同时获取字符和索引,索引可直接用来控制重复次数(第一个字符索引为0,对应重复0次,符合需求)map将每个字符转换为指定格式的子串join('-')把所有子串用-连接成最终字符串,方法会自动返回该结果
修改后,方法会直接返回目标字符串,Codewars就能正确获取到结果了。
内容的提问来源于stack exchange,提问作者wanderingnowhere
相关产品推荐
相关产品推荐

