[前][次][番号順一覧][スレッド一覧]

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#<=> のメソッドシグネチャの分岐