2017-11-15 2 views
0

I持ってscalatestスペック内の次のコード:ArrayBuffer - ミン

"[Mary]" did not equal "[a]"

なぜこれが戻らない:が言って、二shouldEqualを失敗し

val arr = ArrayBuffer("Mary", "had", "a", "little", "lamb") 
arr.max shouldEqual "little" 
arr.min shouldEqual "a" 

"a"

によると、Scala for the Impatient、2nd ed。: "... minおよびmaxメソッドは、配列または配列バッファ内の最小要素と最大要素を生成します。

Horstmann、Cay S ..辛抱強いのためのScala(Kindle Locations 1515-1517)。ピアソン教育。キンドル版。

Postface:本は言う、「...は最小最大を生み出す...」それは、選ばれた解答で実装のようにASCIIの比較ではなく、長さを意味します。アスキーテーブルの上に

答えて

3

、大文字は、小文字の前に来るのでMary < aと最小の要素である、あなたはScalaのREPLでこれを確認することができますが:

scala> "Mary" < "a" 
// res4: Boolean = true 

あなたがで比較する必要がある場合あなたは分間 `A`を取得したい場合は、CA、

import scala.collection.mutable.ArrayBuffer 

val arr = ArrayBuffer("Mary", "had", "a", "little", "lamb") 
// arr: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Mary, had, a, little, lamb) 

arr.minBy(_.size) 
// res5: String = a 

arr.maxBy(_.size) 
// res6: String = little 
+0

:文字列の文字数は、あなたがそのサイズで文字列を比較するminBymaxByを使用することができますnは 'arr.map(_。toLowerCase)'を実行して、小文字のみを使用できるようにします。 – Tanjin

+0

しかし 'max'は' 'mary" ' –

+1

となります。詳細な答えをありがとう。 –

関連する問題