Swift学习笔记一-简单值和控制流

学习了IOS这么久,都没有认真了解过Objective-C这门语言,现在从头开始学习Swift.听说以后Android用Swift作为开发语言呀,这NM让Android小伙伴情何以堪...

//
//  main.swift
//  简单值,控制流
//
//  Created by Adrift on 16/4/17.
//  Copyright © 2016年 Adrift. All rights reserved.
//

import Foundation

//################简单值###############

//显式声明常量
let x:Float = 40  
print("\(x) hello world")  
//显式声明变量
var label:String = "the width is"  
//隐式声明变量
var width = 78  
//类型转换
var  widthLabel = label + String(width)

//声明数组
var persons = ["xiaoming","xiaohong"]  
print(persons[0])  
//声明字典
var person = [  
    "name":"xiaogang",
    "age":12
]
print(person["age"])

//数组跟字典初始化方法
let emptyArr = [String]()//后面加个括号是什么鬼?数组长度么?  
let emptyDic = [String:Float]()

//如果类型可以推断出来可以用[]跟[:]
let emptyArr1 = []  
let emptyDic1 = [:]

//################控制流################
//############if############
//用if,switch进行条件操作,用for,for-in,while,repeat-while进行循环.包裹条件和循环变量的括号可以省略,但是语句体的大括号是必须的.
let individualScores = [75,43,103]  
var teamScore = 0  
for score in individualScores {  
    if score > 50 {
        teamScore += 3
    } else {
        teamScore += 1
    }
}
//在if语句中,条件必须是一个布尔表达式
var optionalString:String? = "hello"  
print(optionalString == nil)

var optionalName:String? = nil  
var greeting:String  
if let name = optionalName {  
    greeting = "hello," + name
    //swift的代码规范做的很好,代码一不规范就给你报错,没脾气.不知道是故意做的规范呢?还是没有优化好呢?下面的else语句就不会出现这种问题
    //"hello,"+ name跟"hello," +name会报错
}else {
    //name的值在这是取不到的.
    //greeting = "hello," + name
}
//另一种处理可选值的方式使用??操作符提供默认值,如果可选值为nil,用默认值代替
let nickName:String? = nil  
let fullName:String = "Adrift Jing"  
let informalGreeting = "hello \(nickName ?? fullName)"//这也必须得加空格  
print(informalGreeting)

//############switch############
//switch支持任意类型以及各种比较操作--不仅仅是整数以及测试相等
let vegetable:String = "red pepper"  
//vegetable不能是可选值,switch中必须包含default,不然会报错
//执行到匹配的case语句,会退出switch语句,并不用写break
switch vegetable {  
    case "celery","watercress":
        print("hello world");
    case let x where x.hasPrefix("red pepper"):
        print(x);
    default:
        print("everyting")
}

//#########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 = 0  
for (kind,numbers) in interestingNumbers {  
    print(kind)
    if kind != "Square" {
        for number in numbers {
            if number > largest {
                largest = number
            }
        }
    }
}
print("largest is "+String(largest))

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

var m = 2  
repeat {  
    m = m * 2
} while m < 100
print(m)  
//可以在循环中使用..<表示范围.  ..<创建的范围不包含上界,如果需要的话使用...
var total1 = 0  
for i in 0..<4 {  
    total1 += i;
}
print(total1);  
var total2 = 0  
for x in 0...4 {  
    total2 += x
}
print(total2)  

--EOF---