我正在编写一个编码挑战练习问题,要求我整理一个方法来反转字符串并提出:
def reverse(string)
idx = 1
array_s = []
while idx <= string.length
array_s.push(string[string.length - idx])
idx = idx + 1
end
new_string = array_s.join("")
puts new_string
end
当我在最后进行测试时,
puts(
'reverse("abc") == "cba": ' + (reverse("abc") == "cba").to_s
)
puts(
'reverse("a") == "a": ' + (reverse("a") == "a").to_s
)
puts(
'reverse("") == "": ' + (reverse("") == "").to_s
)
它似乎表明字符串反转,但它仍然打印错误。我写的方法中是否有任何我遗漏的东西?感谢。
答案 0 :(得分:4)
您的功能正在按预期工作,这是导致问题的最后一行。
puts new_string
puts
返回nil
,ruby使用隐式返回,除非您明确说出return
,因此它返回最后一行代码的结果,在本例中为nil
如果你只是做new_string
或return new_string
,它就可以了。
或者如果您想将其打印到屏幕并将其作为结果返回,您可以
p new_string
答案 1 :(得分:0)
davidhu2000已正确回答了您的问题但我建议重构代码:
f = "forward"
puts f.reverse
# drawrof
如果你真的想要:
def reverse(string)
return string.reverse
end