Swift初学笔记之Swift基础语法

一、变量声明

与oc相比更简洁,编译时的检错机制更完善

1、let声明常量,var声明变量

var myVariable = 42
myVariable = 50
let myConstant = 42

2、如果初始化时直接赋值可以不声明类型,swift会自己识别(即类型推断)。反之需要用冒号:声明变量类型

let myString = "Hello World"
print(myString);//;加不加都可以,不会报错

let mStr = "Hello World"
let mString:String
print(mStr)

let isBool = true
print(isBool)

let width:Float = 4
print(width)
2.1、转换数据类型
(1)、显示转换
let lable = "The width is"
let width1 = 94
let labelWidth = lable + String(width1)
(2)、可用反斜杠插入变量(隐式转换)
var widthLLabel = "lable \(width1)"
widthLLabel = lable+"\(width1)"
2.2、数组和字典都可用[]直接声明内容。结尾可以是,
var shoplist = ["apple","oranges","chocolate",]
shoplist[0] = "cookie"
(1)、字典可以直接用[key]访问元素,直接赋值来添加元素。
var occ = ["Mom":"Mama","Dad":"Baba"]
occ["Sister"] = "Jiejie";
print(occ)
(2)、数组在添加元素时会自动变大
shoplist.append("fruit")
print(shoplist)
(3)、使用初始化语法创建一个空的数组或字典
var emptyArr = [String]()
var emptyDic = [String:Float]()
(4)、如果类型可以被推断出来,可以直接用[]和[:]创建一个空的数组或字典
emptyArr = []
emptyDic = [:] 

3、声明变量时如果一定要用关键字(如class,id),可加重音符号`声明(不推荐使用关键字声明变量)

let `class` = "CSDN"
print(`class`)

4、类型别名——对当前的类型定义了另一个名字,类型别名通过使用typealias关键字来定义

//typealias newname = typeName
typealias Feet = Int 

5、可选型Optional——用于处理数值存在缺失的情况,表示“那可能没有值”,可简写为问号?

5.1、一个可选的值是指一个具体的值或者是用nil表示值缺失。在类型后面加一个?来标记这个变量的值是可选的
var optionInt:Optional<Int>
var myInt:Int? = 1

var opionSt:Optional<String>
var myStr:String? = nil;

let optionalStr:String? = ""
print(optionalStr == nil)
5.2、可以通过使用??操作符提供一个默认值来处理可选值。如果可选值缺失的话,可以使用默认值来代替。
let nikename:String? = nil
let fullName = "John"
let informal = "Hi,\(nikename ?? fullName)"
print(informal)

myStr = "Hello Swift!";
if myStr != nil {
 	print(myStr ?? "")
}else{
	print("myStr值为nil")
}
5.3、可选类型–数组
(1)、要用括号()来定义可选型?的作用域。
var optionArr:([Int])
var optionArr1:([String])

6、swift对空格有要求,运算符不能直接跟在变量或者常量的后面.

let a=1+2
let b = 2 + 3
//let m = 1+ 2会报错,swift会判定在1+之后语句结束。
print(a+b)

二、控制流

与oc相比更规范,语法要求更严格

1、if语句

1.1、if语句,条件必须是一个布尔表达式,不会默认与0作对比
let inScores = [60,70,80,100,12]
var teamScore = 0
for score in inScores {
    if score>50 {
       teamScore += 3
    }else{
       teamScore += 1
    }
}
print(teamScore)
1.2、可以一起使用if和let一起来处理值缺失的情况。
(1)、如果变量的可选值是nil,条件会判断为false,大括号中的代码会被跳过。如果不是nil,会将值解包并赋给let后面的常量,这样代码块中就可以使用这个值了。(即如果name拿不到值或者拿到nil判定为false,反之则判定为true)
let optionalName:String? = nil
var greeting = "Hello!"
if let name=optionalName {
    greeting = "hello,\(name)"
}else{
    greeting = "hello,\(optionalName ?? "")"
}
print(greeting)

2、for-in语句

2.1、你可以在循环中使用…<来表示下标范围。使用…<创建的范围不包含上界(即小于上界值),如果想包含的话需要使用…
for x in a...b {
//terminator的含义是将换行符\n置为""(可以理解为使换行符消失)
	print("\(x) ",terminator:"")
}

var total = 0
for i in 0..<4 {
	total += i
}
print(total)

for x in 0..<array.count {
	if x > 0 {
	
	}
}
2.2、你可以使用for-in来遍历字典,需要一对儿变量(key,value)来表示每个键值对。字典是一个无序的集合,所以他们的键和值以任意顺序迭代结束。
let interestingNumbers = [
     "Prime":[2,3,5,7,11,13],
     "Fibonacci":[1,1,2,3,5,8],
     "Square":[1,4,9,16,25]
]
        
var largest = 0
var largestKind = ""
for (kind,numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
	        largest = number
            largestKind = kind
        }
    }
}
print("largest is \(largest), largestKind is \(largestKind)")

3、switch语句

3.1、switch支持任意类型的数据(int,double,float,string等等) 以及各种比较操作(相等,包含,前缀,后缀等等)
(1)、与oc相比——运行switch时,匹配到case语句之后,程序会退出switch语句,并不会继续向下执行,所以不需要在每个句子结尾写break。case条件可以是单个或者多个。
let vegetable = "cucumber"
switch vegetable {
	case "celery":
 		print("Add some raisins an make ants on a log.")
	case "cucumber","watercress":
        print("That woudle make a good sandwich.")
    case let x where x.hasSuffix("pepper")://let将匹配常量的值赋给x
        print("Is it a spicy \(x)?")
    default:
        print("Everything tastes good in soup")
}

4、while语句

4.1、使用while来重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾,保证能至少循环一次。
var n = 2
while n < 100 {
     n *= 2
}
print(n)
        
var m = 2
repeat {
    m *= 2
} while m < 100
print(m)

你可能感兴趣的:(Swift,编程语言,swift,ios,xcode)