简单体验
// 定义变量
var i = 10
print(i)
i = 15
print(i)
let j = 20
// 常量一经定义不能自改数值
// j = 25
print(j)
- 阶段性小结
-
var
定义变量,设置之后可以修改 -
let
定义常量,设置之后不可以修改 - 语句末尾不用使用
;
- 在 Swift 中使用
print()
替代 OC 中的NSLog
-
print
的性能更好,后面会演示
-
定义OC
对象
// 实例化视图
let v = UIView(frame: CGRectMake(0, 0, 100, 100))
// 设置背景颜色
v.backgroundColor = UIColor.redColor()
// 添加到根视图
view.addSubview(v)
- 阶段性小结
- 在
Swift
中要实例化一个对象可以使用类名()
的格式,与OC
中的alloc/init
等价 -
OC
中的initWithXXX
在Swift
中通常可以使用类名(XXX: )
找到对应的函数 -
OC
中的[UIColor redColor]
类方法,在Swift
中通常可以使用类名.XXX
找到对应的函数 - 使用
let
修饰v
并且赋值,表示该常量的内存地址不允许修改,但是可以修改其内部的属性
- 当前对象的属性,不需要使用
self.
- 在
常量&变量的使用原则:尽量先用 let,只有需要变的时候,再用 var,能够更加安全
变量类型
let x = 10
let y = 10.5
let z: Double = 20
print(Double(x) + y)
print(x + Int(y))
print(y + z)
- 阶段性小结
- 初次接触
Swift
中会因为简单的var
let
误以为Swift
中的类型非常松散 - 其实所有变量的准确类型都是在赋值的同时自动推导的
-
Swift
是对类型要求非常严格的一门语言,一个值永远不会被自动转换成其他类型
- 如果要转换,必须显示转换,Swift 中
- 小数默认是
Double
类型 - 整数默认是
Int
类型
- 小数默认是
- 如果要显式的指定变量的类型,可以在定义是使用
var 变量名: 类型 = 值
- 初次接触
与OC的一些差异
/*
输出:
C: printf("Hello, World!");
OC:NSLog(@"Hello, World!");
Swift1.2:println("Hello, World!")
Swift2.0:print("Hello, World!")
*/
print("Hello, World!")
/*
“使用let来声明常量,使用var来声明变量”
变量:
OC:
>先定义再初始化
int num;
num = 10;
>定义的同时初始化
int num2 = 20;
Swift:
>先定义再初始化
var num
报错: 没有指定数据类型(type annotation missing in pattern), 在Swift中如果想要先定义一个变量, 以后使用时再初始化必须在定义时告诉编译器变量的类型(类型标注)
*/
var num: Int
num = 10
/*
>定义的同时初始化
在Swift中如果定义的同时初始化一个变量,可以不用写数据类型, 编译期会根据初始化的值自动推断出变量的类型(其它语言是没有类型推断的)
以后在开发中如果在定义的同时初始化就没有必要指定数据类型, 除非需要明确数据类型的长度或者定义时不初始化才需要指定数据类型
*/
var num2: Int = 20
var num3 = 20
/*
“你可以用任何你喜欢的字符作为常量和变量名,包括 Unicode 字符:”
“常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。”
错误:
var 3x = 10
var x+-3 = 10
*/
var 🐶 = 100
var 哈哈 = 300
/*
常量:
OC: const int num = 10;
Swift: let num = 10
错误:
let num : Int
Swift中的常量必须在定义时初始化(OC可以不初始化), 否则会报错
常量的用途: 某些值以后不需要改变, 例如身份证
*/
let num4 = 10