Scalaスケーラブルプログラミング第2版
5,060円(本体 4,600円+税10%)
- 品種名
- 書籍
- 発売日
- 2011/9/27
- ページ数
- 744P(予定)
- サイズ
- B5変型判
- 著者
- Martin Odersky、Lex Spoon、Bill Venners 著/長尾高弘 翻訳/羽生田栄一 監修/水島宏太 特別寄稿
- ISBN
- 9784844330844
言語設計者自らの執筆によるプログラミングバイブル! Ver.2.8に全面対応。2.9の解説を追加収録
Scalaは、オブジェクト指向と関数型を絶妙に融合したプログラミング言語。本書では、Scala言語の設計者自らが、Scalaの考え方と使い方をステップ・バイ・ステップで解説。第2版では、バージョン2.8に合わせた内容に変更。特にコレクションAPIについては大幅に解説を追加。さらに日本語版の特別付録として、並列コレクションなどバージョン2.9の解説を収録。本書は、Scalaプログラミングの手法と思想に焦点を当てたまさにバイブル本の第2版。
【第2版での変更点】
◎バージョン2.8に基づく内容とサンプル
-コレクションライブラリ
-構造的サブ型
-implicitsの新しいルール
-パッケージオブジェクト
-名前付きパラメーターとデフォルトパラメーター
-ケースクラスでのcopyメソッド
◎バージョン2.9での新機能
-並列コレクション .etc
【第2版での変更点】
◎バージョン2.8に基づく内容とサンプル
-コレクションライブラリ
-構造的サブ型
-implicitsの新しいルール
-パッケージオブジェクト
-名前付きパラメーターとデフォルトパラメーター
-ケースクラスでのcopyメソッド
◎バージョン2.9での新機能
-並列コレクション .etc
「読者アンケートに答える」「読者プレゼントに応募」の場合もこちらをご利用ください。
書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。
学校・法人一括購入に関するお問い合わせはこちらへ。
関連書籍
ダウンロード
本製品の読者さまを対象としたダウンロード情報はありません。
お詫びと訂正
誤記のためにご迷惑をおかけし、誠に申し訳ございません。
- 41ページ ページ上の1行コード
- [誤]
class MyClass(index: Int, name: String) - [正]
class MyClass(var index: Int, var name: String) {} - 【 第2刷にて修正 】
- [誤]
- 66ページ 表の下から4行目のセルに、※で始まる注釈を追加
- [誤]
thrillリストに含まれる長さが4以外のすべての要素を順に並べたリストを返す(List("until")が返される) - [正]
thrillリストに含まれる長さが4以外のすべての要素を順に並べたリストを返す(List("until")が返される)
※ Scala 2.8.1では非推奨メソッドのため警告が表示される。代わりにfilterNotの使用を推奨。 - 【 第2刷にて修正 】
- [誤]
- 66ページ 表の下から2行目のセルに、※で始まる注釈を追加
- [誤]
thrillリストのすべての要素から、先頭文字を小文字にしてアルファベット順に並べ替えた形のリストを作って返す(List("fill", "until", "Will"))が返される - [正]
thrillリストのすべての要素から、先頭文字を小文字にしてアルファベット順に並べ替えた形のリストを作って返す(List("fill", "until", "Will"))が返される
※ Scala 2.8.1では非推奨メソッドのため警告が表示される。代わりにsortWithの使用を推奨。 - 【 第2刷にて修正 】
- [誤]
- 69ページ 第2段落の1行目以降を変更
- [誤]
ミュータブルとイミュータブルの両方の集合が+メソッドを持っているが、動作には違いがある。 - [正]
ミュータブルとイミュータブルの両方の集合が+メソッドを持っており、2つの+メソッドは同じように動作する。 - 【 第2刷にて修正 】
- [誤]
- 69ページ 第2段落の2行目から始まる一文を削除
- [誤]
ミュータブルな集合は自分自身に要素を追加するのに対し、イミュータブルな集合は要素が追加された新しい集合を作って返す。 - [正]
【削除】 - 【 第2刷にて修正 】
- [誤]
- 84ページ ページ下の※2の最後の一文を変更(scala.collection.jclパッケージは2.8で削除されたため)
- [誤]
また、scala.collection.jclのWeakHashMapのような弱いマップを使い、 - [正]
また、scala.collection.mutable.WeakHashMapのような弱いマップを使い、 - 【 第2刷にて修正 】
- [誤]
- 88ページ リスト4.4のリスト(アミカケ)の直下に注釈を追加
- [誤]
【以下の注釈を追加】 - [正]
※ Scala 2.9以降、scala.Applicationトレイトは非推奨であり、scala.Appトレイトが推奨されている。 - 【 第2刷にて修正 】
- [誤]
- 126ページ ページ末尾の以下の一文を削除
- [誤]
第21章では、Rationalのコンパニオンオブジェクトに暗黙の型変換メソッドの定義を与え、クライアントプログラマーがRationalを操作しているときに、それらのメソッド定義を簡単にスコープ内に入れられるようにする方法を学ぶ。 - [正]
【削除】(暗黙の型変換メソッドの定義は与えるものの、上記のように機能しないため) - 【 第2刷にて修正 】
- [誤]
- 188ページ 第2段落の2行目
- [誤]
この関係を合成と呼ぶのは、ArrayElementがArray[String]クラスから - [正]
この関係を合成と呼ぶのは、ArrayElementクラスがArray[String]から - 【 第2刷にて修正 】
- [誤]
- 201ページ ページ末尾のコード(リスト10.12の16行目)
- [誤]
def contents = Array.fill(height, line) - [正]
def contents = Array.fill(height)(line) - 【 第3刷にて修正 】
- [誤]
- 203ページ リスト10.13の下から12行目
- [誤]
var right = ……… - [正]
val right = ……… - 【 第2刷にて修正 】
- [誤]
- 203ページ リスト10.13の下から5行目
- [誤]
var bot = ……… - [正]
val bot = ……… - 【 第2刷にて修正 】
- [誤]
- 221ページ このページの最終行
- [誤]
型イレージャー - [正]
型消去 - 【 第5刷にて修正 】
- [誤]
- 235ページ ページ中央より少し下のコードの4行目
- [誤]
// コンパイルエラー。Shipはスコープ内にない - [正]
// bobsrockets.Shipと書かなくてよい - 【 第2刷にて修正 】
- [誤]
- 243ページ 第4段落の2行目
- [誤]
リスト13.12のLegOfJourneyクラスの変数distanceには、 - [正]
リスト13.12のLegOfJourneyクラスのdistance値には、 - 【 第2刷にて修正 】
- [誤]
- 249ページ リスト14.2のコードの下から3行目
- [誤]
var right = ……… - [正]
val right = ……… - 【 第2刷にて修正 】
- [誤]
- 249ページ 第4段落の1行目以降
- [誤]
表明(およびensuringチェック)は、Java仮想マシンの-eaと-daのコマンド行オプションで有効・無効を切り替えられる。これを有効にすると、表明は、ソフトウェアの実行中に実際に現れるデータを使った小さなテストとして働く。 - [正]
表明は、コンパイル時に無効にすることができる。scalacコマンドに-Xdisable-assertionsオプションを指定すればよい。 -
備考:
【「訂正前」のようには機能しない】
- 【 第2刷にて修正 】
- [誤]
- 250ページ リスト14.3のリスト(アミカケ)の直下に注釈を追加
- [誤]
【以下の注釈を追加】 - [正]
※ リスト14.3のように「import Element.elem」と記述した場合、このimport文よりも前に「import org.stairwaybook.layout.Element」が必要である。 - 【 第2刷にて修正 】
- [誤]
- 261ページ 15.1.1の第4段落の2行目
- [誤]
valプレフィックスを付ける。 - [正]
valプレフィックスを付ける(これはケースクラスに限らない)。 - 【 第2刷にて修正 】
- [誤]
- 263ページ 15.1.3の第1段落の4行目
- [誤]
第1に、matchはScalaの式であり、必ず結果値を返す。 - [正]
第1に、matchはScalaの式であり、式の評価時に例外が投じられなければ、必ず結果値を返す。 - 【 第2刷にて修正 】
- [誤]
- 263ページ 15.1.2の本文末尾から2行目
- [誤]
されにこれとは - [正]
さらにこれとは - 【 第4刷にて修正 】
- [誤]
- 287ページ リスト15.22のコードの下から2行目
- [誤]
for (val e <- Array… - [正]
for (e <- Array… - 【 第4刷にて修正 】
- [誤]
- 302ページ 本文下から2行目(ページ末尾のコードの上)
- [誤]
この場合は、elementsメソッドを使えばよい。 - [正]
この場合は、iteratorメソッドを使えばよい。 - 【 第4刷にて修正 】
- [誤]
- 310ページ ページ上のアミカケ部分の下の本文2行目
- [誤]
詳しくは、第22章で説明する。 - [正]
詳しくは、16.10節で説明する。 - 【 第2刷にて修正 】
- [誤]
- 333ページ 上から3つ目のアミカケ下の本文3行目
- [誤]
元のコレクションのelements呼び出しによって - [正]
元のコレクションのiterator呼び出しによって -
備考:
(elementsは、Scala 2.7まで使われていた古いAPI)
- 【 第4刷にて修正 】
- [誤]
- 365ページ 1行目
- [誤]
SがTのサブ型だとすると - [正]
TがSのサブ型だとすると -
備考:
第2版2刷と3刷に対する訂正です。1刷では[正]で表記されています。
(なお、用語としては「サブ型」よりも「部分型」が多く使用されています)
- 【 第4刷にて修正 】
- [誤]
- 435ページ 上から1つ目のアミカケ部分
- [誤]
package scala.collection.immutable - [正]
package scala.collection.mutable - 【 第2刷にて修正 】
- [誤]
- 454ページ 図24.1
- [誤]
Traversableの直下にSetとMapが位置するようになっていますが、これは間違いです。 - [正]
正しくは、以下の図のようにTraversableの直下にIterableがあり、Iterableの直下にSeq、Set、Mapがあります。 -
- [誤]
- 474ページ 2行目末尾から3行目頭
- [誤]
m += (key > value) - [正]
m += (key -> value) - 【 第4刷にて修正 】
- [誤]
- 520ページ リスト25.3の2行目
- [誤]
(implicit bf: CanBuildFrom[B, That, This]): That = { - [正]
(implicit bf: CanBuildFrom[This, B, That]): That = { - 【 第2刷にて修正 】
- [誤]
- 520ページ リスト25.3の1行目
- [誤]
def map[B, That](p: Elem => B) - [正]
def map[B, That](f: Elem => B) - 【 第5刷にて修正 】
- [誤]
- 520ページ リスト25.3の4行目
- [誤]
for (x <this) b += f(x) - [正]
for (x <- this) b += f(x) - 【 第5刷にて修正 】
- [誤]
- 532ページ ページ上リストの9行目
- [誤]
(for (v <value.iterator) yield ("", v)) ++ - [正]
(for (v <- value.iterator) yield ("", v)) ++ - 【 第5刷にて修正 】
- [誤]
- 555ページ 27.3.5の4行目
- [誤]
警告メッセージ - [正]
エラーメッセージ - 【 第2刷にて修正 】
- [誤]
- 608ページ 31.1.3の最終段落
- [誤]
これとは対照的に、すでにAppという名前のクラスがある場合、コンパイラーは定義されたAppクラスのメンバーを保持するために、AppというJ a v aクラスを作る。この場合、同名のシングルトンオブジェクトに対する呼び出し転送用メソッドは追加されない。Javaコードは、静的フィールドのMODULE$を介してシングルトンにアクセスしなければならない。 - [正]
【削除】 - 【 第2刷にて修正 】
- [誤]
- 664ページ コードの1行目
- [誤]
def | (q: => Parser[T]) = new Parser[T] { - [正]
def | [U >: T]( q: => Parser[U]) = new Parser[U] { - 【 第2刷にて修正 】
- [誤]
- 673ページ リスト34.1のリスト(アミカケ)直下に注釈を追加
- [誤]
【以下の注釈を追加】 - [正]
※ SimpleGUIApplicationの使用は非推奨となったため、SimpleSwingApplicationを使うべきである。 - 【 第2刷にて修正 】
- [誤]
- 702ページ 点線枠内のリード文の下から2行目
- [誤]
バイナリ非互換であること - [正]
バイナリ互換であること - 【 第4刷にて修正 】
- [誤]
- 703ページ 本文の下から4行目末尾、下から2行目冒頭
- [誤]
1~30 - [正]
1~35 - 【 第4刷にて修正 】
- [誤]
- 715ページ [値渡しパラメーター]の項目の2行目(1段目の15行目)
- [誤]
(X:=Int) - [正]
(X: Int) - 【 第4刷にて修正 】
- [誤]
- 719ページ 右段6行目以降
- [誤]
filterメソッドがnumsの各要素をレシーバーとしてfilterメソッドを呼び出している - [正]
numsをレシーバとしてfilterメソッドを呼び出した結果、numsの各要素に対して、filterに渡された無名関数が呼び出される - 【 第4刷にて修正 】
- [誤]
- 719ページ 1段目の[存在型]の解説
- [誤]
Array[T]forSome{typeT} - [正]
Array[T] forSome { type T } -
備考:
一連の語句のそれぞれの個所に対して、半角アキを1つの語句で計5つ追加。
- 【 第4刷にて修正 】
- [誤]
- 719ページ 左側の段の[セレクター]の解説
- [誤]
{case_=>} - [正]
{case _ =>} -
備考:
半角スペースが2個所抜けています。
- 【 第4刷にて修正 】
- [誤]
お問い合わせ
書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。