なんじゃくにっき

プログラミングの話題中心。

【メモ】Scalaの記号たち

 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にメッセージを送る(同期)