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

as3备忘八-杂:类型转换、字面值、常量、运算符、语句(for in和for each in)

    博客分类:
  • flex
阅读更多

先说一下数据类型:

基元数据类型包括 Boolean、int、Null、Number、String、uint 和 void。ActionScript
核心类还定义下列复杂数据类型:Object、Array、Date、Error、Function、RegExp、
XML 和 XMLList。

 

1、类型转换就是将一个对象的类型转换成另外的一种类型(它有资格转换,如果没有就会出错)。


2、什么时候需要类型转换? 简单来说就是,当需要一个特定类型的值时,而给定的值确不是该类型,这时就需要转换,但不一定成功!大概有下面几种:

  • 变量赋值,当无值和变量类型不匹配时,就会转换,如果不成功就会报类型不匹配的错误。
  • 传参,当传的参数和参数类型不一致时。
  • 返回值,当返回的值和声明的返回类型不一致时。
  • 当进行加法运算时,可能存在需要转换的地方。
  • 当你需要一个特定类型的对象时,可能去把一个对象转换成另外一种类型时。

3、转换方式有隐式转换和显示转换 (很多语言里都有就不说了)。在严格模式下尽量使用显示转换。

 

4、可以将任何类型的对象转换成int,uint,Number,Boolean,String。 至于具体转换的规则可以查看其他资料。对于int,uint,Number来说,当发现不能转换数字时,int,uint就会把它转成0,而Number转换成NaN.


5、字面值(摘书自《ActionScript3.0 编程》)

“字面值”是直接出现在代码中的值。 下面的示例都是字面值:

17
"hello"
-3
9.4
null
undefined
true
false

 

字面值还可以组合起来构成复合字面值。数组文本括在中括号字符 ([]) 中,各数组元素之间用逗号隔开。数组文本可用于初始化数组。下面的几个示例显示了两个使用数组文本初始化的数组。您可以使用 new 语句将复合字面值作为参数传递给 Array 类构造函数,但是,您还可以在实例化下面的 ActionScript 核心类的实例时直接赋予字面值:Object、Array、String、Number、int、uint、XML、XMLList 和 Boolean。

// 使用 new 语句。
var myStrings:Array = new Array(["alpha", "beta", "gamma"]);
var myNums:Array = new Array([1,2,3,5,8]);
// 直接赋予字面值。
var myStrings:Array = ["alpha", "beta", "gamma"];
var myNums:Array = [1,2,3,5,8];

 

字面值还可用来初始化通用对象。通用对象是 Object 类的一个实例。 对象字面值括在大括号 ({}) 中,各对象属性之间用逗号隔开。每个属性都用冒号字符 (:) 进行声明,冒号用于分隔属性名和属性值。可以使用 new 语句创建一个通用对象并将该对象的字面值作为参数传递给 Object 类构造函数,也可以在声明实例时直接将对象字面值赋给实例。下面的示例创建一个新的通用对象,并使用三个值分别设置为 1、2 和 3 的属性(propA、propB 和 propC)初始化该对象:

// 使用 new 语句。
var myObject:Object = new Object({propA:1, propB:2, propC:3});
// 直接赋予字面值。
var myObject:Object = {propA:1, propB:2, propC:3};

 

6、常量。常量是指具有无法改变的固定值的属性。只能为常量赋值一次,而且必须在最接近常量声明的位置赋值。用const 代替var来创建。

  • 将常量声明为类的成员,则只能在声明过程中或者在类构造函数中为常量赋值。
    class A
    {
        public const MINIMUM:int = 0;
        public const MAXIMUM:int;
        public function A()
        {
            MAXIMUM = 10;
        }
    }
    
    var a:A = new A();
    trace(a.MINIMUM); // 0
    trace(a.MAXIMUM); // 10
     上面是合法的。
  • 如果您尝试在类的外部设置 MAXIMUM 的初始值,将会出现运行时错误。
    class A
    {
        public const MINIMUM:int = 0;
        public const MAXIMUM:int;
    }
    var a:A = new A();
    a["MAXIMUM"] = 10; // 运行时错误
     

7、运算符,记一下主要运算符 (其他运算符和java差不多)

  • []                        初始化数组
  • {x:y}                 初始化对象
  • ()                      对表达式进行分组
  • f(x)                    调用函数
  • new                    调用构造函数
  • x.y x[y]             访问属性
  • <></>              初始化XMLList 对象(E4X)
  •                       访问属性(E4X)
  • ::                        限定名称 (E4X)
  • ..                        访问子级XML元素 (E4X)

