0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UWSCRAdvent Calendar 2023

Day 16

UWSCRで変更された仕様:特殊配列変数をともなう組み込み関数

Last updated at Posted at 2023-12-15

UWSCの一部の組み込み関数には取得したデータ群を数を返し、実際のデータは特殊配列変数に格納するというものがありました。具体的には以下になります。

関数 特殊配列変数
getallwin ALL_WIN_ID
getitem ALL_ITEM_LIST
getdir GETDIR_FILES
getoleitem ALL_OLE_ITEM

これらの関数はすべてアイテム数ではなく実際のデータを格納した配列を返すようになりました。それに伴いこれらの特殊配列変数も廃止されました。

uwsc
cnt = getallwin() // 配列の個数を返す
for i = 0 to cnt - 1
    // idはALL_WIN_ID特殊配列変数に格納されている
    id = ALL_WIN_ID[i]
    print status(id, ST_TITLE)
next
uwscr
windows = getallwin() // idの配列を返す
for id in windows
    print status(id, ST_TITLE)
next

仕様変更について

UWSCと比較すると破壊的変更となりますが、UWSCの仕様では配列を戻り値として返せなかったことによる苦肉の策だと考えていて、戻り値そのものが配列であるほうが合理的だろうという判断からこの仕様変更が行われました。
UWSCRでは特殊配列変数を含むスクリプトは動作しないため、これらの特殊配列変数を使用しているスクリプトは修正が必要になります。ご不便をおかけしますがご了承ください。

UWSCでのこれらの関数はfor-inにて特殊な動作が実装されていました。

uwsc
// inの右辺でこれらの関数を呼ぶと、変数に直接値が入る
for id in getallwin()
    print status(id, ST_TITLE)
next

UWSCRではこれらの関数が配列を返すため、上記コードはそのまま動作します。

uwscr
// 関数がID配列を返すためそのままfor-inが動く
for id in getallwin()
    print status(id, ST_TITLE)
next
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?