设为首页 加入收藏

TOP

Swift 与Objective-c语法参照(二)
2015-11-19 23:06:54 来源: 作者: 【 】 浏览:24
Tags:Swift Objective-c 语法 参照
ft文件。

示例:

class Recipe {
    var name: String = ""
    var duration: Int = 10
    var ingredients: [String] = ["egg"]
}

在上面的示例中我们创建了一个Recipe类,里面有三个属性,并且都声明了类型,做了初始化。在Swift中类在初始化的时候它的属性必须都被初始化。如果你不想设置某个属性的默认值的话,使用?把它加入可选链中:

class Recipe {
    var name: String?
    var duration: Int = 10
    var ingredients: [String]?
}
这样当你创建一个类的实例的时候:

var recipeItem = Recipe()

这些可选链中的属性的初始值是nil。你可以给它们赋值:

recipeItem.name = "Mushroom Risotto"
recipeItem.duration = 30
recipeItem.ingredients = ["1 tbsp dried porcini mushrooms", "2 tbsp olive oil", "1 onion,
chopped", "2 garlic cloves", "350g/12oz arborio rice", "1.2 litres/2 pints hot vegetable
stock", "salt and pepper", "25g/1oz butter"]

类可以继承父类和遵守协议,示例:

OC中:

?@interface SimpleTableViewController : UIViewController 
    

Swift中:

class SimpleTableViewController : UIViewController, UITableViewDelegate, UITableViewDataSource

7.Methods方法

Swift允许你在类、结构体和枚举中创建方法。

下面是一个没有参数和返回值的方法:

class TodoManager {
    func printWelcomeMessage() {
        println("Welcome to My ToDo List")
    }
}

在OC中调用一个方法的格式如下:

todoManager printWelcomeMessage];

在Swift中调用一个方法的格式如下:

todoManager.printWelcomeMessage()

如果要建立一个带参数和返回值的方法,格式如下:

class TodoManager {
    func printWelcomeMessage(name:String) -> Int {
        println("Welcome to \(name)'s ToDo List")
return 10 }
}

"->"用来指示方法的返回值类型。

你可以这样调用上面的方法:

var todoManager = TodoManager()
let numberOfTodoItem = todoManager.printWelcomeMessage("Simon")
println(numberOfTodoItem)


8.Control Flow控制流

Swift中的控制流和循环颇有C语言的风格。

8.1for循环

for循环使用 for - in的结构,并且可以和Range(...或者..<)配合使用:

for i in 0..<5 {
    println("index = \(i)")
}

会在控制台输出:

index = 0

index = 1

index = 2

index = 3

index = 4



如果我们使用...这是个闭集合,结果会返回:

index = 0

index = 1

index = 2

index = 3

index = 4

index = 5

如果你想用c中的结构也是可以的:

for var i = 0; i < 5; i++ {
    println("index = \(i)")
}

只不过for后面不用写括号了。


8.2 if-else结构

和OC中很像,只不过Swift中更简单一些,条件语句不需要写在括号中:

var bookPrice = 1000;
if bookPrice >= 999 {
    println("Hey, the book is expensive")
} else {
    println("Okay, I can affort it")
}

8.3 switch结构

Switch中的switch结构拥有非常强大的功能。

示例:

switch recipeName {
    case "Egg Benedict":
        println("Let's cook!")
    case "Mushroom Risotto":
        println("Hmm... let me think about it")
    case "Hamburger":
        println("Love it!")
    default:
}
println("Anything else")

首先Swift中的switch中可以控制字符串,OC中的NSString是不能被switch控制的,在OC中要实现类似功能你只能使用if-else。

另外你可以看到在每个case中我们都没有写break,在OC中你必须在每个case中写break,否则在当前case结束后会进入下一个case,在Swift中当前case被执行后就会自动跳出switch,如果需要进入下一个case,添加fallthrough语句。

最后,switch的case中可以包含Range操作:

var speed = 50
switch speed {
case 0:
    println("stop")
case 0...40:
    println("slow")
case 41...70:
    println("normal")
case 71..<101:
    println("fast")
default:
    println("not classified yet")
}

9.Tuple元组

元组类型在OC中是没有的,它可以包含多种不同的数据类型,你可以把它用作方法的返回值,这样就可以用一个元组来代替返回一个复杂的对象了。例如:

let company = ("AAPL", "Apple Inc", 93.5)

你可以把元组company中的值取出来,用法如下:

let (stockCode, companyName, stockPrice) = company
println("stock code = \(stockCode)")
println("company name = \(companyName)")
println("stock price = \(stockPrice)")

或者company.0、company.1这样的方法也能取到值,更好的做法是在定义元组的时候给每个元素起个名字:

let product = (id: "AP234", name: "iPhone 6", price: 599)
println("id = \(product.id)")
println("name = \(product.name)")
println("price = USD\(product.price)")

下面是一个把元组作为返回类型的例子:

class Store {
    func getProduct(number: Int) -> (id: String, name: String, price: Int) {
        var id = "IP435", name = "iMac", price = 1399
        switch number {
            case 1:
                id = "AP234"
                name = "iPhone 6"
                price = 599
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇linux用c语言获取系统启动时长 下一篇C语言中的errno(错误报告)用法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: