6

メソッドのScalaドキュメントによると、Range.end「範囲の排他的な終わり」を返します。では、なぜtountil表記の両方に同じ値を返すのでしょうか。例えば:

Welcome to Scala version 2.9.2 (Java HotSpot(TM) Server VM, Java 1.7.0).
Type in expressions to have them evaluated.
Type :help for more information.

scala> (1 to 10).end
res0: Int = 10

scala> (1 until 10).end
res1: Int = 10

すべきではないres0 == 11

4

1 に答える 1

13

tountil結果として、関連するが異なるRangeクラスになります。それぞれ、およびRange.Inclusive。。RangeRange.Inclusive IS-A Range

  • isInclusive2つのクラスタイプを区別します。

  • end、または上限は、範囲が排他的または包括的であるという文脈で解釈されます。上限は、範囲指定で提供された2番目の数値であり10、元の質問の両方のサンプルケースに含まれていました。そして、はい、この「上限」は、範囲が高から低に変化する場合(つまり)、「下限」よりも小さくなる可能性があります1 until -10

  • last範囲内の最後の値を返します。これは、から取得しようとしていた値である可能性がありますend

于 2012-09-15T16:52:21.037 に答える