AppleScriptのリスト(list)型変数に対して、一般的な配列の添字的なパラメータを指定して値の設定や取得を行うAppleScriptの改良版です。
本バージョンでは、指定x,y座標から横方向(xFill)または縦方向(yFill)に指定回数連続して指定の値を代入するという処理を追加してあります。
▲本Scriptの実行結果のイメージ図
こうして見直してみると、値渡し(call by value)ではなく参照渡し(call by reference)で作ればよかったのではないかと思わされるものがあります。
添字は一般的な配列とは異なり1始まりです。添字指定が実際の配列のレンジを超えた場合にはエラーにせず、無視されます。配列に添字でアクセスできない(方法が違う)AppleScriptですが、昔からこういうルーチンを作って普通に使ってきました。
AppleScript名:配列に添字的なデータを指定してアクセス v2 |
— Created 2017-09-30 by Takaaki Naganoya — Modified 2019-10-07 by Takaaki Naganoya — 2019 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set aList to make2DBlankArray(3, 4) of me set aList to setItemByXY(2, 3, aList, "@") of me set aRes to getItemByXY(2, 3, aList, "") of me –> {{"", "", ""}, {"", "", ""}, {"", "@", ""}, {"", "", ""}} set aList to xFill(1, 1, aList, "$", 3) of me set aList to yFill(3, 2, aList, "*", 4) of me return aList –> {{"$", "$", "$"}, {"", "", "*"}, {"", "@", "*"}, {"", "", "*"}} on xFill(aX, aY, aList, aVal, aRepNum) repeat with x from aX to (aX + aRepNum – 1) set aList to setItemByXY(x, aY, aList, aVal) of me end repeat return aList end xFill on yFill(aX, aY, aList, aVal, aRepNum) repeat with y from aY to (aY + aRepNum – 1) set aList to setItemByXY(aX, y, aList, aVal) of me end repeat return aList end yFill on getItemByXY(aX, aY, aList, aBlankItem) try set aContents to contents of (item aX of item aY of aList) on error set aContents to aBlankItem end try return aContents end getItemByXY on setItemByXY(aX, aY, aList, aContents) try set (item aX of item aY of aList) to aContents end try return aList end setItemByXY –空白の2D Array を出力する on make2DBlankArray(curLen, curMax) set outArray to {} repeat curMax times set aList to {} repeat curLen times set the end of aList to "" end repeat set the end of outArray to aList end repeat return outArray end make2DBlankArray |
More from my site
(Visited 49 times, 1 visits today)