Swift学习笔记(一) 基础部分

Swift 是一种适用于 iOS 和 OS X 应用的全新编程语言,它建立在最好的 C 和 Objective-C 语言之上,并且没有 C 语言的兼容性限制。Swift 采用安全的编程模式,增加了现代功能使编程更容易、更灵活、更有趣。Swift 以成熟且备受宠爱的 Cocoa 和 Cocoa Touch 框架为 支撑,这是一个重新构想软件开发的机会。
Swift 经过了数年的酝酿,Apple 通过改进现有的编译器、调试器和框架结构奠定了 Swift 的 基础,并通过 Automatic Reference Counting(ARC)简化了内存管理。Swift 的 framework stack 建立在坚实的 Foundation 和 Cocoa 基础之上,实现了现代化和彻底标准化。Objective-C 本身已经逐步发展到到支持 blocks、 collection literals 和 modules,使框架不间断地采 用现代语言技术。基于这个基础,我们可以为今后的 Apple 软件开发引入一种新语言。

Swift 控制台输出:

println(“Hello World”)


简单值

使用 let 来声明常量,使用var来声明变量。

var myVaribale = 42
myVaribale = 50
let myConstant = 42


如果初始化没有提供足够的信息,需要在变量后面声明类型,用冒号分割。

let myDouble = 12.0
let myDouble2: Double = 50

Swift不支持隐形转换为其他类型,如果需要转换请使用显式转换

let label = "The width is "
let width = 94
let widthLabel = label + String(width)

还有一个更简单的方法,把值写在括号中,并且之前写个反斜杠。

let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pices of fruit."
println(appleSummary)
println(fruitSummary)

数组与字典

使用方括号[]来创建数字和字典,并使用下标或者键来访问元素

var myArray1 = [“ArrayItem1″,”ArrayItem2″,”ArrayItem3″,”ArrayItem4”]
myArray1[2] = "Modifiy!!"

var myDictionary1 = [
    "key1":"value1",
    "key2":"value2",
    "key3":"value3",
]
myDictionary1[“key2”] = “Nekoya"

要创建一个空数组或者字典,并使用初始化语法。

let emptyArray = String[]()
let emptyDictionary = Dictionary<String , Float>()

也可以使用[]和[:]来创建空的数组和空字典

shoppingList = []


流程控制

使用if和switch赖进行条件操作,使用for-in、for、while和do-while赖进行循环。包裹条件和循环变量括号可以省略,但是语句体的大括号是必须的。

let individualScores = [75,43,103,87,12]
var teamScore = 0
for score in individualScores{
    if score > 50{
        teamScore += 3
    }else{
        teamScore += 1
    }
}

可以使用if和let赖处理值缺失的情况,有些变量的值是可选的,一个可选的值可能是一个具体的值或者nil,标示值缺失。在类型后面加一个问号标记这个变量是可选的。


var optionalString: String? = "Hello"
optionalString == nil
println(optionalString)

var optionalName : String? = "John Appleseed"
var greeting = "Hello!"
optionalName = nil
if let name = optionalName{
    greeting = "Hello, \(name)"
    println(name)
}else{
    greeting = "No human."
    println(greeting)
}

如果变量的可选值是nil,条件会判断为false,大括号中的代码就会被跳过。

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

let vegetable = "red pepper"
switch vegetable{
    case "celery":
        let vegetableComment = "Add some raisins and make ants on a log."
    case "cucumber","watercress":
        let vegetableComment = "That would make a good tea sandwich."
    case let x where x.hasSuffix("pepper"):
        let vegetableComment = "Is it a spicy \(x)"
    default:
    let vegetableComment = "Everything tastes good in soup."
}

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

可以使用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{
    for number in numbers{
        if number > largest{
            largest = number
        }
    }
}

使用while来重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾

var n = 2
while n < 100{
    n = n * 2
}

var m = 2
do{
    m = m * 2
} while m < 100

你可以在循环中使用…来表示范围,也可以使用传统的写法。

for i in 0…3 {
    firstForLoop += i
}

var secondForLoop = 0;
for var i = 0; i < 3; ++i{
    secondForLoop += 1
}

 

发布者

Zmsky

http://xloli.net/?page_id=11

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.