スカラ演算子、ファイルと正規表現

演算子

  • Thread.`yield`()識別子の命名にバッククォートの添加(メソッド呼び出し時に、あなたはまた、競合を避けることができyieldScalaのキーワードとして、ほかThreadの道を)
  • インフィックス演算子(挿入演算子)、従来の方法の定義のような2つのパラメータと実際の方法。a to b実際a.to(b)
  • 単項(単項演算子)
    • +, -, !, ~フォー、オペレータの接頭辞として使用することができ-a、実際にa.unary_
    • 引数を置くことができれば、後置演算子であります a identifier
  • 代入演算子(代入演算子)a operator= bに相当しますa = a operator b
  • 優先順位
    • * / %> + -> :> < >> ! => &> ^> |> NOT演算子>代入演算子
    • 中置演算子の優先順位の接尾辞
  • 結合性
    • すべての演算子は左結合され、除い:
      • で、:オペレータの終わり
        • 1 :: 2 :: Nil 実は 1 :: (2 :: Nil)
        • 以下のようにバイナリ演算子実際の操作対象の適切な組み合わせは、第二の方法で2 :: NilありますNil.::(2)
      • 代入演算子
  • 場合f(a,b,c)あなたが呼び出すfメソッドは関数ではありませんか、と等価ですf.apply(a,b,c)
    • f(a,b,c) = valueこれは、と等価であるf.update(a,b,c, value)と同様に、HashMap値の割り当て、及び
    • オブジェクトを構築するために使用される場合は、省略newキーを
  • Extractorの抽出
    • 含むunapplyコンパニオン・オブジェクト・メソッドが、オブジェクト(例えば、抽出カスタム列名など)を抽出ように定義の任意のタイプに関連付けることができます
    • 変数の定義を使用している場合
    • パターンマッチングに使用されます
      • case class自動偶発applyunapplyパターンマッチングのメソッドが自動的に呼び出されます
    • 値の任意のシーケンスを抽出する含める必要がunapplySeq戻りをOption[Seq[Type]]
      • 注意unapplyおよびunapplySeqパラメータの型と同じに定義されていません
  • 動的な呼び出し動的な呼び出し
    • 動的な型を定義します。
      • import scala.language.dynamics
      • 受け継ぎます scala.Dynamic
    • Scalaのプロセス
      • foo.method("blah") 〜> foo.applyDynamic("method")("blah")
      • foo.method(x = 1, 2) 〜> foo.applyDynamicNamed("method")(("x", 1), ("", 2))
      • foo.field 〜> foo.selectDynamic("field")
      • foo.varia = 10 〜> foo.updateDynamic("varia")(10)
      • foo.arr(10) = 13 〜> foo.selectDynamic("arr").update(10, 13)
      • foo.arr(10) 〜> foo.applyDynamic("arr")(10)

ファイルと正規表現

  • すべての行を読んでSource.fromFile({name/java.io.File}).getLines.toArray、リソースを閉じますsource.close
  • 文字を直接反復ソースを読み込み
  • 標準入力を読みます scala.io.StdIn
  • URLを読みます Source.fromURL(url, "UTF-8")
  • ストリングを読み取り Source.fromString("Hello ww")
  • Javaライブラリを使用して、バイナリファイルを読みます
  • Javaライブラリを使用してファイルを書きます
  • 連載 @SerialVerionUID(42L) class Name extends Serializable
    • Serializable これはScalaであります trait
    • 注釈は、デフォルトのUIDを省略することができます
    • Scalaのセットは、シリアライズされ
  • プロセス制御
    • キットには、scala.sys.process暗黙の型変換がされ含まれているString変換しますProcessBuilder
    • シェルの実行
      • "ls -l".!!実行ProcessBuilderをブロックコマンドが終了するまでと終了コードを返します。
      • "ls -l".!!それは次のようになります文字列として出力リターン
      • #| パイプライン: ("ls -l" #| "grep scala").!
      • #> 出力をリダイレクトします。 ("ls -l" #> new File("out.txt")).!
      • #>> 追加:("ls -l" #>> new File("out.txt")).!
      • #< 入力のリダイレクト:
        • ("grep scala" #< new File("out.txt")).!
        • ("grep html" #< new URL("http://baidu.com")).!
      • ディレクトリ/環境変数を実行するように設定Process("ls -l", new File("../"), ("LANG", "en_US")).!、環境変数(k, v)のシーケンス
    • ScalaはJavaプロジェクトでスクリプトを実行します ScriptEngine engine = new ScriptEngineManager().getScriptEngineByName("scala")
  • 正規表現
    *ツールは、scala.util.matching.Regex
    定期的なオブジェクトを構築* val pattern = "[0-9]+".r
    - *など、引用符、エスケープの存在"""val pattern = """\s+[0-9]+\s+""".r
    括弧を使用してグループを捕捉* val patternName = "([0-9]+) ([a-z]+)".r
    *抽出として正準変数を定義するval pattern(num, item) = "123 abc"patternName定義された正規名が一致しているとは)
    *また、forループであってもよいです直接キャプチャグループ抽出された標準的な変数を使用します

おすすめ

転載: www.cnblogs.com/yuanzam/p/11614838.html