ruby-reference-manual:3645
From: "znz (Kazuhiro NISHIYAMA)" <redmine@r...>
Date: Thu, 25 Apr 2013 09:35:44 +0900
Subject: [ruby-reference-manual:3645] [るりまプロジェクト - Bug #8280][Assigned] Struct の説明の修正
Issue #8280 has been updated by znz (Kazuhiro NISHIYAMA). Status changed from Closed to Assigned Assignee set to sho-h (Sho Hashimoto) reopen します。 class Struct のインスタンスメソッドなら Struct.new(:foo, :bar).each{|e| p e } という使い方も出来ることを期待しますが、実際には Struct.new(:foo, :bar).new(1, 2).each{|e| p e } という使い方しか出来ないということを「このメソッドは Struct の下位クラスにのみ定義されています」で表現していたのだと思います。 ---------------------------------------- Bug #8280: Struct の説明の修正 https://bugs.ruby-lang.org/issues/8280#change-38876 Author: sho-h (Sho Hashimoto) Status: Assigned Priority: Normal Assignee: sho-h (Sho Hashimoto) Category: Target version: reporter: ruby_version: =begin Struct の「このメソッドは Struct の下位クラスにのみ定義されています」はすべて不要ではないかと思いました。 * ((<URL:http://doc.ruby-lang.org/ja/1.9.3/class/Struct.html>)) 現在の記述は make_struct(Struct.new で呼ばれる関数) の中で new、[]、members を rb_define_singleton_method してるからかもしれません(each と each_pair も「このメソッドは...」とある理由はわかりませんでしたが...) 1.8.7 での以下の確認結果だけ見ても不要そうです。 $ irb > Foo = Struct.new(:a) > Struct.public_instance_methods(false) # => ["eql?", "each_pair", "members", "==", "to_s", "[]", "[]=", "hash", "to_a", "size", "values_at", "length", "select", "values", "each", "inspect"] Foo.public_instance_methods(false) # => ["a", "a="] > RUBY_VERSION # => "1.8.7" $ grep rb_define_ 1.8/ruby-1.8.7-p358/struct.c | grep rb_cStruct ... rb_define_method(rb_cStruct, "each", rb_struct_each, 0); rb_define_method(rb_cStruct, "each_pair", rb_struct_each_pair, 0); rb_define_method(rb_cStruct, "[]", rb_struct_aref, 1); rb_define_method(rb_cStruct, "[]=", rb_struct_aset, 2); rb_define_method(rb_cStruct, "select", rb_struct_select, -1); rb_define_method(rb_cStruct, "values_at", rb_struct_values_at, -1); rb_define_method(rb_cStruct, "members", rb_struct_members_m, 0); 実質影響はないので今までこのままだったのかもしれませんが、「このメソッドは...」については近い内に削除してしまおうかと思います。 =end -- http://bugs.ruby-lang.org/ -- ML: ruby-reference-manual@m... Info: http://QuickML.com/
3634 2013-04-16 16:59 [sho-h@n... ] [るりまプロジェクト - Bug #8280][Open] Struct の説明の修正 -> 3645 2013-04-25 02:35 ┣[redmine@r... ] [るりまプロジェクト - Bug #8280][Assigned] Struct の説明の修正 3649 2013-04-25 06:20 ┣[sho-h@n... ] [るりまプロジェクト - Bug #8280] Struct の説明の修正 3651 2013-04-27 03:36 ┣[sho-h@n... ] [るりまプロジェクト - Bug #8280] Struct の説明の修正 3660 2013-05-07 15:24 ┣[sho-h@n... ] [るりまプロジェクト - Bug #8280] Struct の説明の修正 3665 2013-05-10 13:29 ┗[sho-h@n... ] [るりまプロジェクト - Bug #8280][Closed] Struct の説明の修正