if語句是最基礎最可塑的條件關鍵字,提供你的應用中大部分的條件控制語句。條件表達式在if 后面的括號中,如果表達式返回 true,那么語句塊里的代碼會被執行:
~~~
if ( 3 == 3 ) someVar = someValue;
// rest of application
~~~
如果多于一條待執行的語句,要使用花括號把代碼圍起來:
~~~
if ( 3 == 3 )
{
someVar = 1; someVar++;
}
// rest of application
~~~
if語句后面的行或者代碼塊只有在條件返回true的時候才被執行。你可以反轉條件語句的值,通過提供一個否定條件操作符,或者否定整個表達式,通過符號 (!) 執行:
~~~
if ( 3 != 3 )
// do this...
~~~
前面的代碼和這個代碼作用相同:
~~~
if ( ! 3 == 3 )
// do this...
~~~
否定操作符改變條件表達式的返回值,所結果原來為true就返回false,原來是false就返回true 。它不會改變if語句的規則。但是,如果需要一個false結果的執行語句,可以使用 else 關鍵字,提供另一個執行邏輯。else 必須跟在if執行代碼塊之后:
~~~
if ( 3 == 3 )
// if true, execute this line
else
// otherwise, execute this line
~~~
可以嵌套if語句,所以可以在多個條件滿足的時候執行代碼:
~~~
if ( thatVar == thatValue )
{
if ( thisVar == thisValue )
{
// do code
}
}
~~~
嵌套的if 語句表示只有外部的 if 語句為ture 才會執行。可以在 if 語句中組合表達式,使用條件操作符。因此,可以重寫這個例子:
~~~
if ( thatVar == thatValue & & thisVar == thisValue )
{
// do code
}
~~~
當使用這種方式組合語句,虛擬機仍然認為這是單獨的來執行。意思是說,如果前兩個表達式返回false,那么第二個表達式不會執行,所以任何數據修改在第二個表達式中都不會發生。例如:
~~~
var myInt = 3;
if ( 4 == 3 & & ++myInt == 4 )
{
// do code
}
trace( myInt );
~~~
這里,一個期望 myInt 等于 4,因為 前遞增操作。但是,因為表達式 4==3 不成立,第二部分表達式不會被執行,所以 myInt 被輸出值為 3 。
嵌套 if 語句 通常是優先選擇的,雖然有時候它是必須的因為邏輯流程。然而,通過組合條件語句為一個單獨的 if 語句,只有一個表達式執行了驗證,不是兩個。然而,這個增加是忽略的,不會影響你的決策。
當嵌套一個 if 語句在 else 塊,實際上提供一個新的分支測試一個表達式的相等。
~~~
if ( myVar == 1 )
// do this...
else
if ( myVar == 2 )
// do this
else
if ( myVar == 3 )
// repeat as necessary ...
else
// if all else fails, do this
~~~
if 語句用這種方式可以嵌套任意深度,盡管他們沒有必要用這種縮進方式。多數開發人員通常提供嵌套的 if 關鍵字 直接在 else 關鍵字之后,提供一個新的語句類型:
~~~
if ( myVar == 1 )
// do this...
else if ( myVar == 2 )
// do this...
else if ( myVar == 3 )
// repeat as necessary ...
else
// if all else fails, do this
~~~
就像你看到的,這使你的代碼看起來整潔易讀。最后的 else 塊用在嵌套 if 語句格式的最后,如果所有else 都失敗,意味著任何比較都沒有達成,執行這里的語句。
整理if 語句可以使你的代碼大大縮短,雖然這是你的自由。例如:
~~~
if ( 3 == 3 )
myVar++;
else
myVar--;
~~~
還可以更易讀:
~~~
if ( 3 == 3 ) myVar++ else myVar--;
~~~
如果你看了最后的示例,可能注意到 else 關鍵字之前的表達式不能立即用分號結尾。這是為了幫助使整個 if 語句更易讀,允許單行語句直接跟隨在條件表達式之后。
- 本書目錄
- 第一章:Haxe介紹
- 互聯網開發的一個問題
- Haxe是什么,為什么產生
- Haxe編譯工具
- Haxe語言
- Haxe如何工作
- 那么Neko是什么
- Haxe和Neko的必須條件
- 本章摘要
- 第二章:安裝、使用Haxe和Neko
- 安裝Haxe
- 使用Haxe安裝程序
- 在Windows上手動安裝Haxe
- Linux上手動安裝Haxe
- 安裝Neko
- Windows上手動安裝Neko
- 在Linux上安裝Neko
- Hello world! 一式三份
- 編譯你的第一個Haxe應用
- 你的程序如何編譯
- HXML編譯文件
- 編譯到Neko
- 編譯為JavaScript
- 程序結構
- 編譯工具開關
- 本章摘要
- 第三章:基礎知識學習
- Haxe層級結構
- 標準數據類型
- 變量
- 類型推斷
- 常數變量
- 簡單的值類型
- 浮點類型
- 整型
- 選擇數值類型
- 布爾類型
- 字符串類型
- 抽象類型
- Void 和 Null
- 動態類型
- unknown類型
- 使用untyped繞過靜態類型
- 注釋代碼
- 轉換數據類型
- Haxe數組
- Array
- List
- Map
- Haxe中使用日期時間
- 創建一個時間對象
- Date組件
- DateTools類
- 操作數據
- 操作符
- Math類
- 使用String函數
- 本章摘要
- 第四章:信息流控制
- 數據存放之外
- 條件語句
- if語句
- switch語句
- 從條件語句返回值
- 循環
- while循環
- for循環
- 循環集合
- Break和Continue
- 函數
- 類的函數
- 局部函數
- Lambda類
- 本章摘要
- 第五章:深入面向對象編程
- 類和對象
- 實例字段
- 靜態字段
- 理解繼承
- Super
- 函數重載
- 構造器重載
- toString()
- 抽象類和抽象方法
- 靜態字段,實例變量和繼承
- 繼承規則
- 使用接口
- 高級類和對象特性
- 類的實現
- 類型參數
- 匿名對象
- 實現動態
- Typedef
- 擴展
- 枚舉
- 構造器參數
- 本章摘要
- 第六章:組織你的代碼
- 編寫可重用代碼
- 使用包
- 聲明一個包
- 隱式導入
- 顯式導入
- 枚舉和包
- 類型查找順序
- 導入一個完整的包
- 導入庫
- Haxe標準庫
- Haxelib庫
- 其他項目中的庫
- 外部庫
- 使用資源
- 文檔化代碼
- 離線文檔
- 在線文檔
- 單元測試
- haxe.unit包
- 編寫測試
- 本章摘要
- 第七章:錯誤調試
- trace函數
- trace輸出
- haxe的trace和ActionScript的trace
- 異常
- 異常處理
- CallStack和ExceptionStack
- 異常管理類
- 創建完全的異常處理類
- 異常類代碼
- 本章摘要
- 第八章:跨平臺工具
- XML
- XML剖析
- Haxe XML API
- 正則表達式
- EReg類
- 模式
- 定時器
- 延遲動作
- 隊列動作
- MD5
- 本章摘要
- 第九章:使用Haxe構建網站
- Web開發介紹
- Web 服務器
- 使用Web服務器發布內容
- HTML速成課程
- Haxe和HTML的區別
- NekoTools Web Server
- Apache安裝mod_neko
- Windows安裝Apache和mod_neko
- Linux安裝Apache和Mod_Neko
- 第一個Haxe網站
- 使用Neko作為網頁Controller
- neko.Web類
- Neko作為前端控制器
- 本章摘要
- 第十章:使用模板進行分離式設計
- 什么是模板
- Template類
- Template語法
- 使用資產
- 何時在模板中使用代碼
- 服務器端模板的Templo
- 安裝Templo
- 使用Templo
- haxe.Template和mtwin.Templo表達式上的區別
- Attr表達式
- Raw表達式
- 邏輯表達式
- 循環表達式
- set, fill, 和 use表達式
- Templo中使用宏
- 手動編譯模版
- 第十一章:執行服務端技巧
- 第十二章:使用Flash構建交互內容
- 第十三章:使用IDE
- 第十四章:通過JavaScript制作更多交互內容
- 第十五章:通過Haxe遠程通信連接所學
- 第十六章:Haxe高級話題
- 第十七章:Neko開發桌面應用
- 第十八章:用SWHX開發桌面Flash
- 第十九章:多媒體和Neko
- 第二十章:使用C/C++擴展Haxe
- 附加部分