
Swift基础
文章平均质量分 54
deargua
学下吧,软件工程师
展开
-
switch语句
switch与其他语言的显著区别1)case中会自动break,即即使没有break语句的case中,也不会连续执行下一条case2)可以有多个条件语句var char ="a"switch( char ){ case "A": println("A") //每个case必须有一条语句 ca原创 2014-07-13 21:34:44 · 616 阅读 · 0 评论 -
TypeCast Any AnyObject
/* TypeCase 1.downcast 向下转换将一个父类类型的变量(可能本来时子类类型,在之前的运算中被转换成父类)转换为子类类型的变量2.upcast 与之相反。3.不是继承关系的类不可以转换。4.as 与 as? 的区别:as?返回的时optional的。AnyObject 可以任何类的类型的实例,由于OC没有指定类型原创 2014-07-26 17:04:50 · 527 阅读 · 0 评论 -
Methods
//Method:类,结构体,枚举中定义的函数叫方法/*method第一个参数可以时local的,后面的参数必须时external的,即在调用的时候必须在前面加上标签,当然第一个参数也可以自己加上external限制。如果不想使用external参数,则可以用一个外部参数_,有无external就会变成不同的函数。即默认有external的参数,和加上_作为原创 2014-07-20 16:09:23 · 845 阅读 · 0 评论 -
Operator
在数值越界是会出现编译错误,如以下情况var d1:Int8 =123d1 +=250swift中支持浮点数取余运算 remainder operator %println(3%2.5) //0.5swift中的前置++后置++同C语言中一样。其他的比较,逻辑,三元操作符都同C类似。只是逻辑运算符只能用于bool类型。原创 2014-07-13 00:29:24 · 668 阅读 · 0 评论 -
Swift基本类型
一)Data typeInt, Double, Float, Bool, String, Array,tuple, Dictionary,OptionalInt8,UInt8,Int16,UInt16,Int(32系统长度32,64则为64),UIntoption Type变量的定义:默认的变量类型是不需要定义为类型的,需要声明时的写法为:原创 2014-07-12 10:41:10 · 684 阅读 · 0 评论 -
Inheritance
/* Inheritance1.swift中没有给类定义一个超类(像python的Object一样),这就意味着作为superclass的空类什么都不能做。2.override一个函数时,需要在前面添加override关键字,构造器init不需要写override。3.注意overload实说函数名相同,参数不同。override实说函数名何参数返回值跟父类的相同。原创 2014-07-23 21:32:11 · 614 阅读 · 0 评论 -
Nested Type
/* Nested Type类型定义后的适用范围可以被限定大括号内尤其是枚举,常常被某个特定的类或结构体使用,则不需要暴露到外部有些结构体和类也一样只用于特定的context中,这时可以用嵌套类型。//✨✨可以在外部来引用内部嵌套类型。var outRef = NestedType.InnerType*/cla原创 2014-07-26 17:22:30 · 1036 阅读 · 0 评论 -
Auto Reference Counting
/* ARCAutomatic Reference Counting1.强引用2.强引用死锁3.弱引用4.Unowned reference*/class Person{ let name:String var apartment:Apartment? init(na原创 2014-07-26 13:13:19 · 867 阅读 · 0 评论 -
Access Control
/* Access control 需要Xcode6 Beta41.public 可以在定义文件的内部和外部访问 internal 可以用在模块哪的任何文件访问,模块外文件不可访问 private 只能在本文件内使用 默认的访问级别为internal2.元组的访问级别是由其构成元素决定的,取所有成员的最低级别。3.函数的的访问级别不是默认的,而原创 2014-07-28 15:10:25 · 701 阅读 · 0 评论 -
property
/*属性:PropertyStored property:存储变量的属性,可以存在于类,结构体中,但枚举不能有stored propertyvar定义变量属性,let定义常量存储属性。可以赋初值。可以在类,结构体的初始化(构造)函数中修改属性,包括常量属性LazyStored Property:类或结构体在initialize后,仅在下次被使用前原创 2014-07-20 10:06:25 · 831 阅读 · 0 评论 -
CollectionType
两种集合类型array dictionary数组中存储的数据类型需要相同,三种定义数组的方式//不知道为啥这种方法不行,可能是beta3版本新增var a1:[String] = ["test", "test2"]var a2:Array = ["test", "test2"]var a3 = ["test", "test2"]import原创 2014-07-13 00:12:35 · 1137 阅读 · 0 评论 -
Extension
/*Extensions提供了一个接口,在不改变即有类型的前提下添加自己的东西。比如系统的类型Int我们是不能随便修改的,但是可以通过extension来扩展1.添加computed properties和静态的computed static properties2.定义实例方法和type methods 注意:不能override既存的函数原创 2014-07-27 15:13:03 · 512 阅读 · 0 评论 -
Protocol
/* Protocol1.协议为类,枚举,结构体等遵循者定义了一套蓝图,该蓝图包括方法(实例,Type方法),属性,operator和subscripts等具体的样子。这些遵循者遵循者在具体的实现中必须实现协议中规定的属性或者方法。2.类不可以多继承,但是协议可以多继承,继承父类需要放在前面,多个用逗号隔开class someClass: Sup原创 2014-07-27 22:27:58 · 661 阅读 · 0 评论 -
构造函数 init
/* 构造函数 initinit函数,没有返回值,不能用func修饰,不能通过实例调用init,只能用init调用其他重载的init。init函数再override父类的init时,不需要写关键字override,普通的函数,属性需要写。✨在定义了自己的init后,默认的init就没有啦init函数结构体,枚举都可以有。但是deinit析构函数只能在类中原创 2014-07-22 22:47:12 · 1314 阅读 · 0 评论 -
Advanced Operators
/* Advanced Operators1.默认运算是不可以溢出的,否则报错。如果是故意溢出,但是swift提供了一组已&开头的运算符 &+可以溢出。 Beta3中测试是不可以的??Overflow addition (&+)Overflow subtraction (&-)Overflow multiplication (&*)Overflow原创 2014-07-28 17:06:46 · 586 阅读 · 0 评论 -
Closure
import Foundation//闭包 closures 同python中的lambda类似//再swift中闭包的意思好像更广一些//全局函数被看作是一个有名字不可以捕获值(capture values)的闭包//Nested function被看作是有名字可以从父函数中捕获值的闭包//Closure是一个没有名字,用来定义简单原创 2014-07-16 22:38:22 · 647 阅读 · 0 评论 -
Subscript
/*Subscript可以为类,结构体,枚举定义像数组下表访问一样进行访问的方法。不仅是一维还可以定义多维前面说过,字典,数组都是通过结构体来实现的,那他们就是利用subscript的方法实现了下标引用的功能。像字典dict["key"] = value 在实现的过程中是将key作为参数,value作为返回值类实现的。如果想做一个多维的下标,用多个参数即可。原创 2014-07-20 17:20:12 · 958 阅读 · 0 评论 -
Function
import Foundation//函数本身被看作一个类型,可以将函数作为参数,可以在函数中返回一个函数。//同样可以在函数中定义一个内部函数。Nested Function//variadic 可变参数 //swift 用...可以接受可变参数,想其他语言类似,如果由可变参数,必须放在最后//另外,可变参数必须是指定的相同类型的,原创 2014-07-14 22:44:42 · 672 阅读 · 0 评论 -
deinit
/* deinit 只有类才可以有析构有些操作文件,套节字等需要自己释放资源的类,需要析构*/class DeInitClass{ init() { println("Init") } deinit//构造又参数,括号,返回值,析构没有。 { pr原创 2014-07-24 19:54:34 · 1270 阅读 · 0 评论 -
Enumerations
Enumerations原创 2014-07-19 10:44:33 · 572 阅读 · 0 评论 -
Classes and Structures
Classes and Structures原创 2014-07-19 10:46:27 · 588 阅读 · 0 评论 -
Generics
/* 范型 Generics C++中的模版函数,模板类1.范型函数2.Generic Type3.范型类型的扩展4.范型类型约束(给T加一个约束,不是所有类型都可以用)5.用typealias定义范型6.可以用where语句来对类型参数列表进行限制*///1.范型函数func testGenerics(para1:原创 2014-07-28 14:12:13 · 575 阅读 · 0 评论 -
Language Reference
Language Reference1.关键字Keywords usedin declarations: class,deinit, enum,extension, func,import, init, internal,let, operator, private, protocol, public, static, struct, subsc原创 2014-07-28 21:32:13 · 612 阅读 · 0 评论 -
String&Charactter
Swift数据类型Character可以是任意的unicode的数据。Character可以和String进行+操作,但不象python各自都不支持*操作。Character 和String在书写时都需要用双引号初始化一个空字符串var emptyString = “”var emptyString = String()原创 2014-07-12 17:04:28 · 567 阅读 · 0 评论 -
Label
/* 标签可以用来标记一个循环体或者switch代码块,当使用break或者continue时, 带上这个标签,可以控制该标签代表对象的中断或者执行。用在嵌套循环中比较好用。*/var price = [1,2, -2, 3, 4, -1]Start:for pin price{ switch price原创 2014-07-13 23:23:38 · 626 阅读 · 0 评论 -
Optional-Optional Chaining
为什么optional类型会存在因为在swift中,所有的变量必须在赋初值后才可以使用,这就意味着你没法判断某个变量是否已经被赋初值了即如下代码是不可能的。var str:Stringif str //报错{ }为了解决这个问题(个人理解),Optional类型诞生啦。/*Optional类型表示的内容要不是某个值,要么原创 2014-07-13 15:28:58 · 1558 阅读 · 0 评论