ruby-reference-manual:3278
From: "sho-h (Sho Hashimoto)" <sho-h@n...>
Date: Tue, 11 Sep 2012 21:01:10 +0900
Subject: [ruby-reference-manual:3278] [るりまプロジェクト - Bug #7004][Rejected] Array#<=> のメソッドシグネチャの分岐
Issue #7004 has been updated by sho-h (Sho Hashimoto). Status changed from Open to Rejected 1.8 でも 1.9 でも Array は Comparable を include してないですね。 1.8 でも実際にレシーバを配列にして試してみるとわかりますが、TypeError が発生します。 array.c を確認すると、rb_ary_cmp という関数が Array#<=> の実装なのですが、1.9.1 までは確かに -1 | 0 | 1 でした。1.9.2 以降では以下のコードが追加されており、引数である ary2 が配列以外であれば nil になり、戻り値も nil になります。 ary2 = rb_check_array_type(ary2); if (NIL_P(ary2)) return Qnil; なので、ミスではありません。 # nil の話や TypeError の話は追記してもいいかもしれませんね。 ---------------------------------------- Bug #7004: Array#<=> のメソッドシグネチャの分岐 https://bugs.ruby-lang.org/issues/7004#change-29244 Author: pypypy567 (py _) Status: Rejected Priority: Normal Assignee: Category: Target version: reporter: ruby_version: Array#<=> のメソッドシグネチャは #@since 1.9.2 --- <=>(other) -> -1 | 0 | 1 | nil #@else --- <=>(other) -> -1 | 0 | 1 #@end となっているのですが、試してみると 1.8 系でも String <=> Fixnum とかやると nil が返ります。 Comparable を見ると #@since 1.8.0 * self と other が比較できない場合は nil #@end となっています。 ただのミスでしょうか? -- http://bugs.ruby-lang.org/ -- ML: ruby-reference-manual@m... Info: http://QuickML.com/
3277 2012-09-11 11:35 [redmine@r... ] [るりまプロジェクト - Bug #7004][Open] Array#<=> のメソッドシグネチャの分岐 -> 3278 2012-09-11 14:01 ┣[sho-h@n... ] [るりまプロジェクト - Bug #7004][Rejected] Array#<=> のメソッドシグネチャの分岐 3279 2012-09-11 23:34 ┣[redmine@r... ] [るりまプロジェクト - Bug #7004] Array#<=> のメソッドシグネチャの分岐 3280 2012-09-12 17:53 ┣[sho-h@n... ] [るりまプロジェクト - Bug #7004] Array#<=> のメソッドシグネチャの分岐 3281 2012-09-12 18:40 ┗[redmine@r... ] [るりまプロジェクト - Bug #7004] Array#<=> のメソッドシグネチャの分岐