我正在尝试反转一个字符串:
def reverse(string)
reversed_string = ""
string.split("")
string.each do |letter, idx|
reversed_string = string.length > 0 ? letter[idx] + reversed_string : reversed_string
end
end
reverse("abc")
我不断收到'split'方法不存在的错误以及'each'方法。
答案 0 :(得分:0)
split
根据提供的分隔符将字符串划分为子字符串并返回这些子字符串的数组,它不会改变调用它的字符串 - 所以你要指定它到另一个变量并在其上调用each
或者只是链接方法,例如string.split("").each
至于为什么分裂不起作用,你确定string
实际上是一个字符串吗?您可以通过is_a?
调用检查,例如{ string.is_a? String
答案 1 :(得分:0)
有很多方法可以让你去的地方:
def reverse(s)
ary = s.split('') # => ["f", "o", "o"], ["b", "a", "r"]
reversed_str = ''
ary.size.times do
reversed_str << ary.pop # => "o", "oo", "oof", "r", "ra", "rab"
end
reversed_str # => "oof", "rab"
end
reverse('foo') # => "oof"
reverse('bar') # => "rab"
这不一定是最快的,如果您正在尝试学习如何替换方法,例如reverse
,您应该尝试编写几种不同的变体,然后运行基准测试,以便您和&#0} #39;已经发现了您最快的方式。以下是Ruby如何定义String.reverse
。
另请注意,反转字符串与反转数组不同。他们相似,所以对你来说这是一个很好的第二课。