swift 2.x学习笔记,二

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

import UIKit

var str = "Hello, playground"

let individualScores = [75, 43, 103, 87, 12];

var teamScore = 0;

for score in individualScores {

// if 里的条件判断 不用加()

if score > 50{

teamScore += 3;

} else{

teamScore += 1;

}

}

print(teamScore);

//? 可选值 可为nil

//你可以一起使用 if 和 let 来处理值缺失的情况。这些值可由可选值来代表。一个可选的值是一个具体的值或者 是 nil 以表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。

var optionalString : String? = "Hello";

print(optionalString == nil)

var optionalName:String? = nil;

var greeting = "Hello";

if let name = optionalName {

greeting = "Hello, \(name)";

} else if(optionalName == nil){

greeting = "bye"

}

//?? 默认值

//如果变量的可选值是 nil ,条件会判断为 false ,大括号中的代码会被跳过。如果不是 nil ,会将值赋给 let 后 面的常量,这样代码块中就可以使用这个值了。

//另一种处理可选值的方法是通过使用 ?? 操作符来提供一个默认值。如果可选值缺失的话,可以使用默认值来代 替。

let nickName : String? = nil;

let fullName : String = "John Appleseed";

let informalGreetin = "Hi \(nickName ?? fullName)";

//switch 支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。

let vegetable = "red pepper";

switch vegetable {

case "celery":

print("Add some raisins and make ants on a log.");

case "cucumber","watercress":

print("That would make a good tea sandwich.");

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

print("Is it a spicy \(x)");

default:

print("Everyting tastes good in soup");

}

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;

var largestKind : String? = nil;

//你可以使用 for-in 来遍历字典,需要两个变量来表示每个键值对。字典是一个无序的集合,所以他们的键和值以 任意顺序迭代结束。

for (kind, numbers) in interestingNumbers {

for number in numbers{

if number > largest {

largest = number;

largestKind = kind;

}

}

}

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 in 0...4 {

firstForLoop += i;

}

print(firstForLoop)

var secondForLoop = 0;

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

secondForLoop += i;

}

print(secondForLoop);