XZ_Swift之Swift基础第一篇

Playground是什么?
1>从Xcode6(swift开始出现时)开始出现的;
2>翻译为:操场/游乐场;
3>对于学习Swift基本语法非常方便:所见即所得(快速查看结果);语法特性发生改变时,可以快速查看;

swift最基本的语法变化
1>导入框架  import UIKit
2>定义标识符时,必须声明该标识符时变量还是常量,声明标识符的格式:变量/常量关键字名称:数据类型;
3>语句结束时不需要加“;”,如果同一行有多个语句,则依然需要加,但是不建议一行多条语句;
4>Swift中打印语句:print(打印的内容)

Swift语法特点
1、从它的语法中能看到OC、JavaScript、C#、Pyhton等语言的影子;
2、借鉴了OC、JavaScript、C#、Pyhton等语言的优点;
3、同事具备编译型语言的高性能和脚本语言的灵活交互性
4、语法简单、代码简单、使用方便
5、可以轻松地与OC、C混合使用(相互调用)
6、提供了类似Java的名字空间(namespace)、泛型(generic)、运算对象重载(operator overloading)

苹果宣称Swift的特点是:快速、现代、安全、互动,而且明显优于Object-C语言;
可以使用现有的Cocoa 和 Cocoa Touch 框架;
Swift取消了OC的指针及其他不安全访问的使用;
舍弃OC早期应用的Smalltalk的语法,全面改为句点表示法;
Swift被简单的形容为“没有C的OC”(Object-C without the C)

为什么设计Swift语言
让应用开发更简单、更快、更稳定;
确保最终应用有着更好的质量; 

重要性
苹果目前在大力推广Swift

2个不需要:
不需要编写main函数;
不需要在每一条语句后面加上分号(有一种情况必须加分号:同一行代码上有多条语句时);

注释:
// 单行注释;
 /* 多行注释 */;
 /* /* 多行注释嵌套多行注释 */ */

常量和变量
什么是常量和变量
  • 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量
  • 使用let来定义常量,定义之后不可以修改!
  • 使用var来定义变量,定义之后可以修改!

使用注意
  1. 在真实使用过程中,建议先定义常量,如果需要修改再修改为变量(更加安全)
  2. 是指向的对象不可以再进行修改.但是可以通过指针获得对象后,修改对象内部的属性

注意:声明为常量不可以修改的意思是指针不可以再指向其他对象.但是可以通过指针拿到对象,修改其中的属性

Swift中数据类型

Swift中的数据类型有:整型/浮点型/对象类型/结构体类型等等;

Swift中的类型推导
强类型语言:任何一个标识符都有明确的类型,所以,swift是强类型语言
注意:如果定义一个标识符时直接赋值,那么标识符后面的类型可以省略,因为swift有类型推导,会自动根据后面的赋值来决定前面的标识符的数据类型

例如:
// 定义变量的时候没有明确指定变量的类型,但是给变量赋值整型10,因此i为整型
var i = 10
// 如果给变量赋值10.5,则变量会报错‘Cannot assign value of type 'Double' to type 'Int'’
i = 1 0.5   // (错误)
 i = 100 // (正确)

没有动态决定的,比如id类型;

Swift中的基本运算
Swift中在进行基本运算时必须保证类型一致,否则会出错。因为Swift中没有隐式转换,所以相同类型之间才可以进行运算。
数据类型的转化
  • Int类型转成Double类型:Double(标识符)
  • Double类型转成Int类型:Int(标识符)
例如:
var a = 100
let b = 5.20
       
let c = Double (a) + b
let d = Int (b) + a

逻辑分支

分支即if/switch/三目运算等判断语句,通过分支语句可以控制程序的执行流程

1、if分支
和OC中的if语句有一定的区别:
判断句可以不加()即 if后面的小括号可以省略;在swift的判断句中必须有明确的真假:不再有非0即真,必须有明确的bool值(false/true)
例如:
let q = 20
if q > 10 {
     print ( "大于" )
}

// 这个是可选类型,因为必须声明为可选类型,才可以判断是否为空
let view2 : UIView ? = UIView ()
if view2 != nil {
   view2?. backgroundColor = UIColor . yellow
}

2、三目运算符
跟OC风格一致
let A = 20
let B = 30
let C = A > B ? A : B
print (C)

