反向与反向!在Ruby中比较回文

use*_*972 4 ruby string

我知道反向创建一个新字符串,字符串的字符反向,然后反转!将当前字符串变异(反转)到位.我的问题是,为什么,当例如测试回文时,会发生这种情况?:

a = "foobar"
a == a.reverse    # => false
a == a.reverse!   # => true
Run Code Online (Sandbox Code Playgroud)

是因为它与内存中的对象相同,因此==只检查它们是否具有相同的内存位置?

谢谢!

mu *_*ort 7

String#reverse!方法返回它所调用的字符串

a == a.reverse!
Run Code Online (Sandbox Code Playgroud)

就像说的一样

a.reverse!
a == a
Run Code Online (Sandbox Code Playgroud)

当然a == a是真的.

请注意,至少reverse!对字符串的作用并不重要,重要==o == o.m是method(m)返回的内容.