S-JIS[2010-12-03/2013-06-08] 変更履歴
Scalaでは、デフォルトで使える関数がいくつか用意されている。
これらはPredefオブジェクトで定義されており、暗黙にインポートされているのでデフォルトで呼べる。
単純な関数の定義。[2011-07-03]
| 関数名 | 説明 | 例 |
|---|---|---|
| manifest classManifest optManifest |
暗黙に定義されているManifest(ClassManifest)の実体(オブジェクト)を取得する。 | classManifest[Int] |
| identity | 引数の値をそのまま返す。 どちらかというと、関数の引数として利用する目的で存在する? →groupByでの使用例 |
identity(123) |
| implicitly | 暗黙に定義されている値を返す。 | |
| locally | 引数の値をそのまま返す。 ただし@inlineアノテーションが付いているので、インライン化されるかも? |
|
| ??? | NotImplementedErrorをスローする。Scala2.10以降。[2013-06-08] | def method = ??? |
値チェック系およびプログラムを終了させる関数。
| 関数名 | 説明 | 例 |
|---|---|---|
| error | エラー(RuntimeException)を発生させる。 Scala2.9で非推奨になった。 sys.errorを使う。[2011-07-03] |
error("エラーメッセージ") |
| exit | プログラムを終了する。exit()はexit(0)と同じ。 Scala2.9で非推奨になった。 sys.exitを使う。[2011-07-03] |
exit() |
| assert | 条件を満たさないとき、例外(AssertionError)を発生させる。 「条件」には、正当な値の範囲を記述する。 |
assert(n > 0) |
| assume | 条件を満たさないとき、例外(AssertionError)を発生させる。 (条件に関しては、assert()と同じ) 使い道はassert()と異なるらしいが…? |
assume(n > 0) |
| require | 条件を満たさないとき、例外(IllegalArgumentException)を発生させる。 「条件」には、正当な値の範囲を記述する。 引数チェックに使用する。 |
require(n > 0) |
| ensuring | 条件を満たさないとき、例外(AssertionError)を発生させる。 (assert()を使用している) 条件を満たしているとき、値を返す。(右記の例だと、aの値を返す) |
a.ensuring(b > 0) |
タプルを生成する関数。
| 関数名・型名 | 説明 | 例 |
|---|---|---|
| Pair | 値が2個のタプル。 | Pair(1, "one") |
| Triple | 値が3個のタプル。 | Triple(1, "one", "いち") |
| -> → |
値が2個のタプルを生成する。 全角文字の右矢印「→」も関数として定義されている! |
1 -> "one" |
| ただしnullに対しては直接は使用できない。[2011-03-05] 一旦Null以外の型に代入してからなら使える。 by Pomu0325さん |
×null -> 123 |
画面への表示と画面からの入力を行う関数。
実体はConsoleオブジェクトにあり、デフォルトではjava.lang.Systemの標準入出力(System.out・System.in)が使われる。
| 関数名 | 説明 | 例 |
|---|---|---|
| 画面(標準出力)へ表示する。改行なし。 | print("メッセージ") |
|
| println | 画面(標準出力)へ表示する。改行あり。 →使用例 |
println() |
| printf | 画面(標準出力)へ表示する。フォーマット指定。 →フォーマット文字列(Java) |
printf("%04d%n", 123) |
| format | 指定フォーマットで整形された文字列を返す。 Scala2.9で非推奨になった。[2011-07-03] |
val s = format("%04d", 123) |
| ScalaではStringのformatメソッドを呼ぶ
のが普通。 あるいは値のformattedメソッドを呼ぶ。[2011-07-03] →フォーマット文字列(Java) |
val s = "%04d".format(123) |
|
| readLine | コンソール(標準入力)から文字列を入力する。 | val s = readLine() |
| readBoolean readByte readShort readChar readInt readLong readFloat readDouble |
コンソール(標準入力)から文字列を入力し、それぞれの型に変換する。 | val b = readBoolean() |
| readf readf1 readf2 readf3 |
MessageFormatによるフォーマットを指定し、コンソール(標準入力)から入力する。 readf()はListを返す。各要素は入力を指定フォーマットで解釈した値。 readf1()はreadf()の先頭要素を返す。 readf2()は先頭から2つ、readf3()は先頭から3つをタプルにして返す。 |
val s = readf("{0}") |
REPLでちょっとした値を表示したい場合、println()関数は便利に使える。[2010-12-18]
| 例 | 説明 |
|---|---|
println() println |
改行のみ行う。 Scalaでは引数が無いメソッドを呼び出す際は括弧を省略できるので、「println」のみでも可。 |
println(123)
println("abc")
println(arg)
|
値を1つ表示する。 |
println(1, 2)
println(1, 2, 3)
println("a", 12)
println(a, b, c)
|
複数の値を表示する。 「 println(1, 2)」の場合、「(1,2)」と表示される。実はこれは、タプルが表示されている。 Scalaでは引数が1個のメソッドを呼び出す際は括弧を省略できるので、 「 println(1, 2)」は、引数がタプル1個で、println()呼び出しの丸括弧が省略されている状態。つまり、タプルを生成し、それをprintln()に渡している。 「 println(1, 2)」=「println((1,
2))」=「val t =
(1, 2); println(t)」と同じ。 |
別の型(クラス)に自動的(暗黙)に変換する関数が定義されている。
例えば以下のようなもの。