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

ruby-reference-manual:2849

From: Ippei Obayashi <ohai@k...>
Date: Wed, 5 Oct 2011 22:51:57 +0900
Subject: [ruby-reference-manual:2849] [るりまプロジェクト - Bug #5383] Enumerable#first のサンプルコード実行結果がおかしい


Issue #5383 has been updated by Ippei Obayashi.


組み込みのクラスで Enumerable なのは Array, Hash, Range, (Enumerable::)Enumerator, 
IO, Struct で Array と Range は first を持ち、IO は副作用を持つので例としてはあまり
適当ではない、Struct では例としてわかりやすくない、となると Enumerator が一番良いでしょうか。

  e = "abcd".each_byte
  e.first #=> 97
  e.first(2) #=> [97,98]
というのはどうでしょう。
----------------------------------------
Bug #5383: Enumerable#first のサンプルコード実行結果がおかしい
http://redmine.ruby-lang.org/issues/5383

Author: 4ge0 rb
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
reporter: 
ruby_version: 


写経して実行すると

  p h.first     #=> [:a, 1]
  p h.first(2)  #=> [[:a, 1], [:b, 2]]
  p {}.first    #=> NoMethodError: undefined method `first' for nil:NilClass
  p {}.first(2) #=> NoMethodError: undefined method `first' for nil:NilClass
になりました。
環境は、WindowsXP SP3、Ruby1.9.2 p290 (One-Click Ruby Installer for Windows)

1.9.2 p290のenum.cを流し読みしましたが、ドキュメントの誤字と思いこちらに報告しました。
  p [].first    #=> nil
  p [].first(2) #=> []
となるので {} と [] の間違いでしょうか?

http://doc.okkez.net/を見て、1.9.1と1.8.7のドキュメントも同じだなと確認し、それ以前の

ドキュメントは確認していません。

環境を変えて試してみた結果は下記の通りです。
Ubuntu環境は使い慣れていない中で行ったので意味の無い情報かもしれません。

1.
  プログラムの追加と削除から前述の1.9.2を削除して、ActiveScriptRubyのRuby1.9.2-p290をインストール

 #=> 結果同じ

2.
  1.の状態から1.9.2を削除後に、One-Click Ruby Installer for Windows の 1.8.7 p352をインストール

 #=> 結果同じ

3.
  VMwarePlayer3.1.4上に入れていたUbuntu 11.04のUbuntuソフトウェアセンターから
 Interpreter of object-oriented scripting language Ruby 1.9.2をインストール。
 irbで試す。
 #=> 結果同じ

4.
  3.の状態からUbuntuソフトウェアセンターでRuby1.9.2削除。
 端末からsudo apt-get install rubyで1.8.7をインストールして、irbで試す。
 #=>  h = {:a => 1, :b => 2, :c => 3} を実行すると {:b => 2, :c => 3, :a =>1} と出力される。
       p {}.first は NoMethodError のまま。


-- 
http://redmine.ruby-lang.org

--
ML: ruby-reference-manual@m...
Info: http://QuickML.com/

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