0

このコードは、properties.keySet に EXPECTED_IMPORT_KEYS に存在しないキーが含まれている場合に例外をスローします。val はコード内で 3 回参照されています。

val unexpectedKeys = properties.keySet -- EXPECTED_IMPORT_KEYS
if (unexpectedKeys.nonEmpty) {
   throw new UnexpectedKeysException(unexpectedKeys)
}

Scalaでこれを達成するためのよりエレガントな方法はありますか? 特に val の繰り返し参照について考えています。それらの繰り返しをなくすことはできますか?

コードの完了後、unexpectedKeys val は必要ないことを知っておくと役立つ場合があります。

私が探している改善は、val の発生回数が 3 回から減少することです。val を持つ必要はありません。これは私の最初の定式化です。

4

2 に答える 2

4

これが頻繁に必要な場合は、小さなヘルパー メソッドを定義するだけです。

def emptyOption[A, CC <: Iterable[A]](coll: B with collection.IterableLike[A, CC]) =
  if (coll.isEmpty) None else Some(coll)

次に、次のように使用します。

scala> emptyOption(Set[Int]()) foreach (coll => throw new RuntimeException(coll.toString))

scala> emptyOption(Set[Int](1)) foreach (coll => throw new RuntimeException(coll.toString))
java.lang.RuntimeException: Set(1)
于 2013-03-11T23:29:49.867 に答える