無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

for, for in, for each in

for文は3つあります。

  • 「for」は初期条件、繰り返し条件、継続処理からなるよくある(?)forです。javaのforと同じ。
  • 「for in」「for each in」はオブジェクトのプロパティを列挙します。
    • 「for in」では、プロパティのキー(配列の場合、インデックス)が順番に渡されます。
    • 「for each in」では、プロパティの値そのものが順番に渡されます。

for_loop.as:

public const array:Array = [ "a", 1, true ]
public const obj:Object  = { a:"a", b:1, c:true }

// メイン
public function main():void {

  // for
  stdout.text += "for (Array)---\n";
  for ( var i:int; i < array.length; i++ ) {
	  stdout.text += "  " + i + " : " + array[i] + "\n";
  }

  // for in / プロパティのキーが渡される
  stdout.text += "\nfor in (Array)---\n";
  for ( var j:String in array ) {
	  stdout.text += "  " + j + " : " + array[j] + "\n";
  }
  stdout.text += "\nfor in (Object)---\n";
  for ( var k:String in obj ) {
	  stdout.text += "  " + k + " : " + obj[k] + "\n";
  }
  
  // for each in / プロパティ値がそのまま渡される
  stdout.text += "\nfor each in (Array)---\n";
  for each ( var l:Object in array ) {
	  stdout.text += "  " + l + "\n";
  }
  stdout.text += "\nfor each in (Object)---\n";
  for each ( var m:Object in obj ) {
	  stdout.text += "  " + m + "\n";
  }  
}

for_loop.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete = "main()" >
    <mx:TextArea id="stdout"  width="200" height="200" />
    <mx:Script source="./for_loop.as"/>
</mx:Application>

コンパイルした結果はこちら

for文内で宣言した変数のスコープ

ActionScriptにはブロックスコープはありません。for文の初期条件などで宣言した変数は外側のスコープに属します。

public const array:Array = [ "a", 1, true ]

// メイン
public function main():void {

  // for 初期条件で 変数 i を宣言
  for ( var i:int; i < array.length; i++ ) {}
  
  // i は外側のスコープに属するため、forの外でもアクセスできる。
  stdout.text += i ;
}

コンパイルした結果はこちら


参考:Adobe Flex 2 ヘルプ-ループ