【发布时间】:2019-07-29 20:30:51
【问题描述】:
我正在创建一个 Word 类,但出现错误:
TypeError: 类 Word 的超类不匹配
这是irb代码:
irb(main):016:0> class Word
irb(main):017:1> def palindrome?(string)
irb(main):018:2> string == string.reverse
irb(main):019:2> end
irb(main):020:1> end
=> nil
irb(main):021:0> w = Word.new
=> #<Word:0x4a8d970>
irb(main):022:0> w.palindrome?("foobar")
=> false
irb(main):023:0> w.palindrome?("level")
=> true
irb(main):024:0> class Word < String
irb(main):025:1> def palindrome?
irb(main):026:2> self == self.reverse
irb(main):027:2> end
irb(main):028:1> end
TypeError: superclass mismatch for class Word
from (irb):24
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands/console.rb:47:in `start'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands/console.rb:8:in `start'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.2.1/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
【问题讨论】:
-
看起来第二个
class Word与第一个冲突。不知道如何在不关闭 IRB 并重新打开的情况下清除它。 -
作为一个仅供参考,我倾向于在脚本中执行类、循环和更复杂的块,并运行脚本而不是使用 IRB。
-
对我们来说也是一个很好的教训,因为这将在任何 Ruby 文件中做同样的事情。谢谢提醒。
标签: ruby