Rubyでdefined?を利用し変数の存在を確認したり式の種別を確認する

Rubyで変数の存在を確認する時にdefined?を使う。変数が定義されていなければnilが返り、定義されていれば変数の種別が取得できる。

p defined? hello
# nil
hello = "Tom"
p defined? hello
# "local-variable"

未定義の変数に値を代入したいのであれば自己代入||=を使えば良い。変数が存在していなければ変数を代入したいという目的でこのページに訪れた人は参考にされたし。

name ||= "Tom"

defined?を様々なパターンで実行してみる

def hello
puts "Hello"
end
p defined? hello
# "method"
class Hello
def initialize
@name = "Tom"
end
def message
p defined? @name
end
end
hello = Hello.new
p defined? Hello
p defined? hello
p defined? hello.message
hello.message
# "constant"
# "local-variable"
# "method"
# "instance-variable"
hello = []
p defined? hello
# "local-variable"
hello = {a: 10, b: 20}
p defined? hello
# "local-variable"

defined?が返す値の一覧はRuby 1.9.3 リファレンスマニュアルで紹介されている
クラス/メソッドの定義

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA