Skip to main content

$vectordefined (ObjectScript)

指定した位置のベクトル要素が定義されているかどうかを判断します。

Synopsis

$vectordefined(vector,position)
$vectordefined(vector,position,value) 

説明

$vectordefined を使用してベクトル要素にデータが含まれているかどうかを確認します。これは、$data 関数を使用して変数にデータが含まれているかどうかを確認するのと同様です。

省略形$vd

引数

vector

入力ベクトルを指定するグローバル変数またはローカル変数。

  • vector がベクトルではない ($isvector(vector) = 0) 場合、$vectordefined<VECTOR> エラーを発生させます。

  • vector が未定義であるか、空の文字列 ("") を保持している場合、$vectordefined0 を返し、value 変数 (指定されている場合) は空の文字列に設定されます。

position

確認するベクトル要素の位置を指定する正の整数。position が 1 より小さい場合、$vectordefined<VECTOR> エラーを発生させます。

value

position にあるベクトル要素の値を格納するローカル変数。

  • 要素が定義されている場合 ($vectordefined1 を返す)、value はその要素の値に設定されます。

  • 要素が定義されていない場合 ($vectordefined0 を返す)、value は空の文字列 ("") に設定されます。

value 変数がこれまで存在しなかった場合は、$vectordefined によってこれが作成されます。

ベクトル要素が定義されているかどうかの確認

1 から 100 までのランダムな整数からなる長さ 10 のベクトルを定義して、1 つおきにのみ要素を定義します。ベクトルを表示します。連続するコンマが示すように、奇数番号の要素位置には値が含まれていません。要素の値は変化します。

for i=2:2:10 set $vector(vector,i,"integer") = $random(100)+1
zwrite vector

vector={"type":"integer", "count":5, "length":10, "vector":[,46,,67,,45,,82,,2]} ; <VECTOR>

偶数番号の要素が定義されているかどうかを確認します。以下の $vectordefined 呼び出しからはすべて 1 が返されます。

write $vectordefined(vector,2)
write $vectordefined(vector,4)
write $vectordefined(vector,6)
write $vectordefined(vector,8)
write $vectordefined(vector,10)

奇数番号の要素が定義されているかどうかを確認します。以下の $vectordefined 呼び出しからはすべて 0 が返されます。

write $vectordefined(vector,1)
write $vectordefined(vector,3)
write $vectordefined(vector,5)
write $vectordefined(vector,7)
write $vectordefined(vector,9)

ベクトル要素の値の変数への格納

10 要素のベクトルを定義します。これらの要素はアルファベットの最初の 10 文字に対応します。ベクトルを表示します。

for i=1:1:10 set $vector(vector,i,"string") = $extract("abcdefghij",i)
zwrite vec

vector={"type":"string", "count":10, "length":10, "vector":["a","b","c","d","e","f","g","h","i","j"]} ; <VECTOR>

ベクトルの最初と最後の文字をローカル変数に格納します。これらの変数の値は、それぞれ "a""j" です。

write $vectordefined(vector,1,firstLetter)
write $vectordefined(vector,10,lastLetter)
zwrite firstLetter, lastLetter

ベクトルの長さを超える位置に値を格納してみます。この位置の値は未定義のため、変数は空の文字列に設定されます。

write $vectordefined(vector,26,undefinedLetter)
zwrite undefinedLetter

代わりに、$vector 関数を使用して、ベクトル要素を変数に格納することができます。

set firstLetter = $vector(vector,1)
set lastLetter = $vector(vector,10)
set undefinedLetter = $vector(vector,26)

関連項目

FeedbackOpens in a new tab