Scala で If-Else を使用してブール値を返す

Suraj P 2022年6月21日
Scala で If-Else を使用してブール値を返す

この記事では、Scala で if-else を使用するときにブール値を返す方法について説明します。

Scala で if-else を使用してブール値を返す

それをよりよく理解するためにシナリオを見てみましょう。

def check(): Boolean = {
    for ((digit1,digit2,digit3) <- digitsSet){
      if ((1,5,6) == (digit1,digit2,digit3))
        true
      else
        false
    }
  }

val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57))

上記のコードでは、セットにこれらの 3 桁が含まれているかどうかを調べようとしているため、出力として true または false のいずれかが期待されますが、上記のコードを実行すると、次のエラーが発生します。

type mismatch;
 found   : Unit
 required: Boolean
    for ((digit1,digit2,digit3) <- digitsSet){

問題は、関数が Unit ではなくブール値を返す必要があることです。

したがって、この問題をさまざまな方法で解決できます。

  1. contains メソッドを使用して、セット内の要素を検索します。要素が存在する場合は true を返します。それ以外の場合は false を返します。

    これは、上記のコードを記述するためのより洗練された方法です。

    コード例:

    val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57))
    println(digitsSet.contains((10,20,30)))
    

    出力:

    true
    
  2. true および false の前に return ステートメントを追加します。これは用途が広く、ほとんどすべてのシナリオで使用できるため、最良の方法です。

    val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57))
    
    def check(): Boolean = {
    	val store = for ((digit1,digit2,digit3) <- digitsSet) {
    	  if ((10,20,30) == (digit1,digit2,digit3))
    		return true
    	}
    	false
      }
    
    println(check())
    

    出力:

    true
    
  3. Scala で exists メソッドを使用します。

    val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57))
    
    println(digitsSet.exists( _ == (1,20,50) ))
    

    出力:

    false
    
著者: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub