2020/7/27 訂正・追記:
母艦のサイズを例にした部分「x,y,w,h」の変数に入れていますが、
サイズが返す値は「x1,y1,x2,y2」なので以下は読み替えてください。
(後から気づいた)
「変数分配」っていう命令があります。
【名前】変数分配 (へんすうぶんぱい)
【引数】{=?}AをSへ|AからSに
【説明】配列Aの要素の各値を文字列Sの変数リスト「変数,変数,変数...」へ分配する。
結構便利なのですがややマイナーか。使用例をいくつか。
//抽出文字列+変数分配で使う例
今日を「(####)/(##)/(##)」でワイルドカードマッチ
抽出文字列を「yyyy,mm,dd」へ変数分配
//区切る+変数分配で使う例
母艦のサイズを「,」で区切って「x,y,w,h」へ変数分配
//二次元配列を反復+変数分配で使う例
窓列挙してCSV取得
反復
対象を「handle,クラス名,テキスト,id」へ変数分配
うん、結構便利!
問題点と工夫
●テスト
xとは変数
yとは変数
母艦のサイズを「,」で区切って「x,y,w,h」へ変数分配
xを表示 //→ローカル変数
yを表示 //→ローカル変数
wを表示 //→グローバル変数
hを表示 //→グローバル変数
関数内で変数宣言がされているものはローカル変数になり、
されていないものはグローバル変数に入ります。
これは!変数宣言が必要
とちょっと相性が悪い感じ。
!変数宣言が必要
母艦のサイズを「,」で区切って「x,y,w,h」へ変数分配
wを表示 //→エラー 厳密に宣言してください
ゲームを作るなら!変数宣言が必要
にしたほうがよいので工夫します。
//グループメンバに変数分配する
!変数宣言が必要
■SIZE型
・x
・y
・w
・h
テスト
●テスト
sizeとはSIZE型
sizeについて //~~についてのブロック内で
母艦のサイズを「,」で区切る
それを「x,y,w,h」へ変数分配 //変数分配すると、メンバに入る
xを表示 //→ size.x が表示される
「(グループ)について」のブロック内で変数分配を使うとメンバに入ります。
結構便利!
便利に使う
csvのデータを加工する際に、見出しをそのまま変数名にすることもできます。
「id,カード名,コスト
1,槍,100
2,斧,200」をCSV取得
反復
もし回数==1ならば
見出し=対象を「,」で配列結合 // 見出し=「id,カード名,コスト」
違えば
対象を見出しへ変数分配
カード名を表示 //→槍、斧
↑お手軽なプログラム向き
↓重厚なプログラム向き
!変数宣言が必要
■カード型
・id
・カード名
・コスト
カードとは変数
カードリストとは変数
「id,カード名,コスト
1,槍,100
2,斧,200」をCSV取得してカードリストに代入
//カード[id]にCSVのデータをいれる
カードリストロード
●カードリストロード
cardとはカード型
見出しとは変数
カードリストを反復
もし回数==1ならば
見出し=対象を「,」で配列結合
違えば
cardについて
対象を見出しへ変数分配
cardをカード[id]へグループコピー
カード[1]→カード名を表示 //槍
カード[2]→カード名を表示 //斧
csvデータの列が増えることを見越した書き方になったと思います。
結構便利!
(別件で、自作のシンタックスハイライトが「グループコピー」の「ループ」に反応したので何か考えます)
文字列型になることに注意
言い忘れたことがあります。
変数分配で入った変数は「文字列型」になります。
型によるバグは……あるかもしれないし、ないかもしれない。
母艦のサイズを「,」で区切って「x,y,w,h」へ変数分配
デバッグ