Scalaの演算子

注意: このチュートリアルはScalaチュートリアルシリーズの続編です。Scala入門ガイドScalaでのIF ELSEを読んだことがない場合、それらを確認してください。

はじめに

运算子(operator)とは、1つまたは複数の操作数(operand)と共に演算を行うことを示す記号や関数です。运算子の種類はたくさんありますが、操作数は変数(variable)として考えることができます。运算子はすべてのプログラミング言語の基盤です。运算子は私たちに操作数に対して様々な操作を行うことを可能にします。运算子はコンパイラに、数学的(算術)、論理、割り当てなどの运算子を行い、最終的に結果を出力するよう指示します。

多くのプログラミング言語で使用されるように、Scalaでも以下のような異なる種類の运算子が使われています。

  • 比較运算子
  • 算術运算子
  • 割り当て运算子
  • 論理运算子
  • 位运算子

これらの运算子について、理論的にもプログラマー的にも学びます。

比較运算子

関係演算子は主に2つ以上の変数間の比較を行うために使用されます。Scala 中的 IF ELSEのチュートリアルを読んでいる場合、IF ELSE 条件で関係演算子の力を活用していることに気づいたでしょう。

これらの関係演算子は boolean 値 を返します、すなわち True または False です。

以下は変数に適用するために使用する関係演算子の記号です(ソース:Scala 中的演算子):

  • 等しい(==): 2つの与えられた変数や演算子が等しいかどうかを確認します。等しい場合は true を、そうでない場合は false を返します。

  • 等しくない(!=):これは等しい演算子の逆であり、等しい演算子の boolean 補数とも言えます。2つの与えられた演算子が等しいかどうかを確認します。等しくない場合は true を、そうでない場合は false を返します。

  • より大きい(>): 最初のオペランドが2番目のオペランドより大きいかどうかを確認します。そうであれば true を返し、そうでなければ false を返します。

  • より小さい(<): これはより大きい演算子の反対であり、最初のオペランドが2番目のオペランドより小さいかどうかを確認します。そうであれば true を返し、そうでなければ false を返します。

  • 以上(>=): この演算子は最初のオペランドが2番目のオペランド以上であるかどうかを確認します。そうであれば true を返し、そうでなければ false を返します。

  • 以下(<=): 以上演算子の反対です。最初のオペランドが2番目のオペランド以下であるかどうかを確認します。そうであれば true を返し、そうでなければ false を返します。

今から、比較演算子を説明するためのコードを見ていきましょう。

上記のコードを実行するためには、scala relation_op.scalaと入力するだけです。以下のような出力が表示されるはずです。

次に、論理演算子について学びます。

論理演算子

これらは、IF ELSEステートメントやwhileループのような条件ステートメントに主要に使用されます。2つ以上の条件を統合したり、原始的な条件の出力を补完したりします。 (情報源: Scalaの演算子)

  • Logical AND: 両方の条件が満たされると真を返し、否则は假を返します。&&运算子の代わりに「and」を使用します。

  • Logical OR: 1つ(または2つ)の条件が満たされると真を返し、否则は假を返します。||运算子の代わりに「or」を使用します。
  • 論理NOT: 考えられる条件が満たされていない場合に真を返し、そうでない場合に假を返します。”not”は論理NOT演算子(!)の代替として機能します。

算術(数学)演算子

算術演算子は运算子同士に数学的な操作を行うために使用されます。

次はScalaで多く使用される算術演算子です(情報源: Scalaの演算子):

  • 加算: 変数/运算子の2つを$(+)$足します。

  • 減算: 2つの运算子を$(-)$引きます。

  • 乗算: 2つの运算子を$(\times)$乘します。

  • 除算: 最初の运算子を第2の运算子で除きます。

  • Exponent: 2つの操作数の指数を返す。基本的に、1つの操作数を第2の操作数のパワーにしたり、(x^y)または(x**y)として表現する。

  • Modulus: 第1の操作数を第2の操作数で割った際の余りや剰余を模数と呼ぶ。

簡単なコードを書いて結果を分析してみよう。

この例では、変数だけでなくlistsを使っています。変数とは異なり、リストはn個の異なるデータ型の値を保持することができ、それはScalaのリンクリストを表現し、変更不可です。2つのリストを変数の代わりに算術演算を行います。

アサインメント演算子

変数に値を代入するためには、代入演算子が使用されます。これを実現するためには、右側のオペランドが値と見なされ、左側のオペランドは通常、値が代入される変数です。値には、intfloatなどの異なるデータ型が含まれることがあります。変数と値のデータ型は同じでなければならず、そうでない場合はコンパイラがエラーを発生させます。(出典:Scalaの演算子

  • 単純代入: この演算子は変数に値を代入するために使用されます $(=)$。

  • 加算代入: 左側のオペランドと右側のオペランドを加算し、最終的に左側の変数に代入するために使用されます $(+=)$。

  • 減算代入: 加算代入と同様です。左側のオペランドから右側のオペランドを減算し、最終的に左側の変数に代入するために使用されます $(-=)$。

  • 倍算と代入:

  • 除算と代入:

同様に、代入演算子は他にもいくつかあります。最後に、これらがどのようにプログラム上で機能するか理解するためにコードを書いてみましょう。

終結

Scalaのこのトレーニングを完了しました。

前のトレーニングを読んだとしますと、Scalaの3つの異なるトピックをカバーしました。有用な練習は、3つのトピックから学んだスキルをまとめて、Scalaで最初のプログラムを書くことです。これは自信を高め、Scalaのより高度なトピックに跟踪する际に、生活をより簡素にすることができます。

参考文献:

このトレーニングに関する質問は、下のコメント欄でお聞きください。

Source:
https://www.datacamp.com/tutorial/operators-in-scala