Ruby:从头开始的反向方法

时间:2016-09-01 20:26:41

标签: ruby

我正在编写一个编码挑战练习问题,要求我整理一个方法来反转字符串并提出:

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
)

它似乎表明字符串反转,但它仍然打印错误。我写的方法中是否有任何我遗漏的东西?感谢。

2 个答案:

答案 0 :(得分:4)

您的功能正在按预期工作,这是导致问题的最后一行。

puts new_string

puts返回nil,ruby使用隐式返回,除非您明确说出return,因此它返回最后一行代码的结果,在本例中为nil

如果你只是做new_stringreturn new_string,它就可以了。

或者如果您想将其打印到屏幕并将其作为结果返回,您可以

p new_string

答案 1 :(得分:0)

davidhu2000已正确回答了您的问题但我建议重构代码:

f = "forward"

puts f.reverse 

# drawrof

如果你真的想要:

def reverse(string)
   return string.reverse
end