Swift开发第八篇——方法嵌套&命名空间

本篇分为两部分:

一、Swift中的方法嵌套

二、Swift中的命名空间


一、Swift中的方法嵌套

在 swift 中我们可以让方法嵌套方法,如:

func appendQuery(var url: String,
                     key: String,
                   value: AnyObject) -> String {

    func appendQueryDictionary(url: String,
                                   key: String,
                                 value: [String: AnyObject]) -> String {
        //...
        return "result"
    }

    func appendQueryArray(url: String,
                              key: String,
                            value: [AnyObject]) -> String {
        //...
        return "result"
    }

    func appendQuerySingle(url: String,
                               key: String,
                             value: AnyObject) -> String {
        //...
        return "result"
    }

    if let dictionary = value as? [String: AnyObject] {
        return appendQueryDictionary(url, key: key, value: dictionary)
    } else if let array = value as? [AnyObject] {
        return appendQueryArray(url, key: key, value: array)
    } else {
        return appendQuerySingle(url, key: key, value: "value")
    }
}

二、Swift中的命名空间

  我们之前在使用 OC 开发时,它是没有命名空间的,所有的代码和引用的静态库最终都会被编译到同一个域和二进制中,这样的后果是一旦我们有重复的类名的话,就会导致编译时的冲突和失败。为了避免这种事情的发生,OC 的类型一般都会加上两到三个字母的前缀,比如 MJExtense,MJRefresh,MBProgressHUD 这样。但是前缀并不意味着保证能够不冲突,Swift 使用命名空间后为我们解决了该问题

// MyFramework.swift
// 这个文件存在于 MyFramework.framework 中
public class MyClass {
    public class func hello() {
        print("hello from framework")
    }
}
// MyApp.swift
// 这个文件存在于 app 的主 target 中
class MyClass {
    class func hello() {
        print("hello from app")
    }
}
MyClass.hello()
// hello from app
MyFramework.MyClass.hello()
// hello from framework

另一种策略是使用类型嵌套的方法来指定访问的范围

struct MyClassContainer1 {
    class MyClass {
        class func hello() {
            print("hello from MyClassContainer1")
        } }
}
struct MyClassContainer2 {
    class MyClass {
        class func hello() {
            print("hello from MyClassContainer2")
        } }
}

// 使用时:
MyClassContainer1.MyClass.hello()
MyClassContainer2.MyClass.hello()

这样我们就可以避免去使用一些稀奇古怪的前缀了。

时间: 2024-08-03 08:29:37

Swift开发第八篇——方法嵌套&命名空间的相关文章

PowerBI开发 第八篇:查询参数

在PowerBI Desktop中,用户可以定义一个或多个查询参数(Query Parameter),通常的用法是通过查询参数定义数据查询(Query),在数据模型中创建关系,通过DAX表达式引用参数.在查询编辑器(Query Editor)中,用户通过菜单“Manage Parameters”创建和管理参数,参数有Name属性,参数的数据类型,以及参数的类型(List of Values,ListQuery),当前值(Current Value)等属性,用于手动枚举参数的值,或则指定一个Lis

Swift开发第五篇——四个知识点(Struct Mutable方法&Tuple&autoclosure&Optional Chain)

本篇分三部分: 一.Struct Mutable方法 二.多元组(Tuple) 的使用 三.autoclosure 的使用 四.Optional Chain 的使用 一.Struct Mutable方法 直接上代码: struct User { var weight: Int var height: Int // 这里会报错 Left side of mutating operator isn't mutable:'self' is immutable // 因为 Struct 出来的变量是 i

Swift开发第六篇——操作运算符也可以重载& func 的参数修饰

本篇分为两部分: 1.Swift 中重载操作运算符的使用 2.Swfit 中 func 的参数修饰 1.Swift 中重载操作运算符的使用 与别的语言不同,Swift 支持运算符的重载,运算符指的是“+,-,%,*”等操作运算符,从而使一些操作更加简便. 在开发中,我们对于一些基本运算通常是这样写的: struct Vector2D { var x = 0.0 var y = 0.0 } let v1 = Vector2D(x: 2, y: 3) let v2 = Vector2D(x: 1,

Swift开发第四篇——柯里化

本篇分为两部分: 一.柯里化的基本使用 二.柯里化的使用场景 一.柯里化的基本使用 柯里化(Currying):也就是把接受多个参数的方法变换成接受第一个参数的方法,并且返回接受余下的参数并且返回结果的新方法. func addTwoNumbers(a: Int)(num: Int) -> Int { return a + num } 然后通过只传入第一个括号内的参数进行调用,这样将返回另一个方法 let addToFour = addTwoNumbers(4) let result = add

安卓开发 第八篇 我的安卓应用架构设计-----图片选择以及剪裁

Android开发中遇到要从相册选择图片时,大多数人都会选择调用Android自带的相册,毕竟这样可以节约时间,又不用自己去处理图片的问题,不过这样也会产生一些问题,有些系统自带的相册真的是丑到没朋友,有时调用系统相册时不时的还可能发生崩溃问题.而我的安卓架构中选择了自定义相册的功能,其效果是仿照QQ的图片选择样式,通过dialog展现出来的,还自定义了图片的剪裁,使用了CropImageView 实现了多种剪裁效果. 图片选择的直接辅助类: /** * 图片选择辅助类 * Created by

iOS开发笔记 - 语言篇之Swift

?2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布"We have new programming language"(我们有了新的编程语言)的时候,全场响起了最热烈和持久的掌声,伴随着掌声到来的语言叫Swift.接下来Craig Federighi更是毫不掩饰的告诉大家,Swift将成为主宰iOS和Mac开发的新语言,甚至是整个软件行业中最举足轻重的语言. ??Swift正如它的名字那样迅速.敏捷,但这并不是它的全部.Swift是一个博采众长的

Swift开发学习(一):初始篇

http://blog.csdn.net/powerlly/article/details/29351103 Swift开发学习:初始篇 关于 苹果公司于WWDC2014(Apple Worldwide Developers Conference. June 2-6, San Francisco)发布新的编程语言--Swift.在这里就不重复介绍了,本篇主要简单列举几点,然后介绍Swift入门操作. Swift是什么 Swift是用来写iOS和OS X程序的编程语言. Swift吸取了C和Obj

iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序

iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: // // YYcarsgroup.h // 07-汽车展示(高级) // // Created by apple on 14-5-28. // Copyright (c) 2014年 itcase. All rights reserved. // #import <Foundation/Foundation.h> @

Python开发【第十八篇】:MySQL(二)

Python开发[第十八篇]:MySQL(二) 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( SELECT nid, NAME FROM tb1 WHERE nid > 2 ) AS A WHERE A. NAME > 'alex'; 临时表搜索 1.创建视图 --格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v