以下の内容はhttps://tbpgr.hatenablog.com/entry/20130820/1377003702より取得しました。


メタプログラミングRuby | 魔術 | フラットスコープ

概要

フラットスコープ

内容

クロージャーを使って2つのスコープで変数を共有する。

Class.new
define_method :method_name do
Proc
instance_eval
などを使うことでスコープ外の変数を参照可能になります。

サンプル

# encoding: utf-8

# hoge = "hoge"
# class NotFlatScope
#   puts hoge
#   def not_flat
#     puts hoge
#   end
# end

# NotFlatScope.new.not_flat
# 上記ではhogeを参照出来ない

hoge = "hoge"
FlatScope = Class.new do
 puts hoge
  define_method :flat do
    puts hoge
  end
end

FlatScope.new.flat

lambda {
  puts hoge
}.call

Proc.new do
  puts hoge
end.call

class Hage
end

h = Hage.new
h.instance_eval do
  puts hoge
end

出力

hoge
hoge
hoge
hoge
hoge



以上の内容はhttps://tbpgr.hatenablog.com/entry/20130820/1377003702より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14