別のキーワード
種類
- 文書 (52)
- インスタンスメソッド (24)
ライブラリ
- ビルトイン (24)
クラス
- BasicObject (24)
キーワード
- Marshal フォーマット (12)
-
NEWS for Ruby 3
. 1 . 0 (4) - Ruby プログラムの実行 (12)
-
ruby 1
. 6 feature (12) - クラス/メソッドの定義 (12)
検索結果
先頭5件
-
BasicObject
# instance _ eval {|obj| . . . } -> object (18168.0) -
オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。
...は instance_eval の外側のスコープと、ブロックの評価ではそのブロックの外側のスコープと、共有します。
メソッド定義の中で instance_eval でメソッドを定義した場合は、囲むメソッドが実行されたときに
初めて instance_eval 内......定義のネストと同じです。
d:spec/def#nest_method を参照してください。
BasicObject を継承して作ったクラス内で instance_eval する場合はトップレベルの定数や Kernel モジュールに定義されているメソッドは見えません。
これは、ト......XXX"
some.instance_eval{do_fuga } #=> "secret" # private メソッドも呼び出せる
some.instance_eval 'raise' # ..:10: (eval):1: (RuntimeError)
messg = 'unknown'
some.instance_eval 'raise messg','file.rb',999 # file.rb:999: unknown (RuntimeError)
//}
//emlist[例][ruby]{
class Bar < BasicObj... -
BasicObject
# instance _ eval(expr , filename = "(eval)" , lineno = 1) -> object (18168.0) -
オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。
...は instance_eval の外側のスコープと、ブロックの評価ではそのブロックの外側のスコープと、共有します。
メソッド定義の中で instance_eval でメソッドを定義した場合は、囲むメソッドが実行されたときに
初めて instance_eval 内......定義のネストと同じです。
d:spec/def#nest_method を参照してください。
BasicObject を継承して作ったクラス内で instance_eval する場合はトップレベルの定数や Kernel モジュールに定義されているメソッドは見えません。
これは、ト......XXX"
some.instance_eval{do_fuga } #=> "secret" # private メソッドも呼び出せる
some.instance_eval 'raise' # ..:10: (eval):1: (RuntimeError)
messg = 'unknown'
some.instance_eval 'raise messg','file.rb',999 # file.rb:999: unknown (RuntimeError)
//}
//emlist[例][ruby]{
class Bar < BasicObj... -
Marshal フォーマット (60.0)
-
Marshal フォーマット フォーマットバージョン 4.8 を元に記述しています。
...箇所でも使われます)は、
2種類の形式があります。
==== 形式 1
数値 n に対して
//emlist{
n == 0: 0
0 < n < 123: n + 5
-124 < n < 0: n - 5
//}
という数値(1 byte)を格納します。5 を足したり引いたりするのは下記の
形式 2 との区別の......式 1 の範囲を超える数値 N に対しては、以下の形式になります。
==== 形式 2
//emlist{
| len | n_1 | n_2 | n_3 | n_4 |
<-1-> <- len ->
byte bytes
//}
len の値は -4 〜 -1, 1 〜 4 で。符号と後続のデータが n1 〜 n_len
まである......@bar = 1
end
p Bar.instance_eval { @bar } # => 1
File.open('testfile', 'wb') do |f|
Marshal.dump(Bar, f)
end
# 別プログラム相当にするため remove_const
Object.send :remove_const, :Bar
module Bar
end
p bar = Marshal.load(File.binread('testfile'))
p bar.instance_eval { @bar }
# => nil... -
ruby 1
. 6 feature (36.0) -
ruby 1.6 feature ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン になります。
...ruby 1.6 feature
ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン
になります。
((<stable-snapshot|URL:ftp://ftp.netlab.co.jp/pub/lang/ruby/stable-snapshot.tar.gz>)) は、日々更新される安定版の最新ソースです。
== 1.6.8 (2002-12-24) ->......-> 1.6.8 (2002-12-24)
: 2002-10-02: Thread (cygwin)
Cygwin で、Thread の切替えが行われないことがありました。
((<ruby-list:36058>)), ((<ruby-list:24637>))
: 2002-10-01: Socket (win)
Windows でのソケットの問題が1つ解決されたようです。(どのような......tipart form.
: 2002-04-10: Object#((<Object/remove_instance_variable>))
指定したインスタンス変数が定義されていない場合例外 NameError を起こ
すようになりました。((<ruby-bugs-ja:PR#216>))
Object.new.instance_eval {
p remove_instance_variab... -
NEWS for Ruby 3
. 1 . 0 (30.0) -
NEWS for Ruby 3.1.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
...持つ配列(シングルトンクラスを含まない)を返します。
//emlist[Class#subclasses][ruby]{
class A; end
class B < A; end
class C < B; end
class D < A; end
A.subclasses #=> [D, B]
B.subclasses #=> [C]
C.subclasses #=> []
//}
* Enumerable
* 新規メソッド
*......した。 18290
== 実装の改善
* クラス変数の読み込みにインラインキャッシュが導入されました。 17763
* instance_eval と instance_exec は、必要な時だけシングルトンクラスを割り当てるようになり、余分なオブジェクトの生成を......ible with the `_Output` interface.
# `PrettyPrint[String]` is ok, but `PrettyPrint[Integer]` is a type error.
class PrettyPrint[T < _Output]
interface _Output
def <<: (String) -> void
end
attr_reader output: T
def initialize: (T output) -> void
end
//}
* ジェネリックな型エ... -
Ruby プログラムの実行 (24.0)
-
Ruby プログラムの実行 === Ruby プログラム
...ラス定義式
クラスを定義します。
評価は(コンパイル時ではなく)実行時に行われます。
書式
class ClassName [< スーパークラス式]
式
end
クラス定義式は評価されるとまずクラスを生成しようとします。スーパークラ
ス......オブジェクトの特異クラスを定義します。
評価は(コンパイル時ではなく)実行時に行われます。
書式
class << EXPR
本体
end
まず特異クラスを定義しようとするオブジェクトの式 EXPR を評価しま
す。続いてそのオブジ......す。Module#module_eval/class_eval、
BasicObject#instance_eval
の三つだけが例外で、以下のように変更されます。
: Module#module_eval, Module#class_eval
self、class ともそのレシーバ
: BasicObject#instance_eval
self がそのレシーバ、class がそのレシ... -
クラス/メソッドの定義 (24.0)
-
クラス/メソッドの定義 * クラス/メソッドの定義: * class * singleton_class * module * method * operator * nest_method * eval_method * singleton_method * class_method * limit * 定義に関する操作: * alias * undef * defined
...===[a:class] クラス定義
//emlist[例][ruby]{
class Foo < Super
def test
# ...
end
# ...
end
//}
文法:
class 識別子 [`<' superclass ]
式..
end
文法:
class 識別子 [`<' superclass ]
式..
[rescue [error_typ......します。
//emlist[][ruby]{
class Foo < Array
def foo
end
end
# 定義を追加(スーパークラス Array を明示的に指定しても同じ)
class Foo
def bar
end
end
# 間違ったスーパークラスを指定するとエラー
class Foo < String
end
# => superclass mismatch for......義式やinstance_eval)でのみ呼び出せ
ます。
//emlist[例: protected の可視性][ruby]{
class Foo
def foo
p caller.last
end
protected :foo
end
obj = Foo.new
# そのままでは呼べない
obj.foo rescue nil # => -:11 - protected method `foo' called for #<Foo:0x401a186...