saw*_*awa 5 ruby class ruby-1.9.3
是否有一个好的库(最好是宝石)来进行对象的类检查?困难的部分是我不仅想检查一个简单对象的类型,而且想要进入数组或散列(如果有的话),并检查其组件的类.例如,如果我有一个对象:
object = [
"some string",
4732841,
[
"another string",
{:some_symbol => [1, 2, 3]}
],
]
Run Code Online (Sandbox Code Playgroud)
我希望能够检查各种级别的细节,如果有类不匹配,那么我希望它以某种合理的方式返回位置.我还不清楚错误(类不匹配)格式应该如何,但是这样的事情:
object.class_check(Array) # => nil (`nil` will mean the class matches)
object.class_check([String, Fixnum, Array]) # => nil
object.class_check([String, Integer, Array]) # => nil
object.class_check([String, String, Array]) # => [1] (This indicates the position of class mismatch)
object.class_check([String, Fixnum, [Symbol, Hash]) # => [2,0] (meaning type mismatch at object[2][0])
Run Code Online (Sandbox Code Playgroud)
如果没有这样的图书馆,有人(告诉我应该指示的方向)可以实现吗?可能,我应该使用kind_of?和递归定义.
这是你可以开始的东西
class Object
def class_check(tclass)
return self.kind_of? tclass unless tclass.kind_of? Array
return false unless self.kind_of? Array
return false unless length == tclass.length
zip(tclass).each { | a, b | return false unless a.class_check(b) }
true
end
end
Run Code Online (Sandbox Code Playgroud)
true如果类匹配则返回,false否则返回.
缺少指数的计算.