はじめに
ScalaのAPIドキュメントが、初見で記号の羅列にしか見えなかったので、代表的なクラスやメソッドを調べてみました。ここではメソッド定義のそれぞれが何なのかだけで、メソッド自体の機能や詳しいことは書いてません。
ドキュメント
Option, Intなどのコアタイプはscalaリンクに、List, Vectorなどは scala.collection.immutableのリンクにあります。
例
List#foldLeft
def foldLeft[B](z: B)(op: (B, A) ⇒ B): B
-
[B]
: 型パラメータ- B型(StringやIntあるいはその他なにか、だがメソッド内では共通であること)
-
(z: B)
: 第一引数- zというB型の値を受け取る
-
(op: (B, A) ⇒ B)
: 第二引数- opという 「タプルの
(B型の値, A型の値)
を受け取ってB型
の値を返す」”関数”
- opという 「タプルの
-
メソッド(引数)(引数)
という引数の渡し方はカリー化
という手法 -
:B
: 戻り値の型
使用例: Listの要素を全部足す
scala> List(1,2,3,4).foldLeft(0) { (z,x) => z + x }
res148: Int = 10
scala> List(1,2,3,4).foldLeft(0) { _ + _ }
res149: Int = 10
List#map
final def map[B](f: (A) ⇒ B): List[B]
-
[B]
: 型パラメータ- B型(StringやIntあるいはその他なにか、だがメソッド内では共通であること)
(f: (A) => B)
: 第一引数: List[B]
: 戻り値の型(List[B]型)
使用例: Listの各要素に10を足す
scala> List(1, 2, 3).map(_ + 10)
res170: List[Int] = List(11, 12, 13)
Option
sealed abstract class Option[+A] extends Product with Serializable
-
sealed
: 同一ファイル内のクラス/トレイトしか継承出来ない -
abstract
: 具体的な実装をしない -
Option[+A]
: 変位指定(共変)での型パラメータ
Option#getOrElse
final def getOrElse[B >: A](default: ⇒ B): B
-
final def
: オーバーライド不可 -
[B >: A]
: 型パラメータ(下限境界あり)- BはAのスーパータイプでなければならない。B = Aはok。
- A、は
Option(引数で渡される値の型)
- 詳しくはこちら
-
(default: ⇒ B)
: 第一引数。-
=> B
は 名前渡し(call-by-name)という書き方 - 関数でも普通の値でも渡せる。また、実際に使われるまで評価されない
- 詳しくはこちら
-
-
: B
: 戻り値の型
使用例:
// 値が取れればそれを
scala> Option("foo").getOrElse("bar")
res175: String = foo
// なければbarを
scala> None.getOrElse("bar")
res176: String = bar
いやー
むずいっす。
なので間違ってたら