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

はじめてのAurigaスクリプト 基本編(20)

2011.12.10 *Sat*
■三項演算子について

最初からここを見てAurigaスクリプトを触り始めた人は
ついて来れる方はいるのだろうか?と
だんだん初心者向けじゃなくなってきた感がある当ブログですが、
このままノープランのままやって行っちゃいます。(適当ですみません)


Aurigaの三項演算子はC言語やJava系の言語で使われる書き方と同じ形で
多用しすぎると、すごく可読性が悪くなる文法です。

なので、プログラムの読みやすさを重視する企業プログラムでは
「使用禁止」されてたりすることが多いのですが、

私は、使いどころを押さえればすごく便利だし
書き方に気をつければ、読みやすくもできるので、とても好きな文法です。


ExcelやVBAなどを触ったことがある人は

ExcelのIF関数

=IF(<条件式> , <真の場合の値> , <偽の場合の値>)

VBAやVBSなどVB系のIIF関数

IIF(<条件式> , <真の場合の値> , <偽の場合の値>)

という似たようなものを触ったことがあるかもしれません。


そう、三項演算子はif構文に近い のです。

EXCELのIF関数やVB系のIIF関数を例に挙げたのは、
IF関数のほうが接頭の「IF」や「IIF」があるおかげで理解しやすいかなと
思ったからです。

if構文は、条件式によって「異なる処理」を実行しますが

if (<条件式>) {
~~真の場合の処理~~
}
else {
~~偽の場合の処理~~
}


三項演算子は条件によって「異なる値」を返します。

<条件式> ? <真の場合の値> : <偽の場合の値>



つまり、どういう時に便利なのかというと

例えば、アイテム販売NPCで
50個未満での購入だと、1個 10zeny
50個以上だと、1個 8zeny で販売したい場合、

if構文で書くと

input '@amount;

if ( '@amount < 50 ) {
set '@zeny, 10;
} else {
set '@zeny, 8;
}


三項演算子で書くと

input '@amount;

set '@zeny, ( '@amount < 50 ? 10 : 8 );


いかがでしょう。
三項演算子のほうが1行で書けてスマートに見えませんか?


もし使ってみたくなった方は、これだけは注意して使って欲しいです。

・多様しすぎない事。
・3個以上分岐するなら、素直に if構文やswitch構文を使おう。
・どうしても三項演算子の中に三項演算子を使いたい場合は、括弧を使って見やすく。

注意しないと、第三者が読めなくなるばかりか、後で自分でも読めなくなります。

こんなのとか……

set '@zeny,'@amount<50 ? 10: '@amount<200 ? '@amount<100 ? 8:6:4;


なにをしているか、すぐにわかりましたか?
わかりませんよね?

こういう書き方をする人が増えたので、「三項演算子は使用禁止」が一般的になりつつあります。

三項演算子が好きなら、他人にも読める書き方を心がけて使って欲しいです。
関連記事

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。