超类不匹配:获取类对象(ruby)

时间:2013-05-22 11:43:19

标签: ruby exception superclass

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

有没有办法让课程引发超类不匹配? 我想知道它是类Y导致它并在我的裸变量中保存该类。

1 个答案:

答案 0 :(得分: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

(取自this SO answer

相关问题