swift 基礎(chǔ)(一)簡單值轉(zhuǎn)換坛怪、控制流淤齐、函數(shù)基礎(chǔ)

/**

*? 1、簡單值的計算與轉(zhuǎn)換

*/

//無需指定值的類型(賦值的時候系統(tǒng)會自動識別)

let integer1 = 10

let double2 = 10.0


//同時聲明三個相同類型的變量袜匿,每個變量之間用都好隔開更啄,并在最后加上所屬類型

var value1, value2, value3:Double

//值的類型定義

let float3:Float = 30;

print("1、float:",float3," is that right");


//值轉(zhuǎn)字符串

let label = "this is a label"

let labelLength = 40

let labelString = label + String(labelLength)

print("1居灯、"+labelString)

//字符串與字符串拼接

let appleCount = 10

let orangeCount = 4

let totalCountStr = "I have \(appleCount + orangeCount) fruits"

print("1锈死、===asdflkj",totalCountStr + ",hah","aaaaaa===")

//還有

print("1、===asdflkj \(totalCountStr),hah,aaaaaa===")

//創(chuàng)建數(shù)組和字典

var hahArray = ["hah1","hah2","hah3"]

print(hahArray[2])

var hahDictionary = [

"hah1":"h",

"hah2":"a",

"hah3":"h"

]

hahDictionary["hah4"] = "yeah"

print("1穆壕、",hahDictionary["hah2"])

//創(chuàng)建一個空數(shù)組和字典

//指定類型的數(shù)組

let emptyArray = [String]()

let emptyDictionary = [String:Float]()

//如果數(shù)組和字典的類型能夠識別出,不指定類型也行

let emptyArray1 = []

let emptyDictionary1 = [:]

print("==========華麗的分割線=========")

/**

*? 2其屏、控制流:if / switch / for-in / for / while / repeat-while

*/

/********** if *******************/

//實現(xiàn)計算并輸出一個數(shù)組中大于50的元素個數(shù)喇勋,語法如下

let tempArray = [10,59,30,23,58,100]

var count = 0

for score in tempArray{

if score > 50{

count += 1

}

}

print("2、count:", count)

//swift中不會自動將 值 與 0 做比較偎行,也就是說不能使用 if socore{...} 這樣的語法川背,否則會報錯;判斷值是否為空時蛤袒,在類型后面加一個問號熄云,標記這個變量的值是可選的,同時與nil做比較

var optionalString:String? = "Hello"

print("2妙真、is that optionalString? existed?",optionalString != nil)

//通常是將if與let一起使用,一個可選值可以是一個具體值也可以是nil缴允,如果變量的可選值為nil,let name = optionalString2? 判斷結(jié)果為false珍德,如果不是nil练般,會將optionalString2的值賦值給name

var optionalString2:String? = "APPLE"http://變量可選值

//var optionalString2:String? = nil

var greeting = "Hello"

if let name = optionalString2{

greeting = "Hello,\(name)"

}else{

greeting = "HAH"

}

print("2、if",greeting)

/********* switch **************/

//switch支持任意類型的數(shù)據(jù)比較锈候,如String薄料,Integer;switch匹配到相應(yīng)的case后會自動退出switch語句,并不會繼續(xù)向下運行泵琳,因此可以省略break

let string = "apple"

var tempString = ""

switch string{

case "apple":

tempString = "a"

case "p":

tempString = "p"

case "l":

tempString = "l"

default:

tempString = "APPLE"

}

print("2摄职、switch",tempString)

/******* for-in ***********/

//使用for-in遍歷字典,語法為:for(key,value)in dictionary{...},括號中的key和value為自己聲明的keyName和valueName誊役,可不與dictionary中的key和value同名

let dictionaryArray = [

"array1":[1,2,3,4],

"array2":[5,6,9,8],

"array3":[10,9,8,7]

]

var largest = 0

var largestKey = "key"

for(arrayName,numberArray) in dictionaryArray{

for number in numberArray{

if number > largest{

largestKey = arrayName

largest = number

}

}

}

print("2、for-in:largest number is",largest," largest keyName is",largestKey)

//在 for 循環(huán)中使用 ..< 來表示范圍谷市,也可以用傳統(tǒng)的寫法蛔垢;是使用..<創(chuàng)建的范圍不包含上界,包含上界的寫法:...<

var runLoopCount = 0

for i in 0..<4{

runLoopCount += 1

}

print("2歌懒、for 使用 ..< 表示范圍:",runLoopCount)

var run2 = 0

for var j = 0; j < 4; ++j{

run2 += 1

}

print("2啦桌、使用常規(guī)for循環(huán):",run2)

/******** while **********/

//while的語法和oc相似

var n = 2

while n < 50{

n = n * 2

}

print("2、while",n)

/**

*? 函數(shù)和閉包

*/

