swift学习日记(一) 数据类型和运算符

最近终于下定决心开始看iOS开发了,不过没有一开始就去看project,还是决定先熟悉下swift先(科班生的习惯了,不大习惯一开始就去接触开发,先学习下基础)


然后就是不打算看oc了,直接上手swift


swift现在是更新到了2.0,苹果改了一些语法,所以有时候其他教程的语法会报错,强烈建议边看边打


先介绍hello world


swift跟PHP和python有点类似,不用头文件之类的,一行

print("hello world")

即可


需要注意的是,在swift1中,输出有两种,print和println,学过java的应该就看得懂

不过在swift2中,println被取消了,print默认就会换行,要想不换行,要加上一个参数

print("我要换行!", terminator: "\n")

terminator的值就是输出后自动加上的字符,改成“”即可

此外,字符串格式化采用\(),例如

var num = 5;

print("the number is \(num)")

哦,还有一个,swift不需要分号; 不过加了也不会报错

除此之外,跟c/java系的语言没什么区别,上手非常快


一,数据类型

1,swift是强类型语言,编译器会自动类型推导,但是不会默认类型转换

也就是说

var str = "hahaha" + 1

 是会报错的,请使用 

var str = "hahaha" + String(1)
进行强制类型转换

2,虽然不用制定类型,但你也可以指定,例如

var str:String = "string"

通过 : 加数据类型进行指定

3,一些基本的数据类型在此不表,学过c++的人基本可以无缝过渡(除了首字母要大写)

4,swift有变量和常量两种概念,如下

var numb = 1 // 变量,可以更改值
let numc = 2 // 常量,更改值会报错
有基础的话看一眼就懂了

5,类型别名,感觉不是很常用,不过还是加上吧

typealias AudioSample = Int
跟c的typedef差不多,不表

6,bool类型

单独说bool类型是因为swift有点不同

在swift中,只有bool类型可以参与判断

let i = 1
if i {
// this example will not compile, and will report an error
}
这个在c是可以通过编译的,但是swift不行,必须用

let i = 1
if i == 1 {
// this example will compile successfully
}

7,tuple(元组) array(数组) dictionary(字典)

这个跟PHP很类似

我查的资料都说要同一类型,但是自己试的时候发现其实声明时不是一个类型也行

元组和数组的区别就是元组声明后就不可更改了,其他没太大区别,字典则是以键值对的形式存储

//var array = [1, 2, 3.5, "hehe"]   // 数组 数组和元组都可以下标访问
//var array = (1, 2, 3, 5, "hehe")  //元组 声明的时候都可以不同类型混搭
var array = ["num":1 , 2:"2"]      //字典
print(array)

 

数组可以通过append方法添加元素,也可以直接用+=添加

字典可以直接通过下标添加元素

除了上文那样隐式声明,还可以

var str:[String]() //空数组
var str1:[String] = ["1", "2"] //在已指定类型的情况下,再插入不同类型的值会报错
var str:Array = [1, 2, 3]  //不指定类型
var a = Array (count: 2 , repeatedValue: 0 ) // 重复赋值

 需要注意的是,[String]是swift2的语法,swift1要写成String[] 

虽说swift不强制同一类型,但是建议使用的时候最好事先规定类型,更不容易出bug

除了这三个,苹果官方还给出了一个Set(集合),学过c++的同学应该可以一眼看出怎么用,留给各位自学

8,可选类型和选择绑定

这个跟java有点类似(不过我没深入学习java,只是实训的时候用了几天而已,可能不准确,见谅)

swift允许在声明的时候在类型后加上?表示变量可以为 nil (可以理解成null)

let possibleString: String? = "An optional string."

编程人员可以使用if语句来检测一个可选类型是否包含一个特定的值,如果一个可选类型确实包含一个值,在if语句中它将返回true,否则返回false。如果你已经检测确认该值存在,那么可以使用或者输出它,在输出的时候只需要在名称后面加上感叹号(!)即可,意思是告诉编译器:我已经检测好这个值了,可以使用它了。如:

if convertedNumber != nil {
print("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
print("\(possibleNumber) could not be converted to an integer")
}
// prints "123 has an integer value of 123"

选择绑定帮助确定一个可选值是不是包含了一个值,如果包含,把该值转化成一个临时常量或者变量。选择绑定可以用在if或while语句中,用来在可选类型外部检查是否有值并提取可能的值

if let actualNumber = Int(possibleNumber) {
print("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
print("\(possibleNumber) could not be converted to an integer")
}
// prints "123 has an integer value of 123"


这个应该在工程中会用得很多,不过初学者可能很难理解(包括我),这个就留在以后在细细体会了


二,运算符

这个是最没东西可讲的,因为全世界的基础语法都一样,一窍通,窍窍通

在此只说几个不同的地方

1,元组的应用

元组的存在,使swift可以在函数中返回多个变量,扯远了

元组的赋值如下

let (x, y) = (1, 2)
// x等于1, 并且y等于2


2,swift允许对浮点数进行取余操作

10%3.3  == 0.1

各位自行感受


3,swift允许 “-” 作为一元操作符

let three = 3
let minusThree = -three // minusThree equals -3
let plusThree = -minusThree // plusThree equals 3, or "minus minus three"

4,范围运算符

这是swift的特色

直接看代码

for index in 1...5 {
println("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
“...”代表闭区间

"..<"代表左闭右开区间,注意,在swift1中,是".."


看,只有那么几点,简直2分钟上手该小节


第一天先到这里,打打代码压压惊



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值