设为首页 加入收藏

TOP

相关语法进阶(一)
2017-10-09 14:06:06 】 浏览:5590
Tags:相关 语法 进阶

//

//  main.swift

//  Swift_Other

//

//  Created by 齐彦坤 on 2017/7/21.

//  Copyright © 2017年 KG. All rights reserved.

//

 

// 2.3 与 3.0 迁移对比 http://www.jianshu.com/p/460b5424942a

import Foundation

 

// Swift 与 Objective-C 中的 nil

// Swift 使用 nil 代表 <#值缺失#>

// Swift 中 nil与 Objective-C 中的 nil 完全不同, 在 Objective-C 中, nil 代表一个并不次混在的指针对象, 而在 Swift 中并不代表指针而是一个确定的值-------他是一个确定的值, 用于代表"值缺失", 任何 <#可选类型#> 的变量都可以呗赋值为 nil, 如 Int?, Double? 等都可以接受 nil 值.

//  can not recieve nil

// Var age: Int = nil

// Int? 类型的才可以接受 nil

// var age: Int? = nil

// var myName : String?

// print(myName ?? "")

 

var name_prefix = "123456"

var info = name_prefix + "789"

print(info)

name_prefix.removeAll(keepingCapacity: false) // storge and string -- > falses (released) /  true (NoReleased)

 

var diamond : Character = "\u{2666}"

var heart : Character = "\u{2663}"

var club : Character = "\u{2665}"

var spade : Character = "\u{2660}"

print("\(diamond) \(heart) \(club) \(spade)") // ? ? ? ?

 

// \n -- \u{a}

 

 

// 7.6 属性观察者

// willSet(newValue): 被观察的属性即将被赋值之前自动调用该方法

// didSet(oldValue):  被观察的属性即将被赋值完成之后自动调用该方法

// 只要程序对非延迟存储的存储属性赋值 --- 即使所赋的值与原值相等, 属性观察者也能监听到

 

// 属性观察者监听的范围

// 1. 除了延迟属性之外的所有存储属性

// 2. 可以通过重载的方式为继承得到的属性添加属性观察者

// 3. 普通的属性添加属性观察者是没有意义的

/*

// 格式如下

[修饰符] var 存储属性名: 属性类型 [= 初始值]

{

    willSet

    {

        // 属性即将赋值之前的代码

    }

    didSet

    {

        // 赋值完成之后的代码

    }

}

*/

 

class Person

{

    var name : String = ""

    {

        willSet

        {

            if (name as NSString).length > 6 || (name as NSString).length < 2

            {

                print("no")

            }else{

                print("yes")

            }

        }

        

        didSet

        {

            print("didSetName: \(name)")

        }

    }

}

 

var p = Person()

p.name = "小黄人"

print("p.name = \(p.name)")

 

// 7.7.6 属性和方法的统一

// 全局函数

func factorial(n:Int) -> Int

{

    var result = 1

    for idx in 1...n {

        result *= idx

    }

    return result

}

 

struct SomeStruct

{

    // 将一个布闭包函数作为 info 存储属性的初始值

    var info:() -> Void = {

        print("info 方法")

    }

    // factorial全局函数作为 fact 存储属性的初始值

    static var fact:(Int) -> Int = factorial

}

var sc = SomeStruct()

sc.info()

sc.info = {

    print("另外一个闭包")

}

sc.info()

var n =  6

print("\(n)的阶乘: \(SomeStruct.fact(6))")

 

// 7.8 下标

/*

subscript(形参列表) -> 下表返回值

{

    get

    {

        // getter 执行部分, 必须有返回值

  &n

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Switch 下一篇语法补充

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目