3、guard的使用
guard是swift2.0新增的语法
它与if语句非常相似,它涉及的目的是提高程序的可读性
guard语句必须带有else语句,它的语法如下:
guard 条件表达式 else {
    break
}
语句组
  • 当条件表达式为true时候跳过else语句中的内容,执行语句组内容
  • 条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue和throw
例如
let age = 3
        eatSugar (age: age)

func eatSugar(age: Int ) -> Void {
    guard age > 5 else {
        print ( "can not eat sugar" )
        return
    }
    print ( "can eat sugar" )
}

4、switch分支
苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性
基本用法和OC用法一致;
不同之处:switch后面不可跟();case后面无需跟break,默认会有break;一个case判断中,可以判断多个值,多个值以“,”隔开;如果希望出现之前的case穿透,可以使用关键字fallthrough
例如:1、
let Age = 18
switch Age {
case 18 :
     print ( "成年" )
case 20 :
     p rint ( "成年" )
case 14 :
     p rint ( "未成年" )
default :
     p rint ( "不确定" )
}       
2、
switch Age {
case 18 , 20 :
      print ( "成年" )
case 14 :
      p rint ( "未成年" )
default :
      p rint ( "不确定" )
}
3、
switch Age {
case 18 :
     fallthrough
case 20 :
     p rint ( "成年" )
case 14 :
     p rint ( "未成年" )
default :
     p rint ( "不确定" )
}

swift支持多种数据类型的判断
1、浮点型判断
let ca = 8.15
switch ca {
case 8.15 :
     print ( "放假" )
default :
     print ( "不放假" )
}

2、字符串判断
let i = 3
let j = 10
var result = 0
       
let operation = "+"
switch operation {
case "+" :
    result = i + j
case "-" :
    result = i - j
case "*" :
    result = i * j
case "/" :
    result = i / j
default :
    result = 0 ;
}
print (result)

3、区间判断
区间:通常我们指的是数字区间:0~100,100~200
swift的常见区间:
开区间:0...<10 表示0~9,不包括10(注意:…和<不能有空格)
闭区间:0...10 表示:0~10
例如:
let score = 70
switch score {
case 0 ..< 60 :
     print ( "差" )
case 60 ..< 80 :
     print ( "中" )
case 80 ..< 90 :
     print ( "良" )
case 90 ..< 100 :
     print ( "优" )
default :
     print ( "棒棒的!" )
}

循环

常见的循环:for/while/ do while
1、for循环
例如:
for i in 0 ... 10 {
    print (i)
}

如果在for循环中不需要用到下标i,则可使用_代替
例如:
for _ in 0 ..< 10 {
    print ( "嗯嗯" )
}

2、while
必须有正确的真假,没有非0即真;while后面的()可以省略
例如:
var k = 0
while k < 10 {
    k += 1
}

3、do while循环
使用repeat代替了do关键字
例如:
var k = 0
repeat {
    k += 1
} while k < 10

字符串

字符串在swift与OC中的区别
在OC中字符串类型是NSString,在swift中字符串类型是String;
OC中字符串使用@“”,在swift中字符串使用””

使用String的原因:
1>String是一个结构体,性能更高,NSString是一个OC对象,性能略差;
2>String支持直接遍历
3>Swift提供了String和NSString之间的无缝转换

字符串的使用
1、遍历字符串
var s tr = "Merry Christmas"
for char in str {
     print (char)
}

2、字符串拼接
1>两个字符串之间的拼接
例如:
let str1 = "Merry"
let str2 = "Christmas"
let str3 = str1 + str2
print (str3)

2>字符串和其他类型数据的拼接
例如:
let month = 12
let day = "Christmas"
let info = " \ ( month )月25号 is \ ( day )"
print (info)

3>字符串的格式化,比如:时间(08:04)
let hour = 8
let min = 4
let time = String (format: "%02d:%02d" ,arguments:[hour,min])
或者是
let time = String (format: "%02d:%02d" ,hour,min)
print (time)

3、字符串的截取
Swift中提供的特殊的截取方式非常麻烦,Index创建较为麻烦
简单的方式是将String转成NSString来使用,在标识符后加 as NSString即可
例如:
let myStr = " www.baidu.com "
var s ubStr = (myStr as NSString ). substring (with: NSRange (location: 4 ,length: 3 ))
var s ubStr1 = (myStr as NSString ). substring (to: 4 )
var s ubStr2 = (myStr as NSString ). substring (from: 2 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值