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"

现在从这个字符串"superclass mismatch for class Y",你可以得到这个类:

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

(取自这个答案

于 2013-05-22T12:01:07.970 回答