1

JavaScriptで次のコードスニペットを持っています

myArr = []; 
myArr.push(3); 
myArr.push(5); 
myArr.push(11); 

// console.log(myArr.length)

le = myArr.length;
for (var i=0; i < le; i++) {
     elem = myArr[i];
     // ...  e.g.
     console.log(elem)

}

LiveCode への翻訳はどのように見えますか? 言い換えれば、要素をプッシュして配列操作をエミュレートし、配列の長さを尋ねるにはどうすればよいでしょうか。

: LiveCode は連想配列のみをサポートしているようで、実装された配列操作の「チート シート」はまだ見つかりません。

答えにコメントする

最初の答えはマークによって与えられました。それを行う方法の一般的なアイデアを提供します。その後、アレックスはコードを機能させるようにしました。あなたがた両方に感謝します。

4

2 に答える 2

0

マークの解決策は完全には正しくありません。「push」はライブコードの予約語であるため、ハンドラー名として「push」を使用することはできません。以下のコードでは、「mypush」を使用するように変更しました

また、「myArray」の宣言を「mouseup」ハンドラー内に配置すると、そのハンドラー内でのみグローバル配列にアクセスできるようになるため、バージョンは正しく機能しません。さらに、'push' ハンドラー内で 'myArray' にアクセスすると、実際には、暗黙的に宣言されたローカル変数を宣言していることになります。

以下は、これら両方の問題を考慮して変更されたバージョンのコードであり、適切に動作する (ように見える) ようです。

global myArray
on mouseUp
   mypush 3  
   mypush 5  
   mypush 7
   repeat for each key myKey in myArray
      put myArray[myKey] & cr after msg
   end repeat
end mouseUp

on mypush elem
   local myMaxKey
   put item 2 of the extents of myArray into myMaxKey
   put elem into myArray[myMaxKey+1]
end mypush
于 2013-07-19T22:44:45.190 に答える