Я пишу простой фрагмент ruby для обнаружения палиндромов на английском языке и другой класс для обнаружения палиндромов на другом языке.
Этот первый фрагмент кода работает, как и ожидалось.
# 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?
Разница в том, что я ввел Процессор метод для удаления дублирования вызова в нижнем регистре.
В чем может быть проблема? Любая помощь будет оценена.