Swift敷搪,蘋果于2014年WWDC(蘋果開發(fā)者大會)發(fā)布的新開發(fā)語言,可與Objective-C*共同運(yùn)行于Mac OS和iOS平臺潜索,用于搭建基于蘋果平臺的應(yīng)用程序抢野。Swift是一款易學(xué)易用的編程語言,而且它還是第一套具有與腳本語言同樣的表現(xiàn)力和趣味性的系統(tǒng)編程語言。Swift的設(shè)計以安全為出發(fā)點(diǎn)逛裤,以避免各種常見的編程錯誤類別瘩绒,下面我以代碼的形式向大家介紹一下swift的基礎(chǔ)語法
“//
//? main.swift
//? Swift語法
//
//? Created by lanou on 16/7/21.
//? Copyright ? 2016年 Huangyu. All rights reserved.
//
import Foundation
print("Hello, World!")
//Int Float
let a:Int = 12
// let var
let str = "hello"
//str.characters.count
//str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)
//大小寫轉(zhuǎn)換
//str.uppercaseString
//str.lowercaseString
//==
//"123\(str)4555"
let str2 = String(format: "%02d:%02d", 1,2)
let str3 = String(format: "%02d:%02d", arguments: [1,2])
print(str2)
print(str3)
//str2.substringToIndex(<#T##index: Index##Index#>)
//字符串的其他操作全部轉(zhuǎn)化為NSString再去操作
//轉(zhuǎn)換
let str4:NSString = str2 as NSString
//數(shù)組 Array
let array1 = ["A", "2", "3", "4"]
//initWith/init在swift里面轉(zhuǎn)化成()
let array2 = [String]()
//元素個數(shù).count
//數(shù)組遍歷 for-in (明確的指出數(shù)組的類型)
for temp in array1 as [String]{
print(temp.characters.count)
}
//元組遍歷
for (index, value) in array1.enumerate()
{
print("index = \(index),value = \(value)")
}
//可變數(shù)組
var mutableArray = [String]()
mutableArray.append("hello")
mutableArray.append("world")
//mutableArray.append(23)
print(mutableArray)
mutableArray.removeFirst(1)
print(mutableArray)
mutableArray.removeAll()
print(mutableArray)
//字典 Dictionary
let dict = ["key1":"value1", "key2":"value2", "key3":"value3"]
print(dict)
//通過Key值訪問value值
print(dict["key1"])
//for - in
for (tempkey, tempvalue) in dict.enumerate()
{
print("key = \(tempkey), value = \(tempkey)")
}
//可變字典
var dict3 = ["key":"value"]
//合并
for (tempkey, tempvalue) in dict
{
// 如果key存在的則是一個更新的鍵值對操作, 否則就是一個增加鍵值對操作
dict3[tempkey] = tempvalue
}
print(dict3)
//如果一個值可能為nil带族, 那么這個值就是可選類型锁荔, 用?標(biāo)識
//Optional包圍的就是一個可選類型
//可選類型不能直接使用蝙砌, 必須強(qiáng)制解包? 阳堕!制解包,對nil強(qiáng)制解包會造成崩潰
var? a1:String?
a1 = "12345"
print(a1!.characters.count)
//(a2 ?? "234")對可選類型進(jìn)行判斷, 如果可選類型值為nil择克, 則給它一個默認(rèn)值
var? a2:String?
a2 = "12345"
print(a2 ?? "234".characters.count)
//if 條件語句()可以省略 {}不能省略
//if沒有非零即真的概念恬总, 只有true false的兩種概念
let tempvalue = 10;
if tempvalue > 5{
print("tempvalue > 5")
}
//可選類型的條件分支
let str5:String? = "hello"
//(1)if-let是對可選類型的判斷, 如果可選類型為nil, 則不執(zhí)行代碼塊肚邢, 如果不為空則用tempStr來接收此刻這個可選類型的解包后的值
if let tempStr = str5{
print(tempStr)
}
//(2)if-let-where 跟 if-let相似壹堰, where是對前面定義的這個局部變量再做一層判斷
if let tempStr = str5 where tempStr.characters.count > 2{
print("tempStr.length = \(tempStr.characters.count)")
}
//guard - let -else()
//如果可選類型str為nil, 則執(zhí)行code代碼塊, 最后一定要return, 如果不為nil則強(qiáng)制解包后的值賦值給tempStr骡湖,這樣在 {}外面就可以使用tempStr
/*
guard let tempStr = str else {
code
return
}
tempStr...
*/
/*
//switch 不局限判斷整型贱纠, 可以是浮點(diǎn)型,也可以是字符串勺鸦。并巍。。switch后面的小掛號可以省略换途, 大號不能省略 case后面至少要執(zhí)行語句0枚伞!并且case后面的大號可以省略军拟, break可以不寫剃执, 不會造成貫穿 default一定要寫, 并且只能寫在后面
let f = 3.2
switch f {
case 3.0:
print("===3.0")
case 3.1:
print("===3.1")
case 3.2:
print("3.2")
default:
print("unknow")
}
*/
for i in 0 ..< 5 {//0..<5------[0,5)? 0.....5----[0,5]
print("i = \(i)")
}
//枚舉(枚舉值可以關(guān)聯(lián)浮點(diǎn)懈息, 字符串, 沒有默認(rèn)的關(guān)聯(lián)值)
//關(guān)聯(lián)如果是Int肾档, 會默認(rèn)的遞增上去, 如果不是Int辫继, 必須每個枚舉值都關(guān)聯(lián)上對應(yīng)的值
enum Month:Float{
case January = 11.2
case February = 11.3
case March = 13.2
case April = 13.6
}
//如果明確指出一個變量/常量是屬于哪種枚舉類型的話怒见, 可以直接.枚舉值賦值, 否則就 枚舉類型.枚舉值
let month:Month = .January
var month1 = Month.January
month1 = .February
switch month{
case.January:
print("hashValue = \(month.hashValue), rawValue = \(month.rawValue)")
case.February:
print(month)
case.March:
print(month)
case.April:
print(month)
}”