次の拡張機能を作成しました
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
みんなありがとう...