範囲
範囲の定義
SenseTalkでは範囲を使って値の範囲を示します。範囲は開始値と終了値を指定し、2つの値の間にダブルドット演算子(2つのピリオド)またはto
を使って指定します。
Syntax:
{from} startValue [ to | .. ] endValue { [{step{ping}} {down} by | step] stepvalue }
例:
put 1 to 100 into firstHundred
set validRange to 100..200
範囲にはオプションでステップ値を含めることができ、by
、step
、step by
を使用します(ステップ値の使用は以下の"Using a Range to Generate a List"で説明されています):
例:
put 1 to 99 step by 2 into oddNumbers
set evenNumbers to 0..100 by 2
範囲の単純な使用法
最も単純な使用法では、範囲は2つの値を指定します。start
とend
の値を範囲のプロパティとして直接アクセスします:
例:
set myRange to 10 .. 20 -- 10 to 20
put myRange.start --> 10
put myRange's end --> 20
add 15 to the end of myRange
put 10 is within myRange -- Puts "true"
is within
演算子を使用して、他の値が範囲内にあるかどうかをテストします:
例:
set myRange to 10 .. 20 -- 10 to 20
put 13 is within myRange -- Puts "true"
put 18.975 is within myRange -- Puts "true"
put 9.2 is within myRange -- Puts "false"
範囲は_包含的_であり、つまり、開始値と終了値の両方を含みます。したがって、10と20の間の任意の値(10と20を含む)は、例の範囲内にあります:
例:
set myRange to 10 .. 20 -- 10 to 20
put myRange.start -- 10
put myRange's end -- 20
is a range
演算子を使用して、値が範囲であるかどうかをテストします:
例:
put myRange is a range -- Puts "true"
範囲を使用してリストを生成する
範囲をシーケンスジェネレータとして使用し、範囲の開始値から始まり、その終了値まで自動的にシーケンスまたはリストの値を生成します。範囲がその値を生成する最も簡単な方法は、リストが期待されるコンテキストで範囲を使用することです:
例:
put item 5 of 10 to 20 -- 14
put the last 3 items of 100..200 by 2 -- Puts [196,198,200]
範囲のステップバイインクリメントを指定すると、その絶対値(正)がシーケンスを生成する際のリスト内の連続するアイテム間のインクリメントとして使用されます。範囲のステップバイインクリメントを指定しない場合、値は1が想定されます。範囲のstep
プロパティを使用して、範囲のインクリメント値にアクセスしたり変更したりします:
例:
set the step of myRange to 3