`
kino
  • 浏览: 104913 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

as3备忘六-数据类型(类型检查)

    博客分类:
  • flex
阅读更多

1、as3会进行类型检查,看数据类型是否匹配。

 

2、数据类型不匹配的几种情况

  • 声明了一个变量的类型,但是赋给它非此类型的值:
    var num:Number;
    num = "str';
     
  • 声明的参数类型和参数值不同:
    function test(p:String):void{}
    
    test(3);
     

3、何时检查? 可以在编译时检查,也可以在运行时检查。编译分为两种模式,严格模式和标准模式。严格模式会在编译时执行类型检查,标准模式则不会;但两种模式都会在运行时检查。

 

 

4、严格模式下退出类型检查。 在严格模式下也可以避免进行类型检查,通过使用无类型变量。

例一:

function test1(p):void{
    trace(p);
}
var a:Number = 10;
var b:String = "Hello";

test1(a);
test1(b);

例二:

function test2(p:String):void{
    trace(p);
}
var a:* = 10

test2(a); 

在例一和例二中,编译时都不会报错。因为,例一中,函数test1的参数声明为无类型的,它就可以接收任何类型的参数;例二中,虽然函数test2的参数类型为字符串,但我们传进去的参数为无类型的。

但是例二中会产生运行时错误,因为到运行时就会发现传进的参数是数字型的,和声明的参数类型不匹配。

 

5、 使用标准模式编译,实际上是把类型检查推迟到运行时进行,这样可以实现类的“上传”功能。

//定义
class ClassA extends ClassB{
    var name:String;
}

//调用
var some:ClassB = new ClassA();
some.name="some";

 如上,我们定义了ClassA,它继承自ClassB。ClassA定义了自己的一个属性name。在接下来的调用中,我们声明了一个ClassB类型的变量some,但我们赋给它了一个ClassA的实例,这是合法的,这就叫做“上传”。但接下来,我们给some的属性name赋值,但属性name并不属于ClassB,如果在严格模式下就会产生编译错误,但不会产生运行时错误。

 

6、is运算符。 用于测试变量或表达式是否为给定数据类型的成员,返回true或false。

假设:

  • 存在类A
  • 类A继承类B
  • 类A实现接口IM
  • 类B继承类C
  • 类C实现接口IN

 

有:

var a:A=new A();

a is A;    //true
a is B;    //true
a is C;    //true
a is IM;  //true
a is IN;  //true
//B、C为A的父类,IM、IN为A实现的接口

 上面的每个表达式都为true;

 

和instanceof的不同,将is换成instance:

var a:A=new A();

a instanceof A;    //true
a instanceof B;    //true
a instanceof C;    //true
a instanceof IM;  //false
a instanceof IN;  //false
//B、C为A的父类,IM、IN为A实现的接口

 可以看到后两项为false,可以看出两者的不同:is可以检查接口,instance不能,所以我们应该用is

 

7、as运算符。功能和is一样,唯一的区别就是返回值,is返回true时,as返回测试的对象或表达式,is返回false,as返回null.

var a:A=new A();

a as A;    //返回对象a
a as B;    //返回对象a
a as C;    //返回对象a
a as IM;  //返回对象a
a as IN;  //返回对象a
a as XX;  //返回null
//B、C为A的父类,IM、IN为A实现的接口
 

本文地址:http://kino.iteye.com/blog/236381 ,转载请注明,谢谢。

3
0
分享到:
评论

相关推荐

    备忘录--C++程序

    3. **数据结构**:为了存储多个备忘录,可以使用`std::vector`或者`std::list`。考虑使用`std::shared_ptr`管理动态内存,以防止内存泄漏。 ### 三、用户交互 1. **输入/输出**:使用`std::cin`获取用户输入,`std...

    MB备忘----2

    【标题】"MB备忘----2"所提及的内容可能与某个名为"MB"的项目或者技术有关,这可能是一个软件开发、系统管理或者是其他IT领域的记事或文档集合。"MB"可能是项目缩写,也可能是特定技术或工具的名称。由于描述中提到...

    调试备忘录-SWD协议解析 - 洛神殇 - 博客园1

    - **读IDCODE**:接着,主机读取DP寄存器中的IDCODE,这可以确认目标MCU的类型和版本信息。 - **清除错误标志位**:清除DP寄存器中的错误标志位,确保后续操作不会受错误影响。 - **使能AP调试**:启用AP,以便...

    javaMD5加密及登录验证(备忘) - Hibernate - Java - ITeye论坛.mht

    javaMD5加密及登录验证(备忘) - Hibernate - Java - ITeye论坛.mhtjavaMD5加密及登录验证(备忘) - Hibernate - Java - ITeye论坛.mhtjavaMD5加密及登录验证(备忘

    美国交通设施的六大主要经济事实-汉密尔顿工程 -政策备忘录-2015.5-外文-报告资料.pdf

    美国交通设施的六大主要经济事实-汉密尔顿工程 -政策备忘录-2015.5-外文-报告资料.pdf

    备忘录---win7使用

    电脑中的必备品,如有兴趣的可以私下交流,备忘相关事宜。

    -我的Linux速查备忘手册-速查

    -我的Linux速查备忘手册-速查

    web个人日历备忘系统-c#-sql

    开发者可能使用了SQL Server或者MySQL等数据库管理系统,创建了相应的数据表来存储用户信息和备忘记录。 【Web 日历】部分,开发者设计了一个直观的日历界面,用户可以通过日历视图查看每天的备忘。这通常涉及到...

    MB备忘----2 Message Models

    2. **消息定义文件**:通过消息定义文件来详细描述消息的结构,包括字段、数据类型、大小等。 3. **消息模型对象**:使用消息模型对象来表示复杂的消息结构,如多部分消息或消息之间可能存在的关系。 4. **消息类别...

    微信小程序-备忘录-记录代办事项(源码+截图)

    微信小程序实现的简易备忘录,可以记录代办事项,可以标记事项是否完成 微信小程序实现的简易备忘录,可以记录代办事项,可以标记事项是否完成 微信小程序实现的简易备忘录,可以记录代办事项,可以标记事项是否完成...

    信息披露业务备忘录-股权激励备忘录8号(深交所)分享.pdf

    信息披露业务备忘录-股权激励备忘录8号(深交所)分享.pdf

    网站合作备忘录-知识杂货店.xls

    网站合作备忘录-知识杂货店.xls

    C++ 备忘单-.pdf

    2. **数据类型**: - 整型:`int`, `short`, `long`, `long long` - 浮点型:`float`, `double`, `long double` - 字符型:`char` - 布尔型:`bool` (true/false) - 字符串:`std::string` 3. **变量声明与...

    MB备忘----2 Message Flows

    NULL 博文链接:https://ibmtech.iteye.com/blog/722412

    网络编程备忘--各种常用函数色彩等

    《网络编程备忘--各种常用函数色彩等》 在IT领域,网络编程是构建现代互联网应用的核心技术之一。本资源,名为“网络编程备忘手册”,涵盖了多种编程语言和技术,如ASP、PHP、Ruby、CSS、ASCII、HTML、SQL Server...

    备忘录-微信小程序源码.zip

    6. 数据绑定和状态管理:WXML与JS之间的数据交互,以及如何利用微信小程序的API进行状态管理和数据操作。 7. UI设计与响应式布局:使用WXSS实现小程序的界面设计,以及适应不同设备的响应式布局。 8. 事件处理:...

    备忘录--android初学者例子

    这是我刚学android时自己写的一个例子,主要用到了Activity,ContentProvider, BroadcastReceiver三大组件,还有涉及其他知识,我认为刚学android的话挺不错的例子

    移动开发-微信小程序-备忘录-应用开发

    数据存储解决方案:探讨使用微信小程序提供的本地存储或云开发数据库存储备忘录数据的方法和技术。 用户界面设计:讨论如何设计一个清晰、友好的用户界面,确保用户能够轻松地进行日常的备忘录管理。 性能优化和安全...

    自定义加密备忘录-使用方便

    工作过程中,我们有很多常用的密码、链接等等直接写到.txt备忘录中,便于工作中复制使用,但是缺乏安全性。 在网上下载了几个加密文件,但是都达不到个人的方便为主的需求,所以开发了此应用。 功能介绍: 设置总...

    桌面备忘录--便条,日常事务管理小软件

    对隐私的保护以及数据的安全性,也是该软件吸引用户的亮点之一。 这款软件的可执行文件名为“便条(桌面备忘录).exe”,用户下载安装后,即可在电脑上使用这款备忘录软件。在实际使用过程中,用户不仅可以按照自己的...

Global site tag (gtag.js) - Google Analytics