您的位置:首页 > 移动开发 > Swift

Swift基础语法1

2016-09-13 16:53 274 查看
苹果提供了学习swift的非常好的工具就是Xcode中的playground。使用方法为如图:

1步



2步



之后就能够使用了,并且是实时结果显示

var str ="Hello, playground"

print("hello word")

print(str)

let  myTest = 12 //常量

var  myTest1 = 15//变量

myTest1=16

print(myTest)

print(myTest1)

let mytest2 : Double =20

print(mytest2)

//连接方式是类型(值)

let label =
"My GoodLuck Figure"

let Figure = 66

let labelFigure = label +String(Figure)

print(labelFigure)

//连接方式 \(值)

let apples = 3

let oranges = 5

let appleSummary = "I have\(apples)."

let fruitSummary ="I have\(apples+oranges)
pieces of\(appleSummary)"

print(appleSummary)

print(fruitSummary)

let shopingList = ["11","22","33"]

var shopingList1 = ["44","55","66"]

shopingList1[1]="123"//将数组内容替换掉

print(shopingList)

print(shopingList1)

//创建字典 将字典替换掉

var occupations = [

    "123":"234",

    "345":"456",

]

occupations["123"]="你好啊"

print(occupations)

//初始化数组和字典

shopingList1=[]

occupations=[:]

//流程控制图在类型后面加一个 ?来标记这个变量的值是可选的。

var optionalString: String? ="Hello word"

optionalString == nil

var optionalName: String? ="WPJ"

optionalName == nil

var greeting = "Hello!"

if let name =optionalName{

    

   greeting ="Hello,\(name)"

    greeting ="Hello1,\(greeting)\(optionalString)"

    

}else {

    print(greeting)

}

print(greeting)

//switch  switch 中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break。

let vegetable = "red pepper"

var vegetableComment = ""

switch vegetable {

case "celery":

     vegetableComment ="Add some raisins and make ants on a log."

case "cucumber","watercress":

     vegetableComment ="That would make a good tea sandwich."

case let xwhere x.hasSuffix("pepper"):

     vegetableComment ="Is it a spicy\(x)?"

default:

     vegetableComment ="Everything tastes good in soup."

}

print(vegetableComment)

//for in 使用

let interestingNumbers = [

    "Prime": [2,3,5,7,11,13],

    "Fibonacci": [1,1,2,3,5,8],

    "Square": [1,4,9,16,25],

]

var largest = 12

for (kind, numbers) ininterestingNumbers {

    print("111111----\(kind)")

    print("222222----\(numbers)")

    for numberin numbers {

        if number <largest {

            largest = number

        }

    }

}

//求数组中的最大数和最小数

print(largest)

var n = 2

while n <100 {

    n =
n * 2

}

print(n)

var m = 2

repeat {

    m =
m * 2

} while
m < 100

print(m)

var firstForLoop = 0

for i in0..<3 {

    firstForLoop +=1

}

print(firstForLoop)

var secondForLoop = 0

for var i =0 ; i <3 ; i++ {

    secondForLoop +=1

}

print(secondForLoop)

//声明一个函数调用

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

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

}

print(greet("wpj", day:"tuesday"))

func getGasPrices() -> (Float,Int,NSNumber)
{

    return (3.59,69,3.79)

}

getGasPrices()

print(getGasPrices())

//-> 标示返回值得类型

func sumOf(numbers: Double...) ->Double {

    var sum =0.00

    for numberin numbers {

        sum += number

    }

    return sum

}

sumOf()

sumOf(42,597,12)

print(sumOf())

print(sumOf(1.11,2,3))

func returnFifteen() ->
Int {

    var y =10

    y = 10

    func add()

    {

        y+=5

    }

    add()

    return y

    

}

print(returnFifteen())

func makeIncrementer() -> (Int ->Int) {

    func addOne(number:Int) ->Int {

        return1 + number

    }

    returnaddOne

}

var increment = makeIncrementer()

print(increment(5))

func hasAnyMatches(list: [Int], condition:Int ->Bool)
->Bool {

    for itemin list {

        if condition(item) {

            returntrue

        }else

        {

            returnfalse

        }

    }

    returnfalse

}

