るりまサーチ

最速Rubyリファレンスマニュアル検索!
144件ヒット [1-100件を表示] (0.066秒)
トップページ > クエリ:end[x] > ライブラリ:ビルトイン[x] > クエリ:module_eval[x]

別のキーワード

  1. module attr
  2. module public
  3. module private
  4. module protected
  5. module module_eval

クラス

モジュール

キーワード

検索結果

<< 1 2 > >>

Module#module_eval {|mod| ... } -> object (15134.0)

モジュールのコンテキストで文字列 expr またはモジュール自身をブロックパラメータとするブロックを 評価してその結果を返します。

...とです。
つまり、そのモジュールの定義式の中にあるかのように実行されます。

ただし、ローカル変数は module_eval/class_eval の外側のスコープと共有します。

定数とクラス変数のスコープは、文字列が与えられた場合とブ...
...す。

//emlist[例][ruby]{
class C
end

a = 1
C.class_eval %Q{
def m # メソッドを動的に定義できる。
return :m, #{a}
end

}

p C.new.m #=> [:m, 1]
//}

//emlist[定数のスコープが異なる例][ruby]{
class C
end


# ブロックが渡された場合...
...# 文字列が渡された場合は、モジュール定義式内と同じスコープになる。つまり、この場合は
# class C
# X = 2
# end
# と書いたのと同じ意味になる。
C.class_eval 'X = 2'

p X #=> 1
p C::X #=> 2
//}

@see BasicObject#instance_eval, Module.new, Kerne...

Module#module_eval(expr, fname = "(eval)", lineno = 1) -> object (15134.0)

モジュールのコンテキストで文字列 expr またはモジュール自身をブロックパラメータとするブロックを 評価してその結果を返します。

...とです。
つまり、そのモジュールの定義式の中にあるかのように実行されます。

ただし、ローカル変数は module_eval/class_eval の外側のスコープと共有します。

定数とクラス変数のスコープは、文字列が与えられた場合とブ...
...す。

//emlist[例][ruby]{
class C
end

a = 1
C.class_eval %Q{
def m # メソッドを動的に定義できる。
return :m, #{a}
end

}

p C.new.m #=> [:m, 1]
//}

//emlist[定数のスコープが異なる例][ruby]{
class C
end


# ブロックが渡された場合...
...# 文字列が渡された場合は、モジュール定義式内と同じスコープになる。つまり、この場合は
# class C
# X = 2
# end
# と書いたのと同じ意味になる。
C.class_eval 'X = 2'

p X #=> 1
p C::X #=> 2
//}

@see BasicObject#instance_eval, Module.new, Kerne...

BasicObject#instance_eval {|obj| ... } -> object (44.0)

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。

...示などを差し替えることができます。

//emlist[例][ruby]{
class Foo
def initialize data
@key = data
end

private
def do_fuga
p 'secret'
end

end


some = Foo.new 'XXX'
some.instance_eval{p @key} #=> "XXX"
some.instance_eval{do_fuga } #=> "secret" # private メソッド...
...imeError)
//}

//emlist[例][ruby]{
class Bar < BasicObject
def call1
instance_eval("::ENV.class")
end

def call2
instance_eval("ENV.class")
end

end


bar = Bar.new
bar.call1 # => Object
bar.call2 # raise NameError
//}

@see Module#module_eval, Kernel.#eval, BasicObject#instance_exec...

BasicObject#instance_eval(expr, filename = "(eval)", lineno = 1) -> object (44.0)

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。

...示などを差し替えることができます。

//emlist[例][ruby]{
class Foo
def initialize data
@key = data
end

private
def do_fuga
p 'secret'
end

end


some = Foo.new 'XXX'
some.instance_eval{p @key} #=> "XXX"
some.instance_eval{do_fuga } #=> "secret" # private メソッド...
...imeError)
//}

//emlist[例][ruby]{
class Bar < BasicObject
def call1
instance_eval("::ENV.class")
end

def call2
instance_eval("ENV.class")
end

end