8、as3中的语句大多和java中的差不多,只是要注意一下循环语句for in和 for each in

  • for..in 循环用于循环访问对象属性或数组元素
    var myObj:Object = {x:20, y:30};
    for (var i:String in myObj)
    {
         trace(i + ": " + myObj[i]);
    }
    // 输出:
    // x: 20
    // y: 30
     可以使用 for..in 循环来循环访问通用对象 的属性 (不按任何特定的顺序来保存对象的属性,因此属性可能以看似随机的顺序出现)
    var myArray:Array = ["one", "two", "three"];
    for (var i:String in myArray)
    {
         trace(myArray[i]);
    }
    // 输出:
    // one
    // two
    // three
     还可以循环访问数组中的元素 .
    注意,循环的是属性名称,通过此名称去取属性值,和javascipt类似。
    如果对象是自定义类的一个实例,则除非该类是动态类 ,否则将无法循环访问该对象的属性 。即便对于动态类的实例 ,也只能循环访问动态添加的属性
  • for each..in 循环用于循环访问集合中的项目, 它可以是 XML 或 XMLList 对象中的标签、对象属性保存的值或数组元素。
    访问通用对象的属性。
    var myObj:Object = {x:20, y:30};
    for each (var num in myObj)
    {
        trace(num);
    }
    // 输出:
    // 20
    // 30
     循环访问 XML 或 XMLList 对象
    var myXML:XML = <users>
                                     <fname>Jane</fname>
                                     <fname>Susan</fname>
                                     <fname>John</fname>
                                </users>;
    for each (var item in myXML.fname)
    {
         trace(item);
    }
    /* 输出
    Jane
    Susan
    John
    */
     循环访问数组中的元素
    var myArray:Array = ["one", "two", "three"];
    for each (var item in myArray)
    {
        trace(item);
    }
    // 输出:
    // one
    // two
    // three
     注意 观察:,for each..in循环中的迭代变量包含属性所保存的值 ,而不包含属性的名称。
    如果对象是密封类的实例,则您将无法循环访问该对象的属性。即使对于动态类的实例,也无法循环访问任何固定属性 (即,作为类定义的一部分定义的属性)。

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

2
0
分享到:
评论

