一般にを使用しています。オブジェクトの場合はです。このタイプの記法は何ですか? これから正しい結果を得るにはどうすればよいですか?1 +(2)スカラーで正しい答えが得られます。
答えて
、例えば1の目的は、伝統的なメソッド呼び出し構文を使用して、1 + 2を書かれている可能性がIntを入力します。このオブジェクトには、別のIntをパラメータとして受け入れるメソッド+があります。 さらに、Scalaには、をと書くのと同じように、1.+(2)
を1 + 2
と書くことを可能にする文法的な糖があります。
私が言う「Scalaではプログラミング、」からテキストのコピー&ペーストしています:
を実際に伝統的な意味での演算子を持っていないため、Scalaは技術的には、演算子のオーバーロードを持っていません。その代わりに、+、 - 、*、および/などの文字をメソッド名に使用できます。したがって、ステップ1でScalaインタプリタに1 + 2をタイプすると、実際にはIntオブジェクト1の+という名前のメソッドが呼び出され、2としてパラメータとして渡されました。図3.1に示すように、あなたは、代替的に(1)+(2)
Scalaでは、Javaの「プリミティブ型」として知られているものもオブジェクトであり、AnyVal
を拡張しています。 Scalaでは、すべての値はクラスに応じていくつかのメソッドをサポートするオブジェクトです。 Int
,Double
などの数値タイプは、合計のメソッド+
です(メソッド名は英数字に限定されません)。さて、ポイントは、Scalaは、これらの方法は、したがって1+2 == 1.+(2)
DocumentationとInt
クラスのSource Fileから、operations
(operator syntax
)として表示されるように呼び出して、あなたが+
方法の説明を取得することができますし、それはバージョンをオーバーロードしています許可syntactic sugar
を提供することである。
/** Returns the sum of this value and `x`. */
def +(x: Byte): Int
/** Returns the sum of this value and `x`. */
def +(x: Short): Int
/** Returns the sum of this value and `x`. */
def +(x: Char): Int
/** Returns the sum of this value and `x`. */
def +(x: Int): Int
/** Returns the sum of this value and `x`. */
def +(x: Long): Long
/** Returns the sum of this value and `x`. */
def +(x: Float): Float
/** Returns the sum of this value and `x`. */
def +(x: Double): Double
ご覧のとおり、+
は方法のようです。表記1.+(2)
を理解すれば十分です。
ただし、これは画像全体ではありません。詳細については、hereを参照してください。
1 + 2
は、1.+(2)
の省略形です。ここでは、+
がこのメソッドの名前です。 Scalaはメソッド名の英数字以外の文字に対して愚かな偏見を持っていません。名前のシンボルは、まさにほぼどんなシンボルでも定義できます。一般的に
、あなたはmethod
2つのパラメータ(暗黙の1、明示的な1)を持つ方法であるa.method(b)
の省略形としてa method b
を書くことができます。たとえば、1.to(10)
の代わりに1 to 10
あなたは読みやすいと思うものを使用してください。 Scalaプログラマーの初めは、Java構文に固執しがちですが、それは問題ありません。もちろん、最も強硬なJavaプログラマでさえもa + b
よりもa.+(b)
を好むようです。
以下のコードは、オブジェクトintに、私はメソッドを適用したいです。だから私は押された。私に+がそれらの一部であるメソッドのセットを与えました。引数としてintをとり、Intを返します。それで、すべてを説明します。
主な理由は、Scalaは実際に伝統的な意味での演算子を持っていないが、それはメソッドを持って
です。
scala> val x=2;
x: Int = 2
scala> x.
!= - == ^ compareTo intValue isPosInfinity isValidShort round toBinaryString toFloat toRadians underlying
% / > abs doubleValue isInfinite isValidByte isWhole self toByte toHexString toShort until
& < >= byteValue floatValue isInfinity isValidChar longValue shortValue toChar toInt unary_+ |
* << >> ceil floor isNaN isValidInt max signum toDegrees toLong unary_-
+ <= >>> compare getClass isNegInfinity isValidLong min to toDouble toOctalString unary_~
scala> x.+
def +(x: Long): Long def +(x: Float): Float def +(x: Int): Int def +(x: Double): Double
def +(x: Short): Int def +(x: Char): Int def +(x: String): String def +(x: Byte): Int
scala> x.+
def +(x: Double): Double def +(x: Char): Int def +(x: Short): Int def +(x: String): String
def +(x: Long): Long def +(x: Float): Float def +(x: Int): Int def +(x: Byte): Int
scala> x.+(3)
res1: Int = 5
- 1. マージソートアルゴリズムが正しい答えを得られない
- 2. アセンブリコード - 正しい答えが得られない
- 3. SQL Server 2005のTOP関数で正しい答えが得られません
- 4. CURLソープで正しい応答が得られないPHP
- 5. 私はCUDAでcudaMallocPitchとcudaMemcpy2Dを使用していますが、正しい答えは得られません!
- 6. 答えが正しいか
- 7. 正しい答えを得るには
- 8. AzureではMySql lower_case_table_names = 2、MySql Workbenchはそれが1と答えています
- 9. 治療が正しい応答を得られない
- 10. $。ポストが機能しない、火かき棒で答えが得られない
- 11. CLLocation distanceFromLocationが間違った答えを返してから正しい答えを返します
- 12. laravel単体テストで "phpunit"で正しい応答が得られない
- 13. 正しい答えのプログレスバーベース
- 14. SQLで正しい答えがありません
- 15. ループが正しい答えに与えません
- 16. Pythonの割り当てが正しい答えを見つけられない
- 17. 1回の呼び出しで部分的な応答が得られます
- 18. テキストファイルで、(Line 1の答え= Line 2の答え)を表現する方法
- 19. Rxjava、Retrofitレスポンスボディが正しい答えを得られませんか?このような
- 20. なぜpython map()とmultiprocessing.Pool.map()で異なる答えが得られましたか?
- 21. Python、1の位置引数ですが、2が与えられました
- 22. logisitc回帰の正しい答えを得るには?
- 23. var questions正しい答えが追加されていません
- 24. Javascriptを:ここで答えを追従しながら2
- 25. 正しい答えが返された後に進む
- 26. は、私は1つが正しいこのビッグO記法計算の2つの答えを見つけた
- 27. ネストされた$ .getJSON()は正しい答えを得ることができませんか?
- 28. 正しい結果が得られませんでした
- 29. 私のC++コードでループ外の和を出力すると、正しい答えが得られますが、while/whileのループはありません。
- 30. Listviewに正しい値が与えられていません
Scalaでは、 '+'はメソッド名であり、演算子ではありません。 – Shankar
あなたの質問を理解できません.... 1ここでは整数、オブジェクト、 '+'整数のメソッド、そして何ですか? –
@JohnZeng私は、Scalaにはすべてのオブジェクトのための豊富なラッパーライブラリがあると読んでいます。Int、Rich float for floatなど。だからこそ、正確に何が起きているのでしょうか? – NeoWelkin