やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

組込ライブラリ(Binding)

 evalだけは知っておきたい。

成果物

情報源

Binding

  • eval
  • irb
  • local_variable_defined?
  • local_variable_get
  • local_variable_set
  • local_variables
  • receiver
  • source_location

eval

 文字列をRubyコードとして実行する。

eval 'p "A"'

irb

 REPLを開始する。

binding.irb

local_variable_defined?

 ローカル変数が定義されているなら真を返す。

p binding.local_variable_defined? :v #=> true
v = 1
p binding.local_variable_defined? :v #=> true
p binding.local_variable_defined? :x #=> false

local_variable_get

 ローカル変数の値を返す。

v = 1
p binding.local_variable_get :v #=> 1

local_variable_set

 ローカル変数の値を代入する。

v = 1
p binding.local_variable_set :v, 2 #=> 2
p v #=> 2

local_variables

 ローカル変数の一覧を配列で返す。

v = 1
p local_variables #=> [:v]

receiver

 保持するコンテキスト内でのselfを返す。

p binding.receiver #=> main

source_location

 ファイルパスと行番号を返す。

p binding.source_location #=> ["/tmp/.../0.rb", 23]

 __FILE____LINE__の配列。

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux