Scala で If-Else を使用してブール値を返す
Suraj P
2022年6月21日
この記事では、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
ではなくブール値を返す必要があることです。
したがって、この問題をさまざまな方法で解決できます。
-
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
-
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
-
Scala で
exists
メソッドを使用します。val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57)) println(digitsSet.exists( _ == (1,20,50) ))
出力:
false