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) 」と同じ。 |
別の型(クラス)に自動的(暗黙)に変換する関数が定義されている。
例えば以下のようなもの。