相关推荐

    C++ 备忘单-.pdf

    这些知识点涵盖了C++的基本概念和高级特性,对于初学者来说是很好的入门指南,同时也能帮助有经验的开发者快速回顾或查找特定的功能和语法。希望这份备忘单能够帮助你在学习或工作中更加高效地使用C++语言。

    《软件工程专业英语》第一单元:启动软件项目——单词、短语、名词缩写、难句、备忘录的基本格式样本.pdf

    《软件工程专业英语》是为适应全球IT行业对英语能力的需求而设计的教材,尤其适合高等院校的软件工程、计算机科学及相关专业的学生以及职业信息技术学院和培训机构的学员学习。本教材涵盖了软件开发过程中的专业词汇...

    git-flow 备忘清单

    ### git-flow 备忘清单详解 #### 一、概述 `git-flow` 是一个基于 Git 的分支管理模型,由 Vincent Driessen 提出,并通过一系列的工具和命令来进行高效的项目分支管理和版本控制。该模型旨在简化团队协作流程,...

    simple-line-icons:简单和最小线条图标

    您可以在找到完整图标集的备忘单 安装 通过 npm install simple-line-icons --save 通过 bower install simple-line-icons --save 通过 另外,您也可以克隆或为zip。 如果您是设计师,则可以在项目中使用此。 ...

    java面试题汇总

    - 数据类型:Java分为基本数据类型和引用数据类型,理解它们的区别和使用场景。 - 变量:声明、初始化和作用域的理解。 - 运算符:了解各种运算符,如赋值、比较、逻辑等。 - 流程控制:掌握if、switch、for、...

    2012java面试题

    - 流程控制:if语句、switch语句、for循环、while循环、do...while循环、break和continue语句。 2. **面向对象特性** - 类与对象:类是具有相同属性和行为的对象的模板,对象则是类的实例。 - 封装:通过访问...

    125条常见的java面试笔试题大汇总

    - 数据类型:包括基本类型和引用类型 - 运算符:赋值、比较、逻辑、位运算等 - 控制结构:if-else、switch-case、for、while、do-while - 方法定义与调用 - 类与对象:封装、继承、多态 - 构造器 - 访问修饰...

    疯狂Java面试题

    - 控制流程:if语句、switch语句、for、while和do-while循环的使用。 - 方法:参数传递机制(按值传递与按引用传递)、重载与重写。 2. **面向对象** - 类与对象:创建类、实例化对象,理解类的封装、继承和多态...

    自己收集的超全的java笔试题、面试题

    - 控制流程:if语句、switch语句、for循环、while循环和do-while循环是控制程序执行流程的关键。 2. **面向对象**: - 类与对象:理解类的定义、对象的创建及销毁,以及类的封装、继承和多态性。 - 构造器:了解...

    数据库语句大全,留着备忘啊

    数据库是存储和管理数据的核心工具,SQL(Structured Query Language)是用于操作数据库的语言,包括创建、查询、更新和删除数据等操作。以下是一份全面的SQL知识点概览,旨在帮助你理解和掌握数据库语句的使用。 1...

    java面试复习资料整理,涵盖常见的面试题相关的知识

    - 流程控制:掌握if语句、switch语句、for、while和do-while循环。 2. **面向对象** - 类与对象:创建、实例化及类的基本概念。 - 封装、继承、多态:面向对象的三大特性。 - 构造器:初始化对象时的角色。 - ...

    Java 最常见的面试题

    - 变量声明与数据类型:Java支持基本类型和引用类型,如int、String等。 - 控制流程:if-else、switch、for、while、do-while等结构。 - 函数与方法:方法的定义、参数传递(值传递与引用传递)及返回值。 2. **...

    cheatsheets-sdil-actions:某天我学习动作

    我有一天学习备忘单-Github Action 使用 用法 在您的GitHub .github/workflows/someday-i-learn.yml库中创建一个.github/workflows/someday-i-learn.yml文件。 将以下代码添加到someday-i-learn.yml文件。 name :...

    cheats.rs:Rust语言备忘单-https:cheats.rs

    3. **控制流**:涉及到条件语句(`if`、`if let`、`match`)、循环(`loop`、`for`、`while`)和跳转语句(`break`、`continue`)。 4. **函数**:Rust中的函数定义(`fn`关键字)、参数传递(值传递、引用传递)、...

    备忘单-上帝:渗透测试参考库-OSCP PTP&PTX备忘单

    【标题解析】:“备忘单-上帝:渗透测试参考库-OSCP PTP&PTX备忘单”这个标题表明,这是一个针对渗透测试(Penetration Testing)的学习资源,特别是为准备 Offensive Security Certified Professional (OSCP) 考试...

    Java 最常见 200+ 面试题全解析:面试必备

    - 变量类型:包括基本类型与引用类型,理解它们的区别和内存分配。 - 运算符:掌握算术、关系、逻辑、位运算符的用法。 - 流程控制:if、switch、for、while、do-while等语句的使用。 - 方法:方法定义、参数...

    java面试大全

    - 控制流:if-else、switch-case、for、while、do-while循环,以及break和continue语句。 2. **面向对象**: - 类与对象:类是对象的模板,对象是类的实例。 - 继承:一个类可以继承另一个类,从而获取其属性和...

    腾讯笔试题

    - C: 正确,表示B类中有一个转换运算符将B转换为A。 - D: 正确,表示A类中有显式构造函数接受B作为参数。 **结论:** 正确选项是A、C、D。 9. **网络应用** - **问题描述:** 某公司使用NAT设备实现内外网...

    cheat-sheets:嗯,我只提供一些随机备忘单。 享受

    在IT行业中,备忘单(Cheat Sheets)是一种非常实用的学习和参考工具,它们通常包含关键概念、语法和命令的简洁概述,便于快速查找和理解。在这个“cheat-sheets”压缩包中,我们主要关注的是JavaScript相关的备忘单...

    notes-export:导出Apple NotesHTML副本

    票据出口从Apple Notes导出笔记HTML副本我已经在OS X El Capitan GM和一些开发人员种子上进行了测试(我不记得是哪一个)。 它可能不适用于旧版本。 要朝另一个方向发展,请参阅Steven Frank的。 ---- notes-export....

Global site tag (gtag.js) - Google Analytics