019

columnDelimiter / rowDelimiter を使った Array(配列)
基本的なアレイ(Array) の説明は 014 にあります。



revTalk では、コラム(column)と、ロウ(row) をデリミッタとした、アレイ(Array)が使えます。
と書くとわかりにくいですが、
3つのコラム(タテ欄)で2つのロウ(ヨコ列)を持つテーブルを思い浮かべれば、すぐにわかるでしょう。

a b c
d e f

というテーブルを考えてください。

文字列で表せばこうなります。

a <columnDel> b <columnDel> c <rowDel>
d <columnDel> e <columnDel> f

このようなアレイを、一般的にマルチディメンショナル・アレイと言うようです。

このテーブルをmyTableと言うアレイとして、
columnDel でアレイを区切ると、
myTable[1] で

a
b

が取り出せるということです。

念のため付け加えると
myTable[3] では、

c
f

が取り出されます。

また、 rowDel で区切ると
myTable[1] で

abc

とテーブルのヨコ列が取り出せます。

このアレイのデリミタは、デフォルト(設定しない限り)で、columnDelimiterに設定されています。




もう少し具体的なスクリプトを書いてみましょう。
やはりテーブルで考えます。

revTalk で普通のテーブルのコラム(タテ欄)のデリミタは「tab」で、
ロウ(ヨコ列)は「return = cr」ですから

"a" tab "b" tab "c" return
"d" tab "e" tab "f"

こういう3コラム、2ロウのテーブルを例にすると
デフォルトで columnDelimiter(デリミタ)が「tab」に設定されているので(特にデリミタの設定をしなくても)
コラムをデリミタとしてアレイを作るには

put "a" & tab & "b" & tab & "c" &cr& "d" & tab & "e" & tab & "f" into myTable
split myTable by column

これで myTable と言うアレイが作られますから (set the columnDel to tab は必要ない)

put myTable[1]
と言うスクリプトから、始めのコラム

a
d

がメッセージボックスに書き出されます。
split は 014 に説明があります。



次にデリミタを変えてみます。

a <cd> b <cd> c <rd>
d <cd> e <cd> f <rd>
g <cd> h <cd> i

と言う Array のcolumnDelimiter(上の表では <cd> ) を、カンマにした場合の例です。

put "a,b,c" &cr& "d,e,f" &cr& "g,h,i" &cr into myTable
set the columnDel to comma -- columnDelimiter をカンマに設定
split myTable by column -- コラムをデリミタとしてアレイにする
put myTable[3]

と言うスクリプトから、タテの3欄目がメッセージボックスに書き出されます。

c
f
i



同じように、

put "a,b,c" &cr& "d,e,f" &cr& "g,h,i" &cr into myTable
set the rowDel to cr -- rowDelimiter をcr に設定
split myTable by row --ロウをデリミタとしてアレイにする
put myTable[1]

と言うスクリプトから、ヨコの1列目がメッセージボックスに書き出されます。

a,b,c



次にcolumnDelimiter をカンマとして作ったアレイから、
コラムのひとつを取り出して、その後アレイでない普通の3段(3 lines)の文字列に戻します。

put "a,b,c" &cr& "d,e,f" &cr& "g,h,i" &cr into myTable
set the columnDel to comma split myTable by column -- コラムをデリミタとしてアレイにする
put myTable[2] -- ふたつ目のコラムを取り出す
wait 60
combine myTable using column -- combine, columnを使って文字列にもどす
put myTable

上のスクリプトは、始めに ふたつ目のコラム

b e h

がメッセージボックスに書き出され、その1秒後に

a,b,c
d,e,f
g,h,i

がメッセージボックスに書き出されます。
combine は 014 に説明があります。



文字列に戻す最後の部分を「row」を使うと

put "a,b,c" &cr& "d,e,f" &cr& "g,h,i" &cr into myTable
set the columnDel to comma
split myTable by column
put myTable[2]
wait 60
combine myTable using row -- combine, row を使って文字列に戻す
put myTable

上のスクリプトは、始めに ふたつ目のコラム

b e h

がメッセージボックスに書き出され、その1秒後に

a
d
g

b
e
h

c
f
i

がメッセージボックスに書き出されます。