我正在编写一个简单的红宝石代码段来检测英语中的回文,并编写另一个类来检测另一种语言中的回文。
第一个代码段按预期运行。
# Defines a Phrase class (inheriting from String).
class Phrase < String
#process string for palindrome testing
def processor(string)
self.downcase
end
def processed_content
processor(self)
end
def palindrome?
processed_content == processed_content.reverse
end
end
#define a translated Phrase
class TranslatedPhrase < Phrase
attr_accessor :translation
def initialize(content, translation)
super(content)
@translation = translation
end
#process translation for palindrome testing
def processed_content
processor(translation)
end
end
但是,第二个片段没有。
# Defines a Phrase class (inheriting from String).
class Phrase < String
def processor(string)
self.downcase
end
# Returns content for palindrome testing.
def processed_content
processor(self)
end
# Returns true for a palindrome, false otherwise.
def palindrome?
processed_content == processed_content.reverse
end
end
# Defines a translated Phrase.
class TranslatedPhrase < Phrase
attr_accessor :translation
def initialize(content, translation)
super(content)
@translation = translation
end
# Processes the translation for palindrome testing.
def processed_content
processor(translation)
end
end
当我运行以下代码时。第一个示例为 TRUE ,第二个示例为 False 。
frase = TranslatedPhrase.new("recognize", "reconocer")
frase.palindrome?
区别在于我引入了 Processor 方法来消除重复调用小写字母的情况。
可能是什么问题?任何帮助将不胜感激。
答案 0 :(得分:3)
方法processor
应该更改为:
def processor(string)
string.downcase
end
现在它是downcase
自身而不是参数。
这就是为什么下面的方法不起作用
def processed_content
processor(translation)
end