在深入Haxe标准库前,理解操作符是必须的。很多人都有HTML或者Flash开发背景,所以可能有一个完整的理解关于这些操作符。因此,这里有一些总结,如果已经非常熟悉像C++,Java,JavaScript或者ActionScript的操作符使用,可以快速阅读跳过。
|操作符|关联方向|描述|
| -- | -- | -- |
|()|左到右|分组操作符|
|!|右到左|否定|
|++|左到右|递增|
|--|左到右|递减|
|*|左到右|乘法|
|/|左到右|除法|
|%|左到右|模运算|
|+|左到右|加法|
|-|左到右|减法|
|<<|右到左|左位移|
|>>|右到左|右位移|
|<|左到右|小于|
|<=|左到右|小于等于|
|>|左到右|大于|
|>=|左到右|大于等于|
|==|左到右|相等|
|!=|左到右|不等于|
|&|左到右|位与|
|\| |左到右|位或|
|^|左到右|位异或|
|&&|左到右|逻辑与|
|双竖线|左到右|逻辑或|
|= *= /= %= += -= &= ^= \|= <<= >>=|右到左|赋值操作符|
这些操作符已经按照优先级排序,从上至下。
# 二元操作符
* * * * *
二元操作符得名于他们操作两个值。包括加法,减法,除法,乘法,模运算和等号的赋值操作符等。这些都是最核心的操作符。
## 操作符优先级
常规算数运算,重要的是记住运算符优先级顺序。
为了公式更容易辨别,可以使用分组操作符。一组的操作符总是会首先执行,可以使你强制按照一个计算顺序执行。
~~~
var result:Float = (21 * ((2 + 5) - 4)) / 2;
~~~
## 模操作符
二元操作符中一个可能你不熟悉的是模操作符 (%)。它用于计算整除之后剩余的值。例如,如果用10除以3之后的剩余部分,可以使用:
~~~
remainder = 10 % 3;
~~~
开始看起来好像模操作符并没有什么用处,但是在确定是否一个值整除另外一个值是非常方便。比如,假设你想重复一个任务,但是每到第5次重复时就执行一个指定的函数。最好的方法就是创建一个变量并初始化为0,然后每次重复任务之后,就递增这个变量 1,然后使用模运算检查它的值,就像这样:
~~~
repeater = repeater + 1;
if (repeater % 5 == 0) myFunction();
~~~
如果模运算之后等于0,那么就知道该执行这个函数了,不是吗?
## 递增和递减
代码中经常使用变量作为一个计数形式。当进行计数时,通常从一个数开始然后增加或者减少它的值,那么如果你有一个变量叫做 count,希望向上递增,可以这样:
~~~
count = count + 1;
~~~
现在,它可以使用了,但是似乎 有点麻烦。可以简单的使用递增(++)操作符,每次增加 1 ,或者递减(--)操作符,每次减少 1 。使用这个功能,可以把相应操作符放在操作数的前面后者后面:
~~~
count++;
++count;
~~~
# 逻辑比较运算符
* * * * *
逻辑比较运算符用来判别表达式和值是否相等。就像二元操作符,逻辑比较运算符操作两个值或者表达式;所有的逻辑比较运算符返回布尔值。如果比较表达式为真返回true,否则返回false 。
比较运算符最常用的格式是用于比较两个表达式是否相等(==和 !=)。
还可以用于比较表达式的值小于大于,小于等于大于等于另一个表达式的值。
# 逻辑和 和 逻辑或
* * * * *
如果需要比较多于1个的逻辑比较,可以使用 && 或者 || 进行连接,即逻辑AND和逻辑OR 。逻辑AND在每一个表达式都返回 true 的时候 返回 true ,而逻辑OR 则在其中一个返回 true 的时候就返回true。
逻辑比较运算符之间可以使用分组操作符分组计算。
# 赋值操作符
* * * * *
在Haxe中, = 并不是唯一的赋值操作符。还包括 += ,-+,*=,/=等等,前面的表中列出了相应操作符。
# 位运算
* * * * *
(位运算不太熟悉,暂时不翻译了)
- 本书目录
- 第一章: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
- 附加部分