坦白说每天搞一个类是很累且疲惫的, 今天是玩千斤顶的第二天, 周六, 我突然体味到那些包二奶的爷们们的难处, 多累啊….试想我每天看一个类, 今天是第二把尝试, 都有些扛不住了, 下午逛街回来给娘做了饭, 一起吃完看了会儿电视, 着实扛不住了, 就小憩了半个小时才爬起来看今天的One Day One Class. 假如给我400个女人, 让我One Day One Woman, 我岂不是要累死?
不扯了, 总结下Array类.
. 游标[index]从0开始;
. Array()可以以函数方式被调用
. 可以往Array里存储数字, 字符串, 对象, Array.
. Array是稀疏的, 如果某数组在index为0与5时都包含对象, 但是在0与5之间没有任何值, 则如果调用中间元素时,返回"undefined";
. 传地址, 而非传值. 即: 如果将某数组赋值给另外一个数组, 则该来那个歌数组都指向同一个数组, 修改其中一个, 另外一个也随之修改. 不同于数字与字符串等
. 不要用数组来建立哈希表
. 可以继承Array类, 并 重写,增加方法, 但必须制定该子类为Dynamic类型, 否则将无法使用Sort.
length : uint 返回数组的长度
继承来的我就不说了…..
归归类, 不然就太没有创意了,跟API一模一样….
1. 数组的创建:
var arrayStu_1:Array = new Array(1); //创建一个长度为1的数组. 但如果不赋值, 都是undefined
var arrayStu_2:Array = new Array("arrayStu_2_Index0", "arrayStu_2_Index1"); //创建包含有括号里这俩元素的数组
var arrayStu_3:Array = ["arrayStu_3_Index0", "arrayStu3_Index1"]; //这个更直接一些了, 直接赋值.
2. 数组元素的访问, 增加, 修改, 删除:
访问: array[i], 访问某元素, 如果要访问全部, 使用For循环
增加:
Push(): 将一个或多个元素添加到数组的结尾,并返回该数组的新长度。
unshift(): 将一个或多个元素添加到数组的开头,并返回该数组的新长度。
修改: 直接赋值: array[i] = new value;
删除:
Pop(): 删除数组中最后一个元素,并返回该元素的值。
Shift(): 删除数组中第一个元素,并返回该元素。 其余数组元素将从其原始位置 i 移至 i-1。同时该数长度减少一位;
另外:
splice():给数组添加元素以及从数组中删除元素 可以用于增加或删除元素,同时增大或减小数组长度;
3. 长度或index操作:
length:返回array的长度;
indexOf(): 从左向右遍历数组, 遇到符合要求的元素时, 返回该元素index. 如果遍历结束仍未发现符合要求的元素,返回-1;
lastIndexOf(): 与inidexOf()相反, 从右向左寻找要求的元素;
4. 数组的操作
数组的连接: concat(), 数组的连接 如:
arrayStu_2 = arrayStu_2.concat(arrayStu_1);
trace(arrayStu_2.toString()); //显示: arrayStu_2_Index0,arrayStu_2_Index1,——注意这个逗号, 意为后头还有个空的. 因为arrayStu_1只是一个长度为1但没有元素的数组.
数组元素的检测: evey(): 对数组中的每一项执行测试函数,直到获得对指定的函数返回 false
的项。 使用此方法可确定数组中的所有项是否满足某一条件,如具有的值小于某一特定数值。
筛选出符合要求之元素并新建一个数组: filter();
Join():将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串。
Map(): 返回一个新数组,其中包含此函数对原始数组中每一项的执行结果。
reverse(): 在当前位置倒转数组。
slice(): 返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。 返回的数组包括 startIndex
元素以及从其开始到 endIndex
元素(但不包括该元素)的所有元素。 如果您没有传递任何参数,则创建原始数组的一个副本。如果两参数均为-1, 则起点或终点为数组的结尾, -1 指的是最后一个元素。
5. 其他操作
Some(), Sort(), SortOn()
Package Top Level
Class public class arguments
Inheritance arguments Inheritance Object
简要介绍[主要是翻译API, 寒]:
一个Arguments类主要用来存储与访问一个函数的参数, 在函数体内, 可以通过本地参数变量来访问Arguments对象.
Arguments对象存储形式为数组, 因此,arguments[i]即代表了第i个参数(前提时有这么多参数….)
相对与之前的ActionScript版本,ActionScript3.0中不再使用Arguments.caller[之前的版本没用过:(], 在3.0中, 如果需要访问调用该参数的函数, 则可以使用arguments.callee.
Public Properties[不知道该咋翻译, 继续寒]:
callee:Function 返回调用该参数的当前函数
length: Number 参数数目[ 即参数作为数组的长度]
举例: [小修改了下API里的例子]
在初始化时运行 ArgumentsExample(1,’ss’);
import flash.display.Sprite; private var count:int = 1; public function ArgumentsExample(i:int, s:String):void { //参数以数组形式存放于arguments中. trace("第一个参数: " + arguments[0] + " 第二个参数: " + arguments[1] + " 共有 " + arguments.length + "个参数."); trace(arguments.callee == this.ArgumentsExample); firstFunction(true); } public function firstFunction(callSecond:Boolean):void { trace(count + ": firstFunction"); if(callSecond) { //调用secondFunction, 参数为firstFunction trace(arguments.callee); } else { trace("CALLS STOPPED"); } } public function secondFunction(caller:Function):void { trace(count + ": secondFunction"); count++; //此时caller即firstFunction, 实际运行为firstFunction(false); caller(false); }
运行结果:
第一个参数: 1 第二个参数: ss 共有 2个参数.
true
1: firstFunction
1: secondFunction
2: firstFunction
CALLS STOPPED
Here is a summary of difference between inner join and outer join:
http://stackoverflow.com/questions/38549/sql-difference-between-inner-and-outer-join
A Visual Explanation of SQL Joins – by Coding Horror.
有两个表,如下:
mysql> SELECT * FROM Class;
+———-+——–+
| Class_ID | Name |
+———-+——–+
| 1 | 2008A |
| 2 | 2008B |
| 3 | 2008C |
+———-+——–+
3 rows in set (0.00 sec)
mysql> SELECT * FROM Student;
+————+——-+———-+——— —-+
| Student_ID | Name | Class_ID | Student_Age |
+————+——-+———-+——- ——+
| 1 | Jack | 1 | NULL |
| 2 | Lucy | 0 | NULL |
| 3 | Join | 1 | NULL |
| 4 | Tom | 2 | NULL |
+————+——-+———-+————- +
4 rows in set (0.00 sec)
即: 有三个班级 分别为2008A, 2008B.,2008C 有4个学生 , 其中, Jack, Join为2008A班的学生,Tom为2008B班的学生, 而Lucy则不在任何班级中.
mysql> SELECT * FROM Student s INNER JOIN Class c ON s.Class_ID = c.Class_ID;
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name |
+————+——+———-+————-+———-+——-+
| 1 | jack | 1 | NULL | 1 | 2008A |
| 3 | Join | 1 | NULL | 1 | 2008A |
| 4 | Tom | 2 | NULL | 2 | 2008B |
+————+——+———-+————-+———-+——-+
3 rows in set (0.06 sec)
Left Outer Join:左外连接
mysql> SELECT * FROM Student s LEFT OUTER JOIN Class c ON s.Class_ID = c.Class_ID;
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name |
+————+——+———-+————-+———-+——-+
| 1 | jack | 1 | NULL | 1 | 2008A |
| 2 | Lucy | 0 | NULL | NULL | NULL |
| 3 | Join | 1 | NULL | 1 | 2008A |
| 4 | Tom | 2 | NULL | 2 | 2008B |
+————+——+———-+————-+———-+——-+
4 rows in set (0.00 sec)
Right Outer Join:右外连接
mysql> SELECT * FROM Student s RIGHT OUTER JOIN Class c ON s.Class_
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name |
+————+——+———-+————-+———-+——-+
| 1 | jack | 1 | NULL | 1 | 2008A |
| 3 | Join | 1 | NULL | 1 | 2008A |
| 4 | Tom | 2 | NULL | 2 | 2008B |
| NULL | NULL | NULL | NULL | 3 | 2008C |
+————+——+———-+————-+———-+——-+
4 rows in set (0.00 sec)
Full Outer Join:
使用工具: phpMyAdmin, MySQLBroswer, 命令提示行[Windows下须将mysql目录中的bin添加到环境变量PATH中].
mysql –u root –p
或登陆后直接选定某数据库 mysql –u root –p [数据库名称]
输入密码即可建立连接;
输入quit或exit即可关闭连接.
mysql>CREATE DATABASE School;
mysql>DROP DATABASE School;
表的见
首先应选定某数据库:
mysql>use School;
然后建立一个班级表Class, 包含有班级ID, 非空, 自增, 为该表的主键; 班级名称 varchar(255);
mysql>CREATE TABLE Classes (Class_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(255));
新建一个学生表Student:
mysql>CREATE TABLE Student(Student_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(255), Class_ID INT);
建立后的两表属性:
mysql> use school
Database changed
mysql> DESCRIBE Classes;
+———-+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+———-+————–+——+—–+———+—————-+
| Class_ID | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(255) | YES | | NULL | |
+———-+————–+——+—–+———+—————-+
2 rows in set (0.02 sec)
mysql> DESCRIBE Student;
+————+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+————–+——+—–+———+—————-+
| Student_ID | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(255) | YES | | NULL | |
| Class_ID | int(11) | YES | | NULL | |
+————+————–+——+—–+———+—————-+
3 rows in set (0.02 sec)
表的重命名: 为了保持编码风格一致, 现在我们想把Classes表更名为Class.则须运行:
mysql> RENAME TABLE Classes To Class;
Query OK, 0 rows affected (0.00 sec)
除此之外,我们现在需要在Student加入一个名为Age的Column.属性为int
mysql> ALTER TABLE Student ADD COLUMN Age int;
Query OK, 1 row affected (0.08 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> DESCRIBE Student;
+————+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+————–+——+—–+———+—————-+
| Student_ID | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(255) | YES | | NULL | |
| Class_ID | int(11) | YES | | NULL | |
| Age | int(11) | YES | | NULL | |
+————+————–+——+—–+———+—————-+
4 rows in set (0.02 sec)
==>逆操作: mysql>ALTER TABLE Student Drop Age;
另外, 我们需要修改Student的Class_ID默认为0:
mysql> ALTER TABLE Student MODIFY Class_ID int DEFAULT 0;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> DESCRIBE Student;
+————+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+————–+——+—–+———+—————-+
| Student_ID | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(255) | YES | | NULL | |
| Class_ID | int(11) | YES | | 0 | |
| Age | int(11) | YES | | NULL | |
+————+————–+——+—–+———+—————-+
4 rows in set (0.00 sec)
最后,总结下Column名称的修改:
mysql> ALTER TABLE Student CHANGE Age Student_Age int;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> DESCRIBE Student;
+————-+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+———+—————-+
| Student_ID | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(255) | YES | | NULL | |
| Class_ID | int(11) | YES | | 0 | |
| Student_Age | int(11) | YES | | NULL | |
+————-+————–+——+—–+———+—————-+
4 rows in set (0.01 sec)
mysql>DROP TABLE Class;
插入:
在Class与Student两表中插入记录: 如插入ID为1,名为"2008A"的班级, id为1,姓名为"Tom"所在班级ID为1的Student.
mysql> INSERT INTO Class(Class_ID, Name) VALUES(1, ‘2008A’);
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO Student(Student_ID, Name, Class_ID) VALUES (1, ‘Tom’, 1);
Query OK, 1 row affected (0.00 sec)
修改:
譬如该学生名字应为’Tomey”, 我们需要更正其数据库中的姓名,于是我们使用:
mysql> UPDATE Student set Name = ‘Tomey’ WHERE Student_ID = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
删除:
DELETE FROM Student WHERE Student_ID = 2;
work>cd AirTest
AirTest>svn co svn://192.168.1.99/Athena/trunk/Test/LGL/AIRTest/test 或: svn checkout svn://192.168.1.99/Athena/trunk/Test/LGL/AIRTest/test
AirTest>svn commit –m “XX修改后更新项目仓库”
AirTest>svn update
AirTest> mkdir test
AirTest> svn add test
拷贝
AirTest> svn copy Number.text test.text
移动
AirTest>svn move Clocks.java Clock.java
实际工作便是重命名.
操作完成后运行commit以保存到项目仓库
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.