0
class A
end
class B
end
class Y < A
end
class Y < B # TypeError: superclass mismatch for Y
end

スーパークラスの不一致を引き起こすクラスを取得する方法はありますか? それを引き起こしているのはクラスであることを知りたいのですが、Yそのクラスを裸の変数に保持しています。

4

1 に答える 1

0
class A;end
class B;end
class Y < A;end
x = (class Y < B;end) rescue $!
p x.to_s #=> "superclass mismatch for class Y"

この string から"superclass mismatch for class Y"、次のクラスを取得できます。

Object.module_eval(x.to_s[/class (?<name>\S*)$/, 'name'], __FILE__, __LINE__)
#=> Y

このSO回答から取得)

于 2013-05-22T12:01:07.970 に答える