//用 func 聲明一個函數(shù) 及皂,語法: func 方法名(參數(shù)名1:參數(shù)類型甫男,參數(shù)名2:參數(shù)類型,) -> 返回值類型{...} 從第二個內(nèi)部方法名開始必須寫上验烧,否則會報錯板驳,如果想要讓第一個方法名也必須寫,只需要 func greet(name name:String,day:String)->Sring{...}

func greet(name:String,day:String) -> String{

return "Hello \(name),today is \(day)day"

}

print("3碍拆、函數(shù)聲明:\( greet("hah",day: "sunny ") ) ===")

//swift中的函數(shù)可以通過使用 “元組” 返回多個值若治,該元組可以用名稱或者數(shù)字表示

func hahFunctionName(scores:[Int]) -> (min:Int, max:Int, sum:Int){

var max = scores[0]

var min = scores[0]

var sum = 0

for score in scores{

sum += score

if score > max{

max = score

}

if score < min{

min = score

}

}

return(min,max,sum)

}

let returnValue = hahFunctionName([2,3,4,5]);

print("3、返回多個值: 最大值\(returnValue.max)或者\(returnValue.1) 最小值\(returnValue.min)或者\(returnValue.0) 總和\(returnValue.sum)或者\(returnValue.2)")

//函數(shù)能嵌套感混,能作為另一個參數(shù)的返回值端幼,也能作為參數(shù)

//1、嵌套,傳入的參數(shù)帶有可變參數(shù)的時候用Int...表示(Int為參數(shù)類型)

func method1(number1:Int...)->Int{

var sum = 0

func add(){

for num in number1{

sum += num

}

}

add()

return sum

}

method1(3,5)

//2弧满、函數(shù)作為返回值,returnFunc()->(Int->Stirng)中的Int為方法里面的int2String的參數(shù)類型婆跑,String為最終返回的類型,第一個方法和里面的第二個方法的最終返回類型需保持一致

func returnFunc() -> (Int->String){

func int2String(num:Int) -> String{

return " change to \(num) string"

}

return int2String

}

var intNum = returnFunc()//返回值為int2String(),因此intNum = int2String

intNum(3)

//多個返回值情況

func returnFunc2() -> ((Int,String)->(Int,String)){

func int2String(num:Int,string: String) ->(Int,String){

return? (num,"change to \(num) string")

}

return int2String

}

var intNum2 = returnFunc2()//返回值為int2String()庭呜,因此intNum2 = int2String

var intAndString = intNum2(3,"hah")

intAndString.1

//函數(shù)作為參數(shù)的情況

func matchGame(nums:[Int], condition:Int -> Bool) -> Bool{

for items in nums{

if condition(items){

return true

}

}

return false

}

func moreThanTen(num:Int)->Bool{

return num > 10

}

matchGame([3,25,6,23,14], condition: moreThanTen)

func matchCount(nums:[Int], condition:Int -> Bool) -> Int{

var count = 0

for items in nums{

if condition(items){

count += 1

}

}

return count

}

func moreThanFive(num:Int)->Bool{

return num > 5

}

matchCount([3,25,6,23,14], condition: moreThanFive)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滑进,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子募谎,更是在濱河造成了極大的恐慌扶关,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件数冬,死亡現(xiàn)場離奇詭異节槐,居然都是意外死亡,警方通過查閱死者的電腦和手機吉执,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門疯淫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人戳玫,你說我怎么就攤上這事熙掺。” “怎么了咕宿?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵币绩,是天一觀的道長蜡秽。 經(jīng)常有香客問我,道長缆镣,這世上最難降的妖魔是什么芽突? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮董瞻,結(jié)果婚禮上寞蚌,老公的妹妹穿的比我還像新娘。我一直安慰自己钠糊,他們只是感情好挟秤,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抄伍,像睡著了一般艘刚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上截珍,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天攀甚,我揣著相機與錄音,去河邊找鬼岗喉。 笑死秋度,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的钱床。 我是一名探鬼主播静陈,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诞丽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拐格,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤僧免,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捏浊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懂衩,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年金踪,在試婚紗的時候發(fā)現(xiàn)自己被綠了浊洞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡胡岔,死狀恐怖法希,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情靶瘸,我是刑警寧澤苫亦,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布毛肋,位于F島的核電站,受9級特大地震影響屋剑,放射性物質(zhì)發(fā)生泄漏润匙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一唉匾、第九天 我趴在偏房一處隱蔽的房頂上張望孕讳。 院中可真熱鬧,春花似錦巍膘、人聲如沸厂财。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蟀苛。三九已至,卻和暖如春逮诲,著一層夾襖步出監(jiān)牢的瞬間帜平,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工梅鹦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留裆甩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓齐唆,卻偏偏與公主長得像嗤栓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子箍邮,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容