2017-04-13 7 views
0

オブジェクト指向プログラミングでは、オブジェクトは独自の状態と動作を持ちます。オブジェクト状態はインスタンス変数内に格納されており、それらを参照するにはobjectnameを使用できます。Scalaオブジェクト指向プログラミング

instance.variablenameフィールドを参照するために表記法が使用され、インスタンスメソッドはobjectname.instancemethodname(parm..)によって呼び出されます。

ただし、ここではScalaには他の表記があります。一例として、

:私は、次の表記法を越えてきたScalaリストに:ここで

l filter p

lは、リストのインスタンスの名前で、pは引数です。

このシナリオでは、述語pを満たす要素のリストが返されます。

私の質問はそのnotaionとは何ですか?そしてそれはどういう意味ですか?

+2

?読みやすくするために作業してください。 –

+0

いいえ私はあなたと同意しました –

答えて

2

l filter pl.filter(p)に書き換えます。したがって、Scalaコンパイラは実行時に同じように扱われますが、読者とは異なって見えます。したがって、コードの読みやすさに影響を与えるプログラミングスタイルの選択です。

スカラはこのスタイルの呼び出し「infix notation」を呼び出し、+および*などの操作としてメソッドをサポートすることを意図しています。 Javaでは、+のような演算子がJVMによって提供されますが、Scalaでは演算子がJavaのJVMで定義されているのと同じ構文を使用して呼び出されます。例えば

:(あなたも段落それを呼び出すことができる場合)、この無句読点「段落」を読むために1を想定しているどのように

case class Foo(v:String) { 
    def +(o:Foo) = Foo(v + o.v) 
} 

Foo("a").+(Foo("b")) // equals Foo("ab") 
Foo("a") + Foo("b") // equals Foo("ab") 
+0

まあ...ちょっとした細部 - これはScalaパーサではなく、コンパイラで気になります。 –

+1

@SarveshKumarSinghパーサはコンパイラの一部です。 – puhlen

関連する問題