2006/03/13 7:24 [Ruby] nil または empty か調べる

メソッドが定義されているか調べる の応用。

#!/usr/local/bin/ruby

def nil_or_empty?(var)
    if defined?(var.empty?) == 'method'
        return var.empty?
    else
        return var.nil?
    end
end

puts nil_or_empty?(nil)
puts nil_or_empty?('')
puts nil_or_empty?('string')

実行結果 :

true
true
false

2006/03/13 7:10 [Ruby] メソッドが定義されているか調べる

#!/usr/local/bin/ruby

object = Object.new
array = Array.new

puts 'defined?演算子を使う方法'

puts defined?(object.empty?) == 'method'
puts defined?(array.empty?) == 'method'

puts 'Object#methodsを使う方法'

def method_defined?(var, name)
    return var.methods.member?(name)
end

puts method_defined?(object, 'empty?')
puts method_defined?(array, 'empty?')

実行結果 :

defined?演算子を使う方法
false
true
Object#methodsを使う方法
false
true