Scalaのソースを追っていたら変な記号が多くて?な状態になります。
ってことで備忘のためにScalaで使う記号をメモしておきます。
四則演算、剰余
+ - * / %
ビット否定、論理否定
~ !
ビット演算
& | ^ && ||
比較
< > <= >=
ブロック
{}
コメント
//
…このへんまでは普通。
全般
_ : ステークホルダ
* : 可変長引数 ex. def echo(args: String*)
=> : 関数 ex. (x: Int) => x + 1
<- : 集合から個々の要素を取り出す ex. for(arg <- args) println(arg)
Any
==, !=: Javaのequals, not equlas
isInstanceOf: 型比較
asInstanceOf: キャスト
AnyRef
## : hashCode
eq, ne: Javaの==, !=
ジェネリクス
+T, -T : 共変、反変
A <: T, A >: T, A <% T : 上限境界、下限境界、可視境界
コレクション関連
※Scalaでは通常の演算子は演算子の左のオブジェクトの関数だが、
『:』で終わる演算子は右のオブジェクトの関数。
:: コレクションに要素追加
::: コレクション同士の結合
/:, :\ foldLeft, foldRight
** 積集合
Tupple
(A -> B) : 要素2個のタプル。( (A, B) )と同じ
_1 : 第一要素
_2 : 第二要素
文字列
* : 文字列を複数回繰り返す。実際にはWrappedStringの関数
ex. "abc" * 3 // "abcabcabc"
r : regex
リテラル
' ' : 文字リテラル ex. 'A'
" " : 文字列リテラル ex. "ABC"
""" """ : 特殊文字を含む文字列リテラル ex. """ABC"DEF"GHI"""
' : シンボルリテラル ex. 'aSymbol
`` : リテラル識別子 Scalaの予約語になっているJavaのメソッドを呼び出すときに。
ex. Thread.`yield`()
XML
\, \\ : プロジェクション
Actor
! : Actorにメッセージを送る(非同期)
!! : Actorにメッセージを送る(非同期、メッセージに対する処理も同時に送る)
!? : Actorにメッセージを送る(同期)