別のキーワード
種類
- インスタンスメソッド (60)
- 文書 (36)
ライブラリ
- ビルトイン (60)
クラス
- Object (60)
キーワード
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (12) - clone (12)
- dup (12)
-
initialize
_ clone (12) -
initialize
_ dup (12) -
ruby 1
. 8 . 3 feature (12) - クラス/メソッドの定義 (12)
検索結果
先頭5件
-
Object
# initialize _ copy(obj) -> object (18173.0) -
(拡張ライブラリによる) ユーザ定義クラスのオブジェクトコピーの初期化メソッド。
...、Object#clone の内部で Object#initialize_clone から、
また Object#dup の内部で Object#initialize_dup から呼ばれます。
initialize_copy は、Ruby インタプリタが知り得ない情報をコピーするた
めに使用(定義)されます。例えば C 言語でクラス......ます。
デフォルトの Object#initialize_copy は、 freeze チェックおよび型のチェックを行い self
を返すだけのメソッドです。
initialize_copy という名前のメソッドは
自動的に private に設定されます。
@raise TypeError レシーバが freeze......なる場合に発生します。
@see Object#clone,Object#dup
以下に例として、dup や clone がこのメソッドをどのように利用しているかを示します。
obj.dup は、新たに生成したオブジェクトに対して
initialize_copy を呼び
//emlist[][ruby]{
obj2 =... -
クラス/メソッドの定義 (66.0)
-
クラス/メソッドの定義 * クラス/メソッドの定義: * class * singleton_class * module * method * operator * nest_method * eval_method * singleton_method * class_method * limit * 定義に関する操作: * alias * undef * defined
...@x, @yに対応するゲッタとセッタを定義
def initialize(x, y) # コンストラクタ
@x = x; @y = y # @がつくのがインスタンス変数(メンバ変数)
end
def ==(other_vec) # いわゆる演算子オーバーライド
other_vec.x == @x && other_vec.y == @......y
end
def +(other_vec)
Vector2D.new(other_vec.x + @x, other_vec.y + @y)
end
# ...
end
vec0 = Vector2D.new(10, 20); vec1 = Vector2D.new(20, 30)
p vec0 + vec1 == Vector2D.new(30, 50) #=> true
//}
仮引数にデフォルト式が与えられた場合、メソッド呼び出しで実引数......lic、Module#private、
Module#protected を用いて変更できます。ただし Object#initialize という名前のメソッドと
Object#initialize_copy という名前のメソッド
は定義する場所に関係なく常に private になります。
//emlist[例][ruby]{
def foo... -
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (24.0) -
1.6.8から1.8.0への変更点(まとめ) * ((<1.6.8から1.8.0への変更点(まとめ)/インタプリタの変更>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加されたクラス/モジュール>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加されたメソッド>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加された定数>)) * ((<1.6.8から1.8.0への変更点(まとめ)/拡張されたクラス/メソッド(互換性のある変更)>)) * ((<1.6.8から1.8.0への変更点(まとめ)/変更されたクラス/メソッド(互換性のない変更)>)) * ((<1.6.8から1.8.0への変更点(まとめ)/文法の変更>)) * ((<1.6.8から1.8.0への変更点(まとめ)/正規表現>)) * ((<1.6.8から1.8.0への変更点(まとめ)/Marshal>)) * ((<1.6.8から1.8.0への変更点(まとめ)/Windows 対応>)) * ((<1.6.8から1.8.0への変更点(まとめ)/廃止された(される予定の)機能>)) * ((<1.6.8から1.8.0への変更点(まとめ)/ライブラリ>)) * ((<1.6.8から1.8.0への変更点(まとめ)/拡張ライブラリAPI>)) * ((<1.6.8から1.8.0への変更点(まとめ)/バグ修正>)) * ((<1.6.8から1.8.0への変更点(まとめ)/サポートプラットフォームの追加>))
...することにより定数参照の速度を改善したそうです。
(ChangeLogの
Tue Jun 5 16:15:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
に該当するようです)
: break and next [compat]
break, next は、引数を指定することでイテレータや y......整除と剰余
=== NoMethodError
: ((<NoMethodError#args|NoMethodError/args>)) [new]
追加
=== Object
: ((<Object#initialize_copy|Object/initialize_copy>)) [change]
追加
このメソッドは initialize と同様、自動的に private method になります。
: ((<Object#......ました。
((<ruby-dev:18278>))
local ||= 1
@instance ||= 1
$global ||= 1
@@class ||= 1
=> -:3: warning: global variable `$global' not initialized
-:4: uninitialized class variable @@class in Object (NameError)
ruby 1.6.7 (2002-03-0... -
Object
# clone(freeze: nil) -> object (24.0) -
オブジェクトの複製を作成して返します。
...bol, そして Numeric クラスのインスタンスなど一部のオブジェクトは複製ではなくインスタンス自身を返します。
@param freeze true を指定すると freeze されたコピーを返します。
false を指定すると freeze されていないコ......バが freeze されていれば freeze されたコピーを、freeze されていなければ freeze されていないコピーを返します。
@raise ArgumentError TrueClass などの常に freeze されているオブジェクトの freeze されていないコピーを作成しようとし......#=> true
p(obj_d.tainted?) #=> true
p(obj_d.frozen?) #=> false
p(obj_d.respond_to?(:fuga)) #=> false
//}
@see Object#initialize_copy
=== 深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指......#=> true
p(obj_d.tainted?) #=> false
p(obj_d.frozen?) #=> false
p(obj_d.respond_to?(:fuga)) #=> false
//}
@see Object#initialize_copy
=== 深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指......)) #=> false
p(obj == obj_d) #=> true
p(obj_d.frozen?) #=> false
p(obj_d.respond_to?(:fuga)) #=> false
//}
@see Object#initialize_copy
=== 深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指... -
Object
# dup -> object (24.0) -
オブジェクトの複製を作成して返します。
...bol, そして Numeric クラスのインスタンスなど一部のオブジェクトは複製ではなくインスタンス自身を返します。
@param freeze true を指定すると freeze されたコピーを返します。
false を指定すると freeze されていないコ......バが freeze されていれば freeze されたコピーを、freeze されていなければ freeze されていないコピーを返します。
@raise ArgumentError TrueClass などの常に freeze されているオブジェクトの freeze されていないコピーを作成しようとし......#=> true
p(obj_d.tainted?) #=> true
p(obj_d.frozen?) #=> false
p(obj_d.respond_to?(:fuga)) #=> false
//}
@see Object#initialize_copy
=== 深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指......#=> true
p(obj_d.tainted?) #=> false
p(obj_d.frozen?) #=> false
p(obj_d.respond_to?(:fuga)) #=> false
//}
@see Object#initialize_copy
=== 深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指......)) #=> false
p(obj == obj_d) #=> true
p(obj_d.frozen?) #=> false
p(obj_d.respond_to?(:fuga)) #=> false
//}
@see Object#initialize_copy
=== 深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指... -
Object
# initialize _ clone(obj) -> object (18.0) -
Object#clone がオブジェクトを複製する際に呼び出すメソッドです。
...ne がオブジェクトを複製する際に呼び出すメソッドです。
デフォルトでは Object#initialize_copy を呼び出します。
initialize_clone という名前のメソッドは自動的に private に設定されます。
@see Object#initialize_copy, Object#initialize_dup... -
Object
# initialize _ dup(obj) -> object (18.0) -
Object#dup がオブジェクトを複製する際に呼び出すメソッドです。
...up がオブジェクトを複製する際に呼び出すメソッドです。
デフォルトでは Object#initialize_copy を呼び出します。
initialize_dup という名前のメソッドは自動的に private に設定されます。
@see Object#initialize_copy, Object#initialize_clone... -
ruby 1
. 8 . 3 feature (12.0) -
ruby 1.8.3 feature *((<ruby 1.8 feature>)) *((<ruby 1.8.2 feature>))
...y-talk:144741>))
class Fred
@@foo = 99
def foo
@@foo
end
end
def Fred.foo
@@foo = 101 #=> @@foo は Fred クラスのクラス変数ではない。
end
def Fred.foo_foo
class_variable_set(:@@foo, 101) # self が Fred ク......ラス自身であることに注意。クラス変数 @@foo に値をセットする。
end
Fred.foo # メソッドを呼んでも、Fred クラスのクラス変数 @@foo は変わらない。
p Fred.new.foo #=> 99
Fred.foo_foo #
p Fred.new.foo #......特異クラスは複製できなくなりました。((<ruby-talk:142749>))
$ ruby-1.8.3 -e 'class << "str"; self end.dup'
-e:1:in `initialize_copy': can't copy singleton class (TypeError)
from -e:1
=== 2005-05-15
: Pathname#unlink [lib] [compat]
ディレクトリへのシ...