haXe学习笔记(四)

一、显式变量:定义变量时申明变量类型

比如: var myVar:String;

变量未赋值之前不能使用

一旦变量类型申明后,不能再赋值其他类型的值

但可以用其他类型重新申明变量,比如var myVar:Int,但最好不要这样做

二、函数变量

函数public function outputString(st : String) : Void;的类型为String->Void

public function sumAndCeil(a : Float, b : Int) : Int类型为Float->Int->Int

public function filter(f : String->Bool) : List<String>类型为(String->Bool)->List<String>

public function takesStringReturnsFunction(s : String) : String->Bool类型为String->(String->Bool)

三、动态函数

函数和静态函数都可以设置为动态,这样在运行时,可以重新设置函数的值,但类型必须一致。

动态函数只能设置在类的实例上,静态函数只能设置在类上,另外动态函数不能重载,也不能用super

public dynamic function saySomething()

public static dynamic function saySomething()

四、匿名对象

var obj: { id:Int, name:String } = { id:10, name:"Name" };

五、Duck Typing:如果某个类里面有匿名对象里的所有成员变量,这此类可以赋值给匿名变量

class DuckType

{

public var id:Int;

public var name:String;

public function new(id:Int, name:String)

{

this.id = id;

this.name = name;

}

}

var obj: { id:Int, name:String }  = new DuckType(10, "Name“);

六、隐式变量

申明变量时不指定类型,由编译器判断其类型(第一次赋值时)

七、类型转换

1. 安全转换

var a : A; var b : B; b = cast(a, B);//如果a不是B类型,运行时会出错

2. 非安全转换

var i : Int; i = cast "Hello";//可以将任意类型的变量转换为被赋值变量的类型,但如果不能转换时,会报运行时错误

3. untyped

untyped { myVar.doSomething();}//此时编译器不会检查类型,但可能产生运行时错误

八、模板类

1. class Array<T>

2. class Fridge<T: (Fruit, Eatable)>//T必须是Fruit和Eatable类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值