ブラケットアクセス(bracket access)

1999.6.5 update
●テキストチャンクへのブラケットアクセス
旧:set x = char 3 of data
新:x = data.char[3]
旧:set x = word 5 of data
新:x = data.word[5]
旧:set x = line 7 to 10 of data
新:x = data.line[7..10]
 :x = data.paragraph[7..10]
旧:set x = item 2 of data
新:x = data.item[2]
旧:set x = char 3 to 9 of data
新:x = data.char[3..9]
旧:set x = word 5 to 8 of line 2 of field "book"
新:x = member("book").text.line[2].word[5..8]
旧:put "love" into member "heart"
新:member("heart").text = "love"
旧:put "love" before member "heart"
新:member("heart").text = "love" & member("heart").text
旧:put "love" after member "heart"
新:member("heart").text = member("heart").text & "love"

 ブラケットアクセスを使って変数内のチャンクにテキストデータを入れる場合にはputコマンドを使います。
setコマンドを使うとエラーになるので注意してください。
しかし、フィールドメンバーとテキストメンバーの場合は直接ブラケットアクセスが利用できます。

エラー:data.word[3] = "pooh"
OK:put "pooh" into data.word[3]
エラー:member("foods").text.word[2] = "fish"
OK:member("foods").word[2] = "fish"

refプロパティを使ったチャンクへのアクセス(テキストメンバーのみ有効)

-- チャンクへのアクセス情報を変数に入れます
tempRef = member("data").line[5].word[1..3].ref
--上のチャンクの書式を変更します
tempRef.fontSize = 18
tempRef.fontStyle = [#italic]
-- チャンクのテキストデータを取り出します
data = tempRef.text

●リストへのブラケットアクセス
2番目の値にアクセスする
myList = [5,6,7]
put myList[2]
-- 6
myList[2] = 99
put myList
-- [5, 99, 7]

2番目のリストの3番目の値を取り出す
myList = [[#a,2,10],[#c,1,22],[#d,5,37]]
put myList[2][3]
-- 22

3番目のプロパティの値を取り出す
myList = [#a:45, #b:32, #c:71, #d:88] 
put myList[3]
-- 71

1番目の値のリストの2番目の値を取り出す
myList = [#a:[#x:1, #y:25], #b:[#x:2, #y:39]]
put myList[1][2]
-- 25

プロパティ#bの値にアクセスする
myList = [#a:3, #b:5, #c:7] 
put myList[#b]
-- 5
myList[#b] = 99
put myList
-- [#a: 3, #b: 99, #c: 7]

プロパティ#bの値のプロパティ#yの値を取り出す
myList = [#a:[#x:1, #y:25], #b:[#x:2, #y:39]]
put myList[#b][#y]
-- 39

プロパティ#vがなければ要素を追加し、あれば値を更新する
myList = [#a:10, #z:13]
sort myList
myList[#v] = 15  --  要素の追加
put myList
-- [#a: 10, #v: 15, #z: 13]
myList[#v] = 22  --  値の更新
put myList
-- [#a: 10, #v: 22, #z: 13]


Text copyright 1999.5 Yoshiyuki Oshige.
yo@oshige.com