bar = Bar.new
bar.call1 # => Object
bar.call2 # raise NameError
//}

@see Module#module_eval, Kernel.#eval, BasicObject#instance_exec...

Module#class_eval {|mod| ... } -> object (34.0)

モジュールのコンテキストで文字列 expr またはモジュール自身をブロックパラメータとするブロックを 評価してその結果を返します。

...とです。
つまり、そのモジュールの定義式の中にあるかのように実行されます。

ただし、ローカル変数は module_eval/class_eval の外側のスコープと共有します。

定数とクラス変数のスコープは、文字列が与えられた場合とブ...
...す。

//emlist[例][ruby]{
class C
end

a = 1
C.class_eval %Q{
def m # メソッドを動的に定義できる。
return :m, #{a}
end

}

p C.new.m #=> [:m, 1]
//}

//emlist[定数のスコープが異なる例][ruby]{
class C
end


# ブロックが渡された場合...
...# 文字列が渡された場合は、モジュール定義式内と同じスコープになる。つまり、この場合は
# class C
# X = 2
# end
# と書いたのと同じ意味になる。
C.class_eval 'X = 2'

p X #=> 1
p C::X #=> 2
//}

@see BasicObject#instance_eval, Module.new, Kerne...

絞り込み条件を変える

Module#class_eval(expr, fname = "(eval)", lineno = 1) -> object (34.0)

モジュールのコンテキストで文字列 expr またはモジュール自身をブロックパラメータとするブロックを 評価してその結果を返します。

...とです。
つまり、そのモジュールの定義式の中にあるかのように実行されます。

ただし、ローカル変数は module_eval/class_eval の外側のスコープと共有します。

定数とクラス変数のスコープは、文字列が与えられた場合とブ...
...す。

//emlist[例][ruby]{
class C
end

a = 1
C.class_eval %Q{
def m # メソッドを動的に定義できる。
return :m, #{a}
end

}

p C.new.m #=> [:m, 1]
//}

//emlist[定数のスコープが異なる例][ruby]{
class C
end


# ブロックが渡された場合...
...# 文字列が渡された場合は、モジュール定義式内と同じスコープになる。つまり、この場合は
# class C
# X = 2
# end
# と書いたのと同じ意味になる。
C.class_eval 'X = 2'

p X #=> 1
p C::X #=> 2
//}

@see BasicObject#instance_eval, Module.new, Kerne...

Module#class_exec(*args) {|*vars| ... } -> object (26.0)

与えられたブロックを指定された args を引数としてモジュールのコンテキストで評価します。

...hing
end

c = 1

Thing.class_exec{
def hello()
"Hello there!"
end


define_method(:foo) do # ローカル変数がブロックの外側を参照している
c
end

}

t = Thing.new
p t.hello() #=> "Hello there!"
p t.foo() #=> 1
//}

@see Module#module_eval, M...

Module#module_exec(*args) {|*vars| ... } -> object (26.0)

与えられたブロックを指定された args を引数としてモジュールのコンテキストで評価します。

...hing
end

c = 1

Thing.class_exec{
def hello()
"Hello there!"
end


define_method(:foo) do # ローカル変数がブロックの外側を参照している
c
end

}

t = Thing.new
p t.hello() #=> "Hello there!"
p t.foo() #=> 1
//}

@see Module#module_eval, M...

Class.new(superclass = Object) -> Class (20.0)

新しく名前の付いていない superclass のサブクラスを生成します。

...テキストでブロックを実行します。以下のコードと同じです。

//emlist[例][ruby]{
klass = Class.new(superclass)
klass.module_eval {|m|
# ...
}
klass
//}

この場合も生成したクラスを返します。
ブロックの実行は Class#initialize が行います。

@p...
...m superclass 生成するクラスのスーパークラスを指定します。

//emlist[例][ruby]{
k = Class.new{|c|
def initialize
p "in initialize"
end


def hoge
p "hoge hoge hoge"
end

}
o = k.new #=> "in initialize"
o.hoge #=> "hoge hoge hoge"
//}...
<< 1 2 > >>