要約
ローカル変数のテーブルと self、モジュールのネストなどの情報を保持するオブジェクトのクラスです。
組み込み関数 Kernel?.binding と Proc#binding によってのみ生成され、Kernel?.eval の第 2 引数に使用します。またトップレベルの Binding オブジェクトとして組み込み定数 Object::TOPLEVEL_BINDING が用意されています。
目次
- インスタンスメソッド
インスタンスメソッド
eval(expr, fname = __FILE__, lineno = 1) -> object[permalink][rdoc][edit]-
自身をコンテキストとし文字列 expr を Ruby プログラムとして評価しその結果を返します。組み込み関数 Kernel?.eval を使って eval(expr, self, fname, lineno) とするのと同じです。
- [PARAM]
expr: - 評価したい式を文字列で与えます。
- [PARAM]
fname: - ファイル名を文字列で与えます。式 expr が fname というファイル名にあるかのように実行されます。
- [PARAM]
lineno: - 行番号を整数で与えます。式 expr の先頭行の行番号が lineno であるかのように実行されます。
def get_binding(str) binding end str = "hello" p eval("str + ' Fred'") #=> "hello Fred" p get_binding("bye").eval("str + ' Fred'") #=> "bye Fred"[SEE_ALSO] Kernel?.eval
- [PARAM]
implicit_parameter_defined?(symbol) -> boolRuby 4.0 から[permalink][rdoc][edit]-
引数 symbol で指定した番号指定パラメータまたは it パラメータが self のスコープで定義されている場合に true を、そうでない場合に false を返します。
定義されていない場合に false を返すのは、symbol が番号指定パラメータまたは it パラメータの名前である場合だけです。それ以外の名前を指定した場合は NameError が発生します。
- [PARAM]
symbol: - 番号指定パラメータまたは it パラメータの名前を Symbol で指定します。
- [EXCEPTION]
NameError: - 指定した名前が番号指定パラメータでも it パラメータでもない場合に発生します。
[42].each do it p binding.implicit_parameter_defined?(:it) # => true p binding.implicit_parameter_defined?(:_1) # => false end { k: 42 }.each do _2 p binding.implicit_parameter_defined?(:_1) # => true p binding.implicit_parameter_defined?(:_3) # => false p binding.implicit_parameter_defined?(:it) # => false end[SEE_ALSO] Binding#implicit_parameters, Binding#implicit_parameter_get
- [PARAM]
implicit_parameter_get(symbol) -> objectRuby 4.0 から[permalink][rdoc][edit]-
引数 symbol で指定した番号指定パラメータまたは it パラメータの値を返します。
- [PARAM]
symbol: - 番号指定パラメータまたは it パラメータの名前を Symbol で指定します。
- [EXCEPTION]
NameError: - 指定した名前が番号指定パラメータでも it パラメータでもない場合に発生します。
- [EXCEPTION]
NameError: - 指定したパラメータが self のスコープで定義されていない場合に発生します。
[42].each do it p binding.implicit_parameter_get(:it) # => 42 end { k: 42 }.each do _2 p binding.implicit_parameter_get(:_1) # => :k p binding.implicit_parameter_get(:_2) # => 42 end[SEE_ALSO] Binding#implicit_parameters, Binding#implicit_parameter_defined?
- [PARAM]
implicit_parameters -> [Symbol]Ruby 4.0 から[permalink][rdoc][edit]-
self のスコープで定義されている番号指定パラメータおよび it パラメータの名前を Symbol の配列で返します。定義されていない場合は空の配列を返します。
これらは Binding#local_variables の返り値には含まれません。
[42].each do it p binding.implicit_parameters # => [:it] end { k: 42 }.each do _2 p binding.implicit_parameters # => [:_1, :_2] end # どちらも使っていない場合 p binding.implicit_parameters # => [][SEE_ALSO] Binding#implicit_parameter_get, Binding#implicit_parameter_defined?, Binding#local_variables
irb -> objectRuby 2.4.0 から[permalink][rdoc][edit]-
REPLのセッションを開始します。
2.5.0 からは require 'irb' せずに直接 binding.irb を呼び出しても使えるようになりました。
[SEE_ALSO] irb
local_variable_defined?(symbol) -> boolRuby 2.1.0 から[permalink][rdoc][edit]-
引数 symbol で指定した名前のローカル変数が定義されている場合に true を、そうでない場合に false を返します。
- [PARAM]
symbol: - ローカル変数名を Symbol オブジェクトで指定します。
- [EXCEPTION]
NameError: - 番号指定パラメータ(_1 など)を指定した場合に発生します。
def foo a = 1 p binding.local_variable_defined?(:a) # => true p binding.local_variable_defined?(:b) # => false endこのメソッドは以下のコードの短縮形です。
binding.eval("defined?(#{symbol}) == 'local-variable'")[SEE_ALSO] Binding#local_variable_get, Binding#local_variable_set
- [PARAM]
local_variable_get(symbol) -> objectRuby 2.1.0 から[permalink][rdoc][edit]-
引数 symbol で指定した名前のローカル変数に設定された値を返します。
- [PARAM]
symbol: - ローカル変数名を Symbol オブジェクトで指定します。
- [EXCEPTION]
NameError: - 引数 symbol で指定したローカル変数が未定義の場合に発生します。
- [EXCEPTION]
NameError: - 番号指定パラメータ(_1 など)を指定した場合に発生します。
def foo a = 1 p binding.local_variable_get(:a) # => 1 binding.local_variable_get(:b) # ~> NameError endこのメソッドは以下のコードの短縮形です。
binding.eval("#{symbol}")[SEE_ALSO] Binding#local_variable_set, Binding#local_variable_defined?
- [PARAM]
local_variable_set(symbol, obj)Ruby 2.1.0 から[permalink][rdoc][edit]-
引数 symbol で指定した名前のローカル変数に引数 obj を設定します。
- [PARAM]
symbol: - ローカル変数名を Symbol オブジェクトで指定します。
- [PARAM]
obj: - 引数 symbol で指定したローカル変数に設定するオブジェクトを指定します。
- [EXCEPTION]
NameError: - 番号指定パラメータ(_1 など)を symbol に指定した場合に発生します。
def foo a = 1 bind = binding bind.local_variable_set(:a, 2) # set existing local variable `a' bind.local_variable_set(:b, 3) # create new local variable `b' # `b' exists only in binding p bind.local_variable_get(:a) # => 2 p bind.local_variable_get(:b) # => 3 p a # => 2 b # ~> NameError endこのメソッドは以下のコード(ただし、obj が Ruby のコードで出力される場合)と同様の動作をします。
binding.eval("#{symbol} = #{obj}")[SEE_ALSO] Binding#local_variable_get, Binding#local_variable_defined?
- [PARAM]
local_variables -> [Symbol]Ruby 2.2.0 から[permalink][rdoc][edit]-
ローカル変数の一覧を Symbol の配列で返します。
例def foo a = 1 2.times do |n| p binding.local_variables #=> [:a, :n] end end番号指定パラメータ(_1 など)は 4.0 からローカル変数として扱われなくなり、返り値に含まれなくなりました。
[1].each do p _1 # => 1 p binding.local_variables # => [](Ruby 3.4 以前は [:_1]) end番号指定パラメータ自体は従来どおり参照できます(メソッド呼び出し/番号指定パラメータ)。 Binding から番号指定パラメータを扱うには Binding#implicit_parameters を使用してください。
このメソッドは以下のコードと同様の動作をします。
binding.eval("local_variables") receiver -> objectRuby 2.2.0 から[permalink][rdoc][edit]-
保持するコンテキスト内での self を返します。
このメソッドは以下のコードと同様の動作をします。
binding.eval("self") source_location -> [String, Integer]Ruby 2.6.0 から[permalink][rdoc][edit]-
self の Ruby のソースファイル名と行番号を返します。
変数と定数/擬似変数 の
例__FILE__と__LINE__も参照してください。p binding.source_location # => ["test.rb", 1]