実践Scala入門

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

お詫びと訂正(正誤表)

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2019年7月4日最終更新)

第2章 p.74:3つめのコードブロック1行目

for (e <- List(1, 2, 3) yield {

for (e <- List(1, 2, 3)) yield {

第2章 p.96:2つめのコードブロック1行目

def sumString(list: List[String]): Double = list.foldLeft(""){

def sumString(list: List[String]): String = list.foldLeft(""){

(以下2019年5月17日更新)

第7章 P.228:下部コードブロック7行目

Mockito.mock(classOf[UserRepository])

Mockito.mock(classOf[SpreadsheetReader])

(以下2019年3月5日更新)

第2章 P.71:上部のコードブロック2行目

num: Int = 50
num: Int = 40

第2章 P.74:上部のコードブロック全体


scala> for (x <- 1 to 3; y <- 1 until 3 if x != y) {
     | println("x = " + x + " y = " + y)
     | }
x = 1 y = 2
x = 2 y = 1
x = 3 y = 1
x = 3 y = 2

第2章 P.97:上部のコードブロック全体


scala> def sum[T](list: List[T])(adder: Adder[T]): T = {
     | list.foldLeft(adder.zero){(x, y) => adder.plus(x,y)
     | }


scala> def sum[T](list: List[T])(adder: Adder[T]): T = {
     | list.foldLeft(adder.zero){(x, y) => adder.plus(x,y)}
     | }

(以下2018年11月26日更新)

第2章 P.98 上部のコードブロック2行目(IntAdderの実装)


def zero: Int


def zero: Int = 0

第4章 P.131 図4-5「takeなどで要素を取り出す」

正

第4章 P.132 図4-6「dropなどで要素を捨てる」

正

第5章 P.159 コードブロックの先頭


コードブロックの先頭に以下の行を追加
var i = 0

第7章 P.218 コードブロック全体


import scala.collection.mutable

trait ConfigManager {

  val envPrefix: String
  val config: mutable.Map[String, String]

  def readConfig(key: String): Option[String] =
    config.get(s"$envPrefix.$key")

  def upsertConfig(key: String, value: String): Unit =
    config.update(s"$envPrefix.$key", value)

  def numOfConfig(): Int = config.size

  def clearAll(): Unit = config.clear()
}


第8章 P.252 下部コードブロック1行目


def if__[A](condition: Boolean)(thenClause: => A)(elseClause: => A): A


def if__[A](condition: Boolean)(thenClause: => A)(elseClause: => A): A = {

第8章 P.254 2つめのコードブロック4行目


case _ (_) =>


case _ =>

第8章 P.255 コードブロック4行目


case __) =>


case _ =>

第8章 P.256 上部コードブロック8行目


def zero: Int


def zero: Int = 0

第8章 P.258 上部コードブロック2行目


val println(any.asInstanceOf[String].substring(1))


println(any.asInstanceOf[String].substring(1))

(以下2018年11月8日更新)

第2章 p.64:上部のコードブロック全体(Shopクラスの実装)


class Staff(val name: String, val age: Int)

class Shop(val name: String) extends AnyRef with Enumerable[Staff] with
Namable {
  private[this] val staffs: List[Staff] = List(new Staff("太郎", 18), new
Staff("花子", 20))

  // foreachの実装を提供する
  override def foreach[B](f: Staff => B): Unit = staffs.foreach(f)
  ...
}
(以下省略)

第4章 p.127:上部のコードブロック1行目および5行目のコメント


// immutableSeqは不変なSeq
scala> val immutableSeq = scala.collection.immutable.Seq(1, 2, 3)
immutableSeq: scala.collection.immutable.Seq[Int] = List(1, 2, 3)

// mutableSeqは可変なSeq
scala> val mutableSeq = scala.collection.mutable.Seq(1, 2, 3)
mutableSeq: scala.collection.mutable.Seq[Int] = ArrayBuffer(1, 2, 3)

第6章 p.187:コードブロック4行目


version := "0.1.0-SNAPSHOT",


version := "0.1",


(以下2018年10月31日更新)

第2章 P.62 コードブロック7行目(mapメソッドの実装)

var members = Buffer.empty[A]

var members = Buffer.empty[B]

第4章 P.137 図4-12左上の数字(畳み込みの最後の値)

3
1