class A
end
class B
end
class Y < A
end
class Y < B # TypeError: superclass mismatch for Y
end
スーパークラスの不一致を引き起こすクラスを取得する方法はありますか? それを引き起こしているのはクラスであることを知りたいのですが、Y
そのクラスを裸の変数に保持しています。
class A
end
class B
end
class Y < A
end
class Y < B # TypeError: superclass mismatch for Y
end
スーパークラスの不一致を引き起こすクラスを取得する方法はありますか? それを引き起こしているのはクラスであることを知りたいのですが、Y
そのクラスを裸の変数に保持しています。
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回答から取得)