国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 辦公 > Flash > 正文

Flash AS3教程:運算符“?:”

2020-07-17 13:17:40
字體:
來源:轉載
供稿:網友
前面給大家演示了一個Flash AS3教程:小游戲開發實戰嘗試,這篇說說運算符的使用。首先個運算符,我們應不應該推崇多使用,先來做個測驗:

CODE:
var sumo:int = 0;
var sumj:int = 0;
for(var i:int = 0; i < 10000000; i ){
if(i % 2 == 0){
sumo = i;
}else{
sumj = i;
}
}
trace(getTimer());
//輸出結果:562

var sumo:int = 0;
var sumj:int = 0;
for(var i:int = 0; i < 10000000; i ){
i % 2 == 0 ? sumo = i : sumj = i;
}
trace(getTimer());
//輸出結果:572
從上面的測試結果不難看出,if else的確比?:快一點,那么是不是就應該拋棄?:呢?答案是錯
在計算10000000次的情況下,他們的效率差是那么的低。。才10毫秒。。
那么我們推薦用?:的時候:
1、沒必要的情況下。
比如,判斷邏輯值,如果為true,則a=20,如果為false,則a=30
代碼:a = p ? 20 : 30;
如果寫成if else,就是
if(p){
a = 20;
}else{
a = 30;
}
用if else勉強說得過去
那么是一個需要傳參的地方,為true,為false,情況不一樣,如果你在多出來5行,來寫這段代碼,個人認為,算是多余的了!
完全可以采用:fun(p ? 20 : 30);
如果說看不懂這樣的代碼,那么繼續往下看,會教大家一種理解 ?: 的辦法

2、邏輯比較復雜,但是都是屬于單向判斷的地方,咱就可以使用 ?: 了
比如我寫的類中,有句這樣的代碼:
num = isMaster ? (p1 ? (p2 ? 2 : 3) : (p2 ? 1 : 4)) : (p1 ? (p2 ? 4 : 1) : (p2 ? 3 : 2));
有興趣的朋友把他翻成if else,然后在對比一下這兩個代碼,你覺得那個看起來更累?
當然比較之前,還是繼續看下面,讓我來教大家如何快速理解 ?:

理解的辦法:
先看一個簡單的例子:
a = num == 1 ? 2 : 3;
用通俗的語句說,就是:如果num等于1,則a=2,否則a=3,這個很好理解,那么上面那個類似火星文的代碼
套用這種說法就比較難了,因此我們要改變思維想法,要直觀的看著理解
a是準備接收得值的物體,跟后面的計算無關,那么我們可以直接理解后面
即:num == 1這個物體問2,所以為3,擴充一下語句就是:num == 1問2你等于我嗎?2回答不,所以為3
在直觀理解的時候,先判斷num == 1是否為真值,為真?號后面的,為假:號后面的
不用把?:想象成if else,什么if num == 1 那么就等于2,否則等于3,這樣理解當然慢
就非常直觀的理解,為真,?號,否則:號

我們再來看那個類似火星文的東西:
num = isMaster ? (p1 ? (p2 ? 2 : 3) : (p2 ? 1 : 4)) : (p1 ? (p2 ? 4 : 1) : (p2 ? 3 : 2));
isMaster為true,就是(p1 ? (p2 ? 2 : 3) : (p2 ? 1 : 4)) ,否則就是(p1 ? (p2 ? 4 : 1) : (p2 ? 3 : 2))
p1為true,就是(p2 ? 2 : 3),否則就是(p2 ? 1 : 4)
…………
依次擴散,其實你會發現一個規律,沒發現也沒關系,我來幫你總結
我一眼就可以看出:
isMaster為true,p1為true,p2為true的時候,num等于2
isMaster為true,p1為true,p2為false的時候,num等于3
isMaster為true,p1為false,p2為true的時候,num等于1
isMaster為true,p1為false,p2為false的時候,num等于4
isMaster為false,p1為true,p2為true的時候,num等于4
isMaster為false,p1為true,p2為false的時候,num等于1
isMaster為false,p1為false,p2為true的時候,num等于3
isMaster為false,p1為false,p2為false的時候,num等于2

就這么簡單,或許你還能發現更多的規律,其實理解?:的時候,不要把他當作if else,記住為true,前面的,否則后面的
涉及太復雜的類型,判斷也不要用?:,但是是一些數字,邏輯值等,用用 ?: ,效果還是很不錯的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平和县| 黔江区| 石楼县| 富民县| 金平| 石屏县| 孟连| 东乌珠穆沁旗| 临朐县| 新乡市| 富川| 清新县| 山丹县| 伊金霍洛旗| 孝义市| 余干县| 独山县| 理塘县| 广州市| 南平市| 城市| 镇坪县| 安化县| 扎兰屯市| 定南县| 石棉县| 寻乌县| 墨脱县| 临海市| 兴宁市| 友谊县| 宜州市| 赞皇县| 招远市| 鄢陵县| 桐庐县| 民乐县| 张家港市| 玉门市| 镇康县| 和龙市|