haXe学习笔记(五)

 

动态类型

一、可以赋任意类型的值

var dynamicVar : Dynamic; dynamicVar = "Hello"; dynamicVar = 123; 二、可以赋值给其他任意类型变量
var dynamicVar : Dynamic; var year : Int; dynamicVar = "Hello"; year = dynamicVar;//会产生运行时错误
三、可以动态添加任意类型的变量,包括函数变量
var dynamicVar : Dynamic; dynamicVar = {}; dynamicVar.id = 12; dynamicVar.name = "Name";
dynamicVar.func = function (name:String) { trace(name); };
dynamicVar.func("Test");
四、参数化动态类:所有变量类型都必须是指定类型
var dynamicVar : Dynamic<String>; dynamicVar = {}; dynamicVar.id = "ID";
dynamicVar.name = "Name";
五、类实现Dynamic接口:可以动态添加任意类型变量
class User implements Dynamic { public var name : String; public var age : Int; }
var u = new User();
u.name = "Name";
u.newVar = 10;//动态创建的变量,访问类里未定义的变量时,带变量名的resovle方法会被调用
六、类实现Dynamic接口,并制定参数类型:可以动态添加指定类型的变量
class User implements Dynamic<String> { public var name : String; public var age : Int; }
var u = new User();
u.name = "Name";
u.newVar = "10";
七、resolve应用
class Component implements Dynamic<String>
{
public var properties : Hash<String>;
public var metadata : Hash<String>;
public function new()
{
properties = new Hash<String>();
metadata = new Hash<String>();
properties.set("a", "b");
metadata.set("c", "d");
}
public function resolve(name : String) : String
{
//If this key exists in the metadata
if(metadata.exists(name))
return metadata.get(name);
//If this key exists as a property
if(properties.exists(name))
return properties.get(name);
//This key doesn't exist, return null.
return null;
}
}
var c = new Component();
trace(c.a);//b
八、关键字dynamic
加载方法前面的修复符,用于动态重新定义方法,只有部分平台支持,而且会降低性能
public dynamic function myFunction() { }
九、属性
1. 用get、set方法定义
class DuckType
{
public var id(getId, setId):Int;
public var name:String;
public function getId():Int {
return this.id;
}
public function setId(id:Int):Int {
trace(id);
return this.id = id;
}
public function new(id:Int, name:String)
{
this.id = id;
this.name = name;
}
}
2. 只读、只写
public var readOnly(getProp, null) : String;
public var writeOnly(null, setProp) : String;
3. 默认get、set
var prop(default, setX) : Int;
var prop(getX, default) : Int;
4. dynamic:动态指定get、set方法,flash平台不能使用,js平台可以使用
class C {
public var age(dynamic,dynamic) : Int;
public function new() {
}
}
var c = new C();
var my_age = 26;
Reflect.setField(c, "get_age", function() { return my_age; } );
Reflect.setField(c, "set_age", function(a) { my_age = a; return my_age; } );
trace(c.age); // 26
c.age++; // will call c.set_age(c.get_age()+1)
trace(c.age); // 27
5. null:外部无法访问,内部可以访问
public var readOnly(getProp, null) : String;
6. never:内部和外部都无法访问,甚至通过反射也不行
public var readOnly(getProp, nerver ) : String;

7. 如果变量为动态类型,或者在untyped块中,则无法使用属性

var c : Dynamic = new C(); trace(c.x);//为空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值