func lessThanTen(number:
Int) -> Bool {

    return number <10

}

var numbers = [20,19,7,12]

print(hasAnyMatches(numbers, condition:lessThanTen))

print(lessThanTen)

numbers.map ({ (number:Int) ->Intin

    let result =3 * number

    return result

})

print(numbers.map({numberin3
* number}))

class Shleep {

    var numberOfSides =0

    func simpleDescription() ->String {

        return"A shape with\(numberOfSides)
sides."

    }

    

}

print(Shleep)

/*在32位平台上,Int和Int32长度相同。

 在64位平台上,Int和Int64长度相同。*/

let minValue=UInt8.min,maxValue=UInt8.max

print(minValue,maxValue)

let minValue1=Int8.min,maxValue1=Int8.max

print(minValue1,maxValue1)

let minValue2=UInt.min,maxValue2=UInt.max

print(minValue2,maxValue2)

/*Double:64位浮点数。当你需要存储很大或者很高精度的浮点数时使用此类型。

 Float:32位浮点数。精度要求不高时使用此类型*/

typealias AudioSample =
UInt16 //起别名

var BoolType:Bool

BoolType=true//布尔型用true和false 不能用yes和no不能用1和0

print(BoolType)

/*Swfit 类型安全检查会阻止非 Boolean类型的值用在 Boolean的地方。下面的例子中编译器会报告错误:*/

let http404Error = (404,"Not Found")

/*(404, "Not Found") 是将一个 Int类型值和一个 String类型值组合在一起,表示
HTTP状态码的两个部分:数字和描述。它可以被描述为 “一个(Int,String)类型的元组”。*/

let (statusCode,statusMessage) =http404Error//将http404分解成单独的常量或变量(这里是常量)

print(statusCode)

print(statusMessage)

let (justStatuCode,_) =http404Error//只需要一部分的话 忽略的部分用_代替

print(justStatuCode)

http404Error.1

http404Error.0//索引标示元素中的值

//给元组中的元素重命名

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

print(http200Status.statusCode)//直接打印statusCode
404  但是重命名之后打印200

print(http200Status.description)

//toInt  将字符串转换成int类型 强制转型可用以下方法 类型(对象)

let possibleNumber = ""

let convertedNumber = Int(possibleNumber)

//打印对象的类型方法

let typeName =
convertedNumber.dynamicType

//! 表示有值要使用它

print(typeName)

print(possibleNumber.dynamicType)

if convertedNumber==111{

    print("\(possibleNumber)
has an integer value of \(convertedNumber!)")//此处不加!则会打印Optional(111)加!则表示有值强制解析

}else{

    print("\(possibleNumber)
could not be converted tu an integer)")

}

//print(convertedNumber!)

//可选绑定 用来判断actualNumber 是否有值

if var actualNumber =Int(possibleNumber)
{

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

} else {

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

}

//如果定义一个可选常量或变量没有提供默认值,它们会被自动设置为 nil  任何类型的可选都可以被设置为
nil,不只是对象类型。

var surveyAnswer: String? ="123"

print("surveyAnswer is\(surveyAnswer)")

print("surveyAnswer add ! is\(surveyAnswer!)")

var surveyAnswer1: String?

print("surveyAnswer1 is\(surveyAnswer1)")

// 隐式解析可选将?改为!

let possibleString: String? ="An optional string."

print(possibleString)

//隐式可选其实相当于对象后边加!

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

print(assumedString)

//断言调试可以使用全局 assert函数来写一个断言。向 assert函数传入一个结果为
true或者 false的表达式以及一条信息,当表达式为 false的时候这条信息会被显示

let age =3 //加入断言的时候出现不合理的就会报错

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

//如果写成是assert(age < 0, "A person's age cannot be less than zero")就会报错

/*  断言的使用场景  */

/* 整数下标索引被传递一个定制的下标实现,下标索引值可能太小或者太大。

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

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

Demo下载:http://download.csdn.net/detail/bddzzw/9629700
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息