「Rubyプログラミング入門」正誤表
2001.02.25変更
1刷正誤表
■p.xi (目次)
誤 2.10.2 プロセスとのパイプ:open、popen
正 2.10.2 プロセスとのパイプ:open、IO.popen
■p.23 10行目
誤 (日本語EUC)
正 (日本語EUC)
閉じ括弧を全角に。
■p.29 7行目
誤 最後の1文字
正 最後の1バイト
■p.33 下から2行目
誤 現す
正 表す
■p.34
表1.3
誤 \w 英数字のクラス
正 \w 英数字とアンダースコア(_)のクラス
最下行
/c$\n/ =~ "abc\n" #=>真
を追加
■p.36 表1.4
誤 push(x) 先頭に
正 push(x) 末尾に
誤 pop 先頭の
正 pop 末尾の
誤 shift 末尾の
正 shift 先頭の
誤 unshift 末尾に
正 unshift 先頭に
■p.39
4行目
誤 文字列をセパレータsepで挟んで
正 文字列を、セパレータsepを挟んで
10行目
誤 scan(/[^,]*/)
正 scan(/[^,]+/)
12行目
誤 scan(/[^,]*/)
正 scan(/[^,]+/)
12行目
誤 , kiwi"]
正 , "kiwi"]
■p41 図1.10 スコープ 最後の行
誤 p $f00
正 p $foo
■p.43 下から9行目
誤 print "key", "=>", val, "\n" …
正 print key, "=>", val, "\n" …
■p.48
5行目
誤 whileループが動き出して
正 if文で囲まれた部分が動き出して
9行目
誤 は、whileの繰り返しを
正 は、繰り返しを
■p.49
6行目
誤 のwhile文は
正 は
■p.59 「# 電光」のコード
each_byteの「中身」にインデント2をつける
■p.60 上から13行目
endのインデントを0に
■p.62 2.1.2節4行目
誤 @または$
正 @または@@または$
■p.75 2つ目の計算
誤 (1; 2) + 3 #=> 7
正 (1; 2) + 3 #=> 5
■p.81 2.3.2.5項4行目
誤 排他OR
正 排他的OR
■p.91 「2.4.6.3 フォーマット出力:%」1行目
誤 配列に並べられれたオブジェクト
正 配列に並べられたオブジェクト
■p.91 「2.4.6.3 フォーマット出力:%」2行目
誤 sprint
正 sprintf
■p.95 下から9行目
誤 得たフィールドの
正 得たいフィールドの
■p.97 2.4.8.4項
誤 "0123456789".delete("1-37-9") #=> "045"
正 "0123456789".delete("1-37-9") #=> "0456"
■p.98 2.4.8.6項
誤 "SUBjcect:".downcase #=> "subject:
正 "SUBject:".downcase #=> "subject:
誤 "SUBjcect:".upcase #=> "SUBJECT:
正 "SUBject:".upcase #=> "SUBJECT:
■p.100 2行目
誤 不動小数点数
正 浮動小数点数
■p.103 2,5.2.1項2行目
誤 配列の先頭(0番目)
正 配列の先頭(1番目)
■p.109 下から2行目
誤 0番目
正 1番目
■p.110 1行目
誤 1番目
正 2番目
■p.111
誤 2.5.7.2 削除:delete、delete_at、delete_if
正 2.5.7.2 削除:delete、delete_at、delete_if、clear
3行目
誤 xと一致するものがなければnilを返します。
正 xと一致するものがなければnilを返します。clearは配列を空([])にします。
■p.116 2.6.1.1項最下行
誤 foo[k]=val
正 foo[k]=v
■p.122 8行目
誤 open、popen、pipeなどのクラスメソッドで
正 open、IO.popen、IO.pipeなどで
■p.125 6行目
誤 ただし、この場合3個目以上の"\n"は
正 ただし、この場合3個目以降の"\n"は
■p.128 7行目
誤 読み込み
正 書き込み
■p.130
2.7.4.7項、見出し
誤 tel
正 tell
下から6行目
誤 SEEK_END
正 File::SEEK_END
■p.132 下から11行目
誤 例えば、WindowsのFAT32ファイルシステムでは、
正 例えば、WindowsやMS-DOSのファイルシステムでは、
■p.133
File::Statに備わったメソッドの一覧の4行目
誤 writable
正 writable?
下から3行目
誤 0777&&~mask
正 0777 & ~mask
■p.137 2.8.5.2項1行目
誤 IO.reopen
正 IO#reopen
■p.138 dir-rec_eacch.rb 内
誤 da.collect!{|x| dir == "." ? x : File.join(dir, x)}
正 da.collect!{|x| File.join(dir, x)} unless dir == '.'
■p.142 2.10.2節見出し
誤 プロセスとのパイプ:open
正 プロセスとのパイプ:open, IO.popen
■p.144 中ほど
誤 (一次停止)
正 (一時停止)
■p.150 下から4行目(表内)
誤 範囲が終端を含んでいるか否かの真偽
正 範囲が終端を含んでいるか否かの真偽(終端を含まないとき真)
■p.157 2.14.4.2項
この項削除
■p.158 グローバル変数の表内
誤 $, split()のフィールド区切り(デフォルトはnil)
正 $; splitの引数省略時のフィールド区切り(デフォルトはnil)
■p.159 表2.6 下から2行目
…print obj.inspect, "\n"に相当
円マークとして印刷されているのをバックスラッシュに。
■p.166 中ほど
誤 ensure節でretryを用いると
正 rescue節でretryを用いると
■p.187 3.2.5.1項
1行目
誤 オブジェクトobjを、print objとしても
正 オブジェクトobjを、print objやobj.displayとしても
4行目
誤 print(obj)、printf("%s", obj)、…
正 obj.display、print(obj)、printf("%s", obj)、…
■p.186
下から6行目
誤 標準添付ライブラリのMarshal
正 組み込みモジュールのMarshal
下から3行目
誤 require "marshal"
正 *この行削除*
■p.194 中ほど
誤 しかし特異メソッドなら可能です。
正 しかしメソッドの中で特異メソッドを定義することなら可能です。
■p.202 Columnの直上
誤 (現実にはスタック溢れでエラーが発生します)。
正 (現実にはスタック溢れで例外が発生します)。
■p.213
test-proc6.rbの最終行コメント
誤 #=> "bar"
正 #=> "bar" (この&については3.4.3参照)
test-proc7.rbの直前
誤 returnはそれが記述されたブロックが所属するメソッドからのreturn
正 returnはブロックが記述されているメソッドからのreturn
■p.221 4.2 節
7行目
誤 マッチするか?
正 マッチするか? 戻り値はマッチ開始位置またはnil
8行目
誤 同上
正 同上。戻り値はMatchDataオブジェクト(後述)またはnil
■p.222 表4.2の下
誤 これらのオプションは、Regexp("ruby", "em")のように、Regexpの第2引数として指定できます。
正 これらのオプションは、 Regexp.new("ruby", Regexp::IGNORECASE, "e")のように指定できます。第2引数には、Regexpの定数であるIGNORECASE(i)、EXTENDED(x)、MULTILINE(m)あるいはそれらの和、第3引数には文字コードの指定を与えます。
(詳細はaddendum.htmlで)
■p.225 表4.3
誤 \w 英数字
正 \w 英数字と_(オプションによって日本語の文字なども含む)
誤 \W 非英数字
正 \W 英数字と_以外
誤 \S 非空白文字
正 \S 空白文字以外(オプションによって日本語の文字なども含む)
誤 \D 非数字
正 \D 数字以外(オプションによって日本語の文字なども含む)
■p.226 表4.4
誤 \w [0-9A-Za-z] 英数字
正 \w [0-9A-Za-z_] 英数字とアンダースコア
誤 \W [^0-9A-Za-z] 英数字以外
正 \W [^0-9A-Za-z_] 英数字とアンダースコア以外
■p.232
下から2行目
誤 ところで、最後の$~はMatchDataという独立したクラスのオブジェクトです。
正 ところで、最後の$~はMatchDataという独立したクラスのオブジェクトです。この値は「正規表現.match(文字列)」の戻り値としても得ることができます。ただし、マッチしない場合の$~やmatchの戻り値はnilです。
表4.7
誤 $' マッチ直前の部分の文字列
正 $' マッチ直後の部分の文字列
■p.237 上から6行目、7行目
誤 str.scan(/\bs\w*?x\b/)
誤 とすべきで、これが
正 str.scan(/\bs\w*x\b/)
正 とすべきで、こちらは\w*?の?が不要になっています。これが
■p.237 2つ目のコード例およびそれに続く文章
誤 str.scan(/\bs\w*?x\b/)
正 str.scan(/\bs\w*x\b/)
誤 とすべきで、これが「sで始まりxで終わる単語の切り出し」の最終的な解になります。
正 とすべきで、こちらは\w*の後の?が不要になっています。これが「sで始まりxで終わる単語の切り出し」の最終的な解になります。
4.7.2 6行目
誤 つまり「[^xE]|E」で
正 つまり「[^xE]|E.」で
■p.254 図5.7
C1とC7の1と7を下付添え字に
キャプション
誤 Cnとm6の
正 C7とM6の
■p.270 図5.16
「+」の前に「・」を追加
■p.280 5行目
誤 medule_eval
正 module_eval
■p.282 図6.1
誤 Primes=Primes.new
正 primes=Primes.new
■p.305 calcsrv-fork.rbの下から2行目
sock.close
を追加(*)
■p.328 表8.5 下から2行目
誤 LOOPO
正 LOOP0
■p.329 表8.7 一番右側の列の3、4行目
3行目
誤 SR
正 RS
4行目
誤 S|R
正 R|S
■p.336 下から3行目
誤 UML
正 URL
■p.339 下から13行目
SET PATH=%PATH%;C:\usr\local\bin
円マークをバックスラッシュに。
■p.346 10行目
誤 Rubyのためのチャンネルです。
正 Rubyのためのチャネルです。
■巻末奥付
誤 哲学の道
正 「哲学の道」
■索引
1刷の索引に対する正誤表はありません。そのかわり、「クラス・モジュール・メソッド・演算子・関数・変数と定数・正規表現」などの項目を付け替えた次の索引のテキストファイルをご利用ください。
【新・索引】
「Rubyプログラミング入門」