Skip to content

Commit

Permalink
Update scala-library to 2.13.16
Browse files Browse the repository at this point in the history
  • Loading branch information
scala-text-bot[bot] authored and xuwei-k committed Jan 16, 2025
1 parent 60288e0 commit b070350
Show file tree
Hide file tree
Showing 13 changed files with 31 additions and 31 deletions.
2 changes: 1 addition & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ ThisBuild / onChangedBuildSource := ReloadOnSourceChanges

name := "textbook"

scalaVersion := "2.13.15"
scalaVersion := "2.13.16"

crossScalaVersions += "3.6.2"

Expand Down
2 changes: 1 addition & 1 deletion src/advanced-trait-di.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
- この他のストレージ機能とパスワード機能のメソッドは内部的に使われるのみである

上記のプログラムでは実際に動かすことができるように[ScalikeJDBC](https://github.com/scalikejdbc/scalikejdbc)というデータベース用のライブラリとjBCryptというパスワースのハッシュ値を計算するライブラリが使われていますが、実装の詳細を理解する必要はありません。
既にメソッドの実装を説明したことがある場合は実装を省略し[`???`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/Predef.scala#L344)で書くことがあります。
既にメソッドの実装を説明したことがある場合は実装を省略し[`???`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/Predef.scala#L344)で書くことがあります。

## リファクタリング:公開する機能を制限する

Expand Down
2 changes: 1 addition & 1 deletion src/basic.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ $ sbt console
とコマンドを打ってみましょう。

```
Welcome to Scala version 2.13.15 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45).
Welcome to Scala version 2.13.16 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45).
Type in expressions to have them evaluated.
Type :help for more information.
Expand Down
26 changes: 13 additions & 13 deletions src/collection.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ mutableなコレクションを効果的に使えばプログラムの実行速
- `Map`(immutable)・`Map`(mutable)
- `Set`(immutable)・ `Set`(mutable)

## [Array](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/Array.scala)
## [Array](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/Array.scala)

まずは大抵のプログラミング言語にある配列です。

Expand Down Expand Up @@ -96,7 +96,7 @@ arr

<!-- end answer -->

### [Range](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/Range.scala)
### [Range](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/Range.scala)

`Range`は範囲を表すオブジェクトです。`Range`は直接名前を指定して生成するより、`to`メソッドと`until`メソッドを用いて呼びだすことが多いです。また、`toList`メソッドを用いて、その範囲の数値の列を後述する`List`に変換することができます。では、早速REPLで`Range`を使ってみましょう。

Expand All @@ -112,7 +112,7 @@ arr

`to`は右の被演算子を含む範囲を、`until`は右の被演算子を含まない範囲を表していることがわかります。また、`Range``toList`で後述する`List`に変換することができることもわかります。

### [List](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/List.scala)
### [List](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/List.scala)

さて、導入として大抵の言語にある`Array`を出しましたが、Scalaでは`Array`を使うことはそれほど多くありません。代わりに`List`
`Vector`といったデータ構造をよく使います(`Vector`については後述します)。`List`の特徴は、一度作成したら中身を
Expand All @@ -132,9 +132,9 @@ lst(0) = 7

### Nil:空のList

まず最初に紹介するのは`Nil`です。Scalaで空の`List`を表すには`Nil`というものを使います。Rubyなどでは`nil`は言語上かなり特別な意味を持ちますが、Scalaではデフォルトでスコープに入っているということ以外は特別な意味はなく[単にobjectです](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/List.scala#L662)。Nilは単体では意味がありませんが、次に説明する`::`と合わせて用いることが多いです。
まず最初に紹介するのは`Nil`です。Scalaで空の`List`を表すには`Nil`というものを使います。Rubyなどでは`nil`は言語上かなり特別な意味を持ちますが、Scalaではデフォルトでスコープに入っているということ以外は特別な意味はなく[単にobjectです](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/List.scala#L662)。Nilは単体では意味がありませんが、次に説明する`::`と合わせて用いることが多いです。

### [:: - Listの先頭に要素をくっつける](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/List.scala#L97)
### [:: - Listの先頭に要素をくっつける](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/List.scala#L97)

`::`(コンスと読みます)は既にある`List`の先頭に要素をくっつけるメソッドです。これについては、REPLで結果をみた方が早いでしょう。

Expand Down Expand Up @@ -742,7 +742,7 @@ List(1, 2, 3, 4) :+ 5 // 注意!末尾への追加は、Listの要素数分か

`mkString`をはじめとした`List`の色々なメソッドを紹介してきましたが、実はこれらの大半は`List`特有ではなく、既に紹介した`Range``Array`、これから紹介する他のコレクションでも同様に使うことができます。何故ならばこれらの操作の大半は特定のコレクションではなく、コレクションのスーパータイプである共通のトレイト中に宣言されているからです。もちろん、`List`に要素を加える処理と`Set`に要素を加える処理(`Set`に既にある要素は加えない)のように、中で行われる処理が異なることがあるので、その点は注意する必要があります。詳しくは[ScalaのAPIドキュメント](https://www.scala-lang.org/api/current/index.html)を探索してみましょう。

### [Vector](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/Vector.scala)
### [Vector](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/Vector.scala)

`Vector`は少々変わったデータ構造です。`Vector`は一度データ構造を構築したら変更できないimmutableなデータ構造
です。要素へのランダムアクセスや長さの取得、データの挿入や削除、いずれの操作も十分に高速にできる比較的
Expand All @@ -763,11 +763,11 @@ Vector(1, 2, 3, 4, 5).updated(2, 5)
`Map`はキーから値へのマッピングを提供するデータ構造です。他の言語では辞書や連想配列と呼ばれたりします。
Scalaでは`Map`として一度作成したら変更できないimmutableな`Map`と変更可能なmutableな`Map`の2種類を提供しています。

### [`scala.collection.immutable.Map`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/Map.scala)
### [`scala.collection.immutable.Map`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/Map.scala)

Scalaで何も設定せずにただ`Map`と書いた場合、`scala.collection.immutable.Map`が使われます。その名の通り、一度
作成すると変更することはできません。内部の実装としては主に[`scala.collection.immutable.HashMap`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/HashMap.scala)
[`scala.collection.immutable.TreeMap`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/TreeMap.scala)の2種類がありますが、通常は`HashMap`が使われます。
作成すると変更することはできません。内部の実装としては主に[`scala.collection.immutable.HashMap`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/HashMap.scala)
[`scala.collection.immutable.TreeMap`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/TreeMap.scala)の2種類がありますが、通常は`HashMap`が使われます。

```scala mdoc:nest
val m = Map("A" -> 1, "B" -> 2, "C" -> 3)
Expand Down Expand Up @@ -807,8 +807,8 @@ Set(1, 1, 2, 3, 4)
### `scala.collection.immutable.Set`

Scalaで何も設定せずにただ`Set`と書いた場合、`scala.collection.immutable.Set`が使われます。immutableな`Map`の場合と
同じく、一度作成すると変更することはできません。内部の実装としては、主に [`scala.collection.immutable.HashSet`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/HashSet.scala)
[`scala.collection.immutable.TreeSet`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/immutable/TreeSet.scala) の2種類がありますが、通常は`HashSet`が使われます。
同じく、一度作成すると変更することはできません。内部の実装としては、主に [`scala.collection.immutable.HashSet`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/HashSet.scala)
[`scala.collection.immutable.TreeSet`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/immutable/TreeSet.scala) の2種類がありますが、通常は`HashSet`が使われます。

```scala mdoc:nest
val s = Set(1, 2, 3, 4, 5)
Expand All @@ -820,8 +820,8 @@ s // 元のSetはそのまま

### `scala.collection.mutable.Set`

Scalaの変更可能な`Set``scala.collection.mutable.Set`にあります。主な実装としては、[`scala.collection.mutable.HashSet`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/mutable/HashSet.scala)
[`scala.collection.mutable.TreeSet`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/collection/mutable/TreeSet.scala)がありますが、通常は`HashSet`が使われます。
Scalaの変更可能な`Set``scala.collection.mutable.Set`にあります。主な実装としては、[`scala.collection.mutable.HashSet`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/mutable/HashSet.scala)
[`scala.collection.mutable.TreeSet`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/collection/mutable/TreeSet.scala)がありますが、通常は`HashSet`が使われます。

```scala mdoc:nest
import scala.collection.mutable
Expand Down
8 changes: 4 additions & 4 deletions src/error-handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ Javaのエラー処理では例外が中心的な役割を担っていました

ここでは正常の値とエラー値のどちらかを表現できるデータ構造の紹介を通じて、Scalaの関数型のエラー処理の方法を見ていきます。

### [Option](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/Option.scala)
### [Option](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/Option.scala)

OptionはScalaでもっとも多用されるデータ型の1つです。
前述のとおりJavaのnullの代替として使われることが多いデータ型です。
Expand Down Expand Up @@ -485,7 +485,7 @@ for { i1 <- v1

<!-- end answer -->

### [Either](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/util/Either.scala)
### [Either](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/util/Either.scala)

Optionによりnullを使う必要はなくなりましたが、いっぽうでOptionでは処理が成功したかどうかしかわからないという問題があります。
Noneの場合、値が取得できなかったことはわかりますが、エラーの状態は取得できないので、使用できるのはエラーの種類が問題にならないような場合のみです。
Expand Down Expand Up @@ -634,7 +634,7 @@ f(g())
似たような挙動は高階関数を使えば書けるのですが、名前渡しパラメータのほうが簡潔な記述ができるという点でより優れています。


### [Try](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/util/Try.scala)
### [Try](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/util/Try.scala)

ScalaTryEitherと同じように正常な値とエラー値のどちらかを表現するデータ型です。
Eitherとの違いは、2つの型が平等ではなく、エラー値がThrowableに限定されており、型引数を1つしか取らないことです。
Expand Down Expand Up @@ -668,7 +668,7 @@ for {
} yield i1 * i2 * i3
```

#### [`NonFatal`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/util/control/NonFatal.scala)の例外
#### [`NonFatal`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/util/control/NonFatal.scala)の例外

`Try.apply`がcatchするのはすべての例外ではありません。
NonFatalという種類の例外だけです。
Expand Down
2 changes: 1 addition & 1 deletion src/example_projects/trait-example/build.sbt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
scalaVersion := "2.13.15"
scalaVersion := "2.13.16"

crossScalaVersions += "3.6.2"

Expand Down
2 changes: 1 addition & 1 deletion src/example_projects/trait-refactored-example/build.sbt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
scalaVersion := "2.13.15"
scalaVersion := "2.13.16"

crossScalaVersions += "3.6.2"

Expand Down
2 changes: 1 addition & 1 deletion src/function.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Scalaの関数

Scalaの関数は、他の言語の関数と扱いが異なります。Scalaの関数は単に
[`Function0`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/Function0.scala)[`Function22`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/Function22.scala) までのトレイトの無名サブクラスのインスタンスなのです。
[`Function0`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/Function0.scala)[`Function22`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/Function22.scala) までのトレイトの無名サブクラスのインスタンスなのです。

たとえば、2つの整数を取って加算した値を返す`add`関数は次のようにして定義することができます:

Expand Down
6 changes: 3 additions & 3 deletions src/implicit.md
Original file line number Diff line number Diff line change
Expand Up @@ -343,12 +343,12 @@ println(sum(List(Point(1, 2), Point(3, 4), Point(5, 6)))) // Point(9, 12)

型クラス:

* [Numeric[T]](https://www.scala-lang.org/api/2.13.15/scala/math/Numeric.html)
* [Numeric[T]](https://www.scala-lang.org/api/2.13.16/scala/math/Numeric.html)

型クラスのインスタンス:

* [IntIsIntegral](https://www.scala-lang.org/api/2.13.15/scala/math/Numeric$$IntIsIntegral$.html)
* [DoubleIsFractional](https://www.scala-lang.org/api/2.13.15/scala/math/Numeric$$DoubleIsFractional$.html)
* [IntIsIntegral](https://www.scala-lang.org/api/2.13.16/scala/math/Numeric$$IntIsIntegral$.html)
* [DoubleIsFractional](https://www.scala-lang.org/api/2.13.16/scala/math/Numeric$$DoubleIsFractional$.html)

<!-- end answer -->

Expand Down
2 changes: 1 addition & 1 deletion src/object.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ object <オブジェクト名> extends <クラス名> (with <トレイト名>)*
}
```

となります。Scalaでは標準で[`Predef`という`object`](https://github.com/scala/scala/blob/v2.13.15/src/library/scala/Predef.scala)が定義・インポートされており、これは最初の使い方に当てはまります。 `println("Hello")` となにげなく
となります。Scalaでは標準で[`Predef`という`object`](https://github.com/scala/scala/blob/v2.13.16/src/library/scala/Predef.scala)が定義・インポートされており、これは最初の使い方に当てはまります。 `println("Hello")` となにげなく
使っていたメソッドも実は` Predef` のメソッドなのです。 `extends` でクラスを継承、 `with` でトレイトをmix-in
可能になっているのは、オブジェクト名を既存のクラスのサブクラス等として振る舞わせたい場合があるからです。Scala
の標準ライブラリでは、 `Nil` という `object` がありますが、これは `List` の一種として振る舞わせたいため、
Expand Down
2 changes: 1 addition & 1 deletion src/sbt-compile-execute.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ sandbox

```scala
// build.sbt
scalaVersion := "2.13.15"
scalaVersion := "2.13.16"

scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked", "-Xlint")
```
Expand Down
4 changes: 2 additions & 2 deletions src/sbt-install.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ $ sbt console
[info] Done updating.
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.13.15 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45).
Welcome to Scala version 2.13.16 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45).
Type in expressions to have them evaluated.
Type :help for more information.
Expand All @@ -138,7 +138,7 @@ scala> :quit
_build.sbt_というファイルを作成し、

```scala
scalaVersion := "2.13.15"
scalaVersion := "2.13.16"
```

としてやると良いです。この_*.sbt_がsbtのビルド定義ファイルになるのですが、今はREPLに慣れてもらう
Expand Down
2 changes: 1 addition & 1 deletion src/test.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ name := "scalatest_study"

version := "1.0"

scalaVersion := "2.13.15"
scalaVersion := "2.13.16"

libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest-flatspec" % "3.2.19" % "test",
Expand Down

0 comments on commit b070350

Please sign in to comment.