《swift 2.1基础部分 》在playground上练习

// Playground - noun: a place where people can play


import UIKit


//1.声明常量和变量,可以不指定数据类型,编译器会自动识别

let maximumNumberOfLoginAttempts =10

var currentLoginAttempt =0

var x=0.0,y=0.0,z=0.0


//2.类型标注

/* 当你声明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在

常量或者变量名后面加上一个冒号和空格,然后加上类型名称。*/

var welcomeMessage:String

welcomeMessage="Hello"


//3.常量和变量的命名

var friendlyWelcome ="Hello!"

friendlyWelcome = "Bonjour!"

//friendlyWelcome 现在是 "Bonjour!"


let languageName ="Swift"

//languageName = "Swift++"

//这会报编译时错误 - languageName 不可改变


//4.输出常量和变量

println(friendlyWelcome)

println("This is a string")

/*Swift 用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift会用当前常量或变量的值

替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义:*/

println("The current value of friendWelcom is\(friendlyWelcome)")


//5.注释

// 这是一个注释


/* 这是一个,

多行注释 */


/* 这是第一个多行注释的开头

/* 这是第二个被嵌套的多行注释 */

这是第一个多行注释的结尾 */


//6.分号

/*与其他大部分编程语言不同,Swift并不强制要求你在每条语句的结尾处使用分号(;),当然,你也可以按照你自己的习惯添加分号。有一种情况下

必须要用分号,即你打算在同一行内写多条独立的语句*/

let cat ="cat";println(cat)


//7.整数,浮点数

let minValue =UInt8.min

let maxValue =UInt8.max


let minValue2=Int.min

let maxValue2=Int.max


let minValue3 =UInt.min

let maxValue3 =UInt.max



//8.数值型字面量

let decimaInteger =17

let binaryInteger =0b10001 //二进制

let octalInteger =0o21     //八进制

let hexdecimalInteger =0x11 //16进制


let decimalDouble =12.1875

let exponentDouble =1.21875e1

let hexadecimalDouble =0xC.3p0



let paddedDouble =000123.456

let oneMillion =1_000_000

let justOverOneMillion =1_000_000.000_000_1


//9.数值型类型转换

//9.1:整数转换

let twoThousand:UInt16 =2_000

let one:UInt8 =1

let twoThousandAndOne =twoThousand +UInt16(one)

//9.2:整数和浮点数转换

let three =3

let pointOneFourOneFiveNine =0.14159

let pi = Double(three) +pointOneFourOneFiveNine


let integerPi =Int(pi)


//10:类型别名

typealias AudioSample =UInt16

var maxAmplitudeFound =AudioSample.min



//11:布尔值

let orangesAreOrange =true

let turnipsAreDelicious =false


if turnipsAreDelicious {

    println("Mmm,tasty turnips!")

}

else {

    println("Eww,turnips are horrible.")

}


//12:元组

/*元组(tuples)把多个值组合成一个复合值。元组内的值可以使任意类型,并不要求是相同类型。*/

let http404Error = (404,"Not Found")

//http404Error 的类型是 (Int, String),值是 (404, "Not Found")


//你可以将一个元组的内容分解(decompose)成单独的常量和变量,然后你就可以正常使用它们了:

let (statusCode,statusMessage) =http404Error

println("The status code is\(statusCode)")

println("The status message is\(statusMessage)")


//如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记:

let (justTheStatusCode,_) =http404Error

println("The status code is\(justTheStatusCode)")


//此外,你还可以通过下标来访问元组中的单个元素,下标从零开始:

println("The status code is\(http404Error.0)")

println("The status message is\(http404Error.1)")



//你可以在定义元组的时候给单个元素命名:

let http200Status = (statusCode:200,description:"OK")

println("The status code is\(http200Status.statusCode)")

println("The status message is\(http200Status.description)")



//13:可选(optionals)

//有值,等于

//或者 没有值


let possibleNumber ="123"

let convertedNumber =possibleNumber.toInt()

convertedNumber 被推测为类型 "Int?"或者类型 "optional Int"


/*if 语句以及强制解析

你可以使用if语句来判断一个可选是否包含值。如果可选有值,结果是true;如果没有值,结果是false

当你确定可选包确实含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个惊叹号表示我知道这个可选有值,请使用它。这被称为可选值的强制解析(forced unwrapping*/


//报错

/*if convertedNumber {

    println("\(possibleNumber) has an integer value of \(convertedNumber!)")

}

else{

    println("\(possibleNumber) could not be converted to an integer")

}*/


//可选绑定

iflet actualNumber =possibleNumber.toInt() {

    println("\(possibleNumber) has an integer value of \(actualNumber)")

}

else {

    println("\(possibleNumber) could not be converted to an integer")

}


//nil

//你可以给可选变量赋值为nil来表示它没有值:

var serverResponseCode:Int? =404

serverResponseCode = nil

var surveryAnswer:String?



//隐式解析可选

//下面的例子展示了可选String和隐式解析可选String之间的区别:

let possibleString:String? ="An optional string"

println("possibleString!")



let assumedString:String! ="An implicity unwrapped optional string."

println(assumedString)



//14:断言

/*可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况。然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行。

这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因*/

let age =5


assert(age >=0,"A person's age can not be less than zero")


/*何时使用断言

当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:

整数的附属脚本索引被传入一个自定义附属脚本实现,但是下标索引值可能太小或者太大。

需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。

一个可选值现在是nil,但是后面的代码运行需要一个非nil值。*/



//欢迎大家讨论 学习












































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懂IT的嵌入式工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值