--.--.-- *--*
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

はじめてのAurigaスクリプト 番外編(2)

2011.12.10 *Sat*
Aurigaの波括弧(スコープ)の謎

ちょっとマニアックかもしれませんが
一応知っておくべき知識だと思うので書いてみます。


普段なにげなーく使っている {} ですが、実は謎があります。

実は{} は if構文や、for構文、switch構文の為だけにあるのではなく、{} 自体が構文なのです。

こんな書き方ができます。(C言語やJava系、Perlでも可能)

prontera.gat,168,189,4 script 波括弧の実験 112,{

{
set '@var, 123;
dispbottom '@var;
}
set '@var, 234;
dispbottom '@var;
}

スクリプトの結果:

123


{}内で一時変数'@varに123をセットしてdispbottomでメッセージ窓に表示しています。
2回目は234をセットしてdispbottomでメッセージ窓に表示しています。

しかし、2回目の実行はなぜか失敗しています。
エラーは出ていません。

どうやら、{}内の変数や関数は、{} の終わりと共にアクセスできない状態になっているようです。

ちなみにこれは if構文やfor構文でもおきてしまう現象です。注意!

こう書くと、'@varは {}外の変数となり、正常に動作します。

prontera.gat,168,189,4 script 波括弧の実験 112,{

set '@var, 0;
{
set '@var, 123;
dispbottom '@var;
}
set '@var, 234;
dispbottom '@var;
}

スクリプトの結果:

123
234



C言語などでは、スコープ内で宣言された変数は
スコープ内のみ有効となり、スコープ外の同じ変数には影響を与えない仕様です。

Aurigaの場合、変数宣言は存在しないので、同じ使い方は不可能なのですが
なぜか、このような現象が起きてしまうようです。謎です。。。
関連記事

COMMENT

Comment Form


秘密にする
 


TRACKBACK

TrackBack List



プロフィール

Author:みのり

すごく面倒臭がりで大雑把です。
なので、すぐ楽をしようとして
ツールを作り始めます。
ツールを作る時間と手作業で費やす時間
はたしてどちらが短いのか……


-構築環境-

Auriga0945 MySQL 5.5
with 2011-12-20bRagexeRE

3CeAM rev525
with 2010-07-30aRagexeRE



カテゴリ

未分類 (9)
RagexeRE (9)
eAthena (1)
Auriga (5)
ツール:eAthena用 (4)
ツール:Auriga用 (6)
ツール:その他 (14)
はじめてのAurigaスクリプト (8)
はじめてのAurigaスクリプト基本編 (21)
はじめてのAurigaスクリプト応用編 (7)
Aurigaスクリプト (3)
本鯖 (7)
Aurigaスクリプト:冒険者アカデミー (6)
ドラクエ10 (2)
新生FF14 (3)
EVE Online (2)



最新記事



最新コメント



月別アーカイブ



検索フォーム



リンク

このブログをリンクに追加する



ブロとも申請フォーム

この人とブロともになる



QRコード

QR



12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Copyright © Rocco di Forte All Rights Reserved.
テンプレート配布者: サリイ  ・・・  素材: HELIUM  ・・・ 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。