我创建了以下扩展
class String
def is_a_number? s # check if string is either an INT or a FLOAT (12, 12.2, 12.23 would return true)
s.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
end
end
我怎样才能使它作为一个链式方法工作?
is_a_number?("10") # returns true
"10".is_a_number? # returns an error (missing arguments)
更新
感谢sawa、mikej 和Ramon 的回答。按照建议,我将类更改为 Object 并删除了参数:
class Object
def is_a_number? # check if string is either an INT or a FLOAT (12, 12.2, 12.23 would return true)
to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) != nil
end
end
现在它工作得很好:
23.23.is_a_number? # > true
多谢你们...