2011年7月8日金曜日

Scala 実践プログラミング エラッタ報告

評価がはっきりと分かれる話題のScalaの本ですが、個人的には良いレベル感だったと思います。
で、読んでいる中でエラッタを色々発見したので報告したいと思います。
なお、これは正式な正誤表ではありませんのであしからず。
正式な正誤表はこちらから。

7月7日時点で正誤表に載っているものは省きました。

ページ 該当箇所
67 一番下 代入したします。 代入します。
115 3行目 上記の例のように同一の演算子を複数の引数型でオーバーロードしている場合は、それぞれの返り値型は同じ型であることに注意してください。 ※この記述は誤り
120 1行目 repeat(3){ prittln(“Hello”) } repeat(3){ println(“Hello”) }
120 2行目 repateオブジェクト repeatオブジェクト
127 下部ソースコード def printIsEmpty( his: { def isEmpty:Boolean } ) = his.isEmpty def printIsEmpty( his: { def isEmpty:Boolean } ) = println( his.isEmpty )
141 真ん中辺り 詳しい使い方は、TaillCallsのAPIリファレンス 詳しい使い方は、TailCallsのAPIリファレンス
180 下から6行目 DelyedInitトレイト DelayedInitトレイト
187 ソースコード中のコメント2箇所 sageAgeメソッド sameAgeメソッド
198 真ん中ソースのすぐ上 以下のようなhelloworld.scalaというファイルを作成し 以下のようなHelloWorld.scalaというファイルを作成し
224 9行目 verifyConsuructor verifyConstructor
224 下から14行目 // 範囲の日付に対してincludesはfalseを返す // 範囲の日付に対してincludesはfalseを返す
226 下から11行目 例えば、DateRagngeクラスの 例えば、DateRangeクラスの
233 真ん中辺り 簡単なWwbアプリケーション 簡単なWebアプリケーション
238 Modelの項目の5行目 基本的なCURD操作 基本的なCRUD操作
243 説明の下から5行目 settter/getterとして利用 setter/getterとして利用
245 真ん中の少し上 次の.item *” #> item.map{ … } 次の ".item *” #> item.map{ … }
247 真ん中辺り procesメソッドはcreateメソッドの processメソッドはcreateメソッドの
269 下から2行目 verticlesをNilに設定する verticesをNilに設定する
277 3行目 implicit paramter implicit parameter
286 上部の表 ipmlicit parameter implicit parameter
288 説明の下から2行目 implicit paramter implicit parameter
298 下から3行目 Orderedクラスの側から Orderedトレイトの側から
302 2つ目のソースコード val key_char = "[^,]*".r val key_char = "[^:]*".r
306 ソースコード中2箇所 counts count
309 2つ目のソースコード2行目 val content;String val content:String
309 2つ目のソースのすこし下 内容が変更されていない状態 内容が変更されていない状態
310 1つ目のソースのすぐ上 次のようなクラス定義になるでしょう。 次のようなクラス定義になるでしょう。
317 真ん中の少し上 元のScalacBuidlerのものを 元のScalacBuilderのものを
318 Noteの少し上 Generalized Type Constrait Generalized Type Constraints
324 下のほうの④ @deprecateアノテーション @deprecatedアノテーション
329 ソースコードのすぐ上 option型とのimplicit conversion  Option型とのimplicit conversion
373 説明4行目 Yield[A]のコンストラクタは、 Yielded[A]のコンストラクタは、
373 下から11行目 コードの中で、yield(a)のように コードの中で、yields(a)のように
374 真ん中辺り 中断された場合はYield(k, v)が、 中断された場合はYielded(k, v)が、
381 真ん中少し下 kの引数型とshiftの返り値型が kの引数型とshiftの返り値型が
402 上から5行目 TraversableOncde TraversableOnce

 

エラッタじゃないんだけど、個人的に気になったところ

ページ 気になったこと
17 Char型の説明に「16ビット符号なし整数」を加えてもいいんじゃないかなぁ。
17 Short~Longが単位ビットなんだから、Byteも8ビットって書いて欲しい。
152 偶数は x::filterEvens(xs) って書いてあるのに、奇数は x::(filterOdds(xs)) って括弧でくくってある。
199 「> scalac -d classes helloworld.scala」ファイル名が小文字なのが気になる。
200 やっぱり「helloworld.scala」のファイル名が小文字なのが気になる。
306 タイトルが「Generalized Type Constraints」だけど、すぐ下が「Generalized Type constraints」になってる。
309 前ページのタイトルが「Phantom Types」だけど冒頭が「Phantom types」になってる。
328 文字列の比較をequalsメソッドでやってる。
358 ページ内で「クライエント」と「クライアント」の表記揺れがある。

 

教えて欲しいこと

260ページ目のソースコード、package宣言とかplayやmodelsパッケージのimport宣言がないんだけど、大丈夫?

329ページ目。Maybeとかのサンプルコード(実装内容)が全部コメントになってるのはどういう意図?

 

いじょ!とりあえず気付けたのはこれくらい。まだあるかもしれない。
それではでは。

0 件のコメント:

コメントを投稿