ハッシュ操作†
6 個の関数。
IHASH†
書式†
IHASH( [key1, value1, key2, value2, ...] )
引数†
| Parameter | Description |
|---|---|
| keyn | キー |
| valuen | keyn に対応する値 |
戻り値†
ハッシュ。引数が無ければ空のハッシュ。
解説†
キーと値を交互に並べてハッシュを作る。
- 引数の汎用配列は、ほかの関数と同じく展開される。
IHASH("x", (1,2,3))はIHASH("x",1,2,3)と同じになり、x=1、2=3の2要素になる。ハッシュの値に配列を入れたいときは、作ったあとで要素に代入する(_h["x"] = (1,2,3)) - 引数にハッシュを渡すと、展開されずにそのままキーや値になる(入れ子)
- 引数の数が奇数のときは警告 W0020 を出し、最後のキーの値は VOID になる
- 同じキーとみなされるものが2回以上出てきたときは、最初のキーと値が残る
キーの一致と並び順の規則は ハッシュ を参照。
使用例†
_h = IHASH("name", "さくら", "age", 16)
_h["name"] // "さくら"
_e = IHASH() // 空のハッシュ
_e["k"] = (1, 2, 3) // 値に配列を入れる
IHASH(9, "i9", "9", "s9") // 9 と "9" は同じキーなので 9=i9 だけ
互換性†
- YAYA: Tc600-3以降
関連項目†
HASH_KEYS†
書式†
HASH_KEYS( hash )
引数†
| Parameter | Description |
|---|---|
| hash | ハッシュ |
戻り値†
キーの汎用配列。キーの順に並ぶ。
解説†
ハッシュのキーを汎用配列で返す。並びは挿入した順ではなく、キーの順(数値 < 文字列)になる。
引数がハッシュでないときは警告 W0009 を出す。
使用例†
_h = IHASH("b", 1, "a", 2, 10, 3, 9, 4)
HASH_KEYS(_h) // 9,10,a,b
互換性†
- YAYA: Tc600-3以降
関連項目†
HASH_VALUES†
書式†
HASH_VALUES( hash )
引数†
| Parameter | Description |
|---|---|
| hash | ハッシュ |
戻り値†
値の汎用配列。キーの順に並ぶ。
解説†
ハッシュの値を汎用配列で返す。並びは HASH_KEYS と同じキーの順になる。
値が配列のときは、その配列を1つの要素として含む(入れ子の配列になる)。そのため、戻り値の要素数はハッシュの要素数と同じになる。
引数がハッシュでないときは警告 W0009 を出す。
使用例†
_h = IHASH("a", 1)
_h["b"] = (1, 2)
_v = HASH_VALUES(_h)
ARRAYSIZE(_v) // 2
_v[1] // 配列 (1,2)
TOSTR(_v) // "1,1,2"
互換性†
- YAYA: Tc600-3以降
関連項目†
HASH_SPLIT†
書式†
HASH_SPLIT( str, sep1, sep2 )
引数†
| Parameter | Description |
|---|---|
| str | 分割する文字列 |
| sep1 | 要素の区切り |
| sep2 | キーと値の区切り |
戻り値†
ハッシュ
解説†
文字列を sep1 で要素に分け、各要素を sep2 でキーと値に分けてハッシュを作る。
- 空の要素は飛ばす
sep2を含まない要素は、キーだけの要素になる(値は VOID)- キーが空の要素(
=xなど)は捨てる - 最初の
sep2で分ける。d=4=5はキーd、値4=5になる sep1かsep2が空文字列のときは警告 W0010 を出し、空のハッシュを返す
使用例†
_h = HASH_SPLIT("a=1,b=2,,c,=x,d=4=5", ",", "=")
// a=1,b=2,c=,d=4=5 (要素数 4)
互換性†
- YAYA: Tc600-3以降
関連項目†
HASH_EXIST†
書式†
HASH_EXIST( key, hash )
引数†
| Parameter | Description |
|---|---|
| key | 調べるキー |
| hash | ハッシュ |
戻り値†
- 1: キーがある
- 0: キーが無い
解説†
ハッシュにキーがあるかどうかを返す。引数の順はキー、ハッシュの順(ASEARCH と同じ)なので注意。
h[キー] はキーが無いと VOID を返す(Tc602-13 までは空文字列)が、値そのものが VOID や空文字列のこともあるので、「キーが無い」ことを確かめたいときはこの関数を使う。
キーの一致は ハッシュのキーの規則 に従う。key が配列やハッシュのときは警告 W0009 を出す。
使用例†
_h = IHASH("a", "", 1, "x")
HASH_EXIST("a", _h) // 1
HASH_EXIST("b", _h) // 0
HASH_EXIST("1", _h) // 1 (1 と "1" は同じキー)
互換性†
- YAYA: Tc600-3以降
関連項目†
HASH_SIZE†
書式†
HASH_SIZE( hash )
引数†
| Parameter | Description |
|---|---|
| hash | ハッシュ |
戻り値†
要素数(整数)
解説†
ハッシュの要素数を返す。
引数がハッシュでないときは警告 W0009 を出す。
使用例†
_h = IHASH("a", 1, "b", 2)
HASH_SIZE(_h) // 2
互換性†
- YAYA: Tc600-3以降