try catchでスコープが可能!?
iに注目
偶然にもtry catchでもスコープがあることを発見した。
catch(i:int)で宣言しているiのスコープはtry catchの中でしか見えない。
つまりiにcatchでスコープが発生していることになる。
何でこうなるかはわかんない
くれぐれも遊び以外では使わないように
@author coppieee
♥2 |
Line 28 |
Modified 2009-08-29 00:04:16 |
MIT License
archived:2017-03-10 14:57:06
ActionScript3 source code
/**
* Copyright coppieee ( http://wonderfl.net/user/coppieee )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/aeyI
*/
//iに注目
//偶然にもtry catchでもスコープがあることを発見した。
//catch(i:int)で宣言しているiのスコープはtry catchの中でしか見えない。
//つまりiにcatchでスコープが発生していることになる。
//何でこうなるかはわかんない
//
//くれぐれも遊び以外では使わないように
//@author coppieee
package
{
import flash.display.Sprite;
import flash.text.TextField;
public class Main extends Sprite
{
public function Main():void
{
var xs:Array = [];
try { throw 0; } catch (i:int) {
for (; i < 5; i++ )
{
xs.push(i);
}
}
var sum:int = 0;
try { throw 0; } catch (i:int) {
for (; i < xs.length; i++ )
{
sum += xs[i];
}
}
var tf:TextField = new TextField();
addChild(tf);
tf.text = "sum" + sum;
//trace(i);//コンパイルエラー
}
}
}