swift学习第二天

函数



函数是执行特定任务的代码自包含块。通过给定一个函数名称标识它是什么,并在需要的时候使用该名称来调用函数以执行任务。

Swift的统一的功能语法足够灵活的,可表达任何东西,无论是不带参数名称的简单的样式函数,还是带本地和外部参数名称的复杂的Objective-C样式方法。参数可为简单函数调用提供默认值,并且可以被作为输入/输出参数传递,在函数执行完成时修改传递来的变量。

Swift中的每个函数都有一个类型,包括函数的参数类型和返回类型。你可以像使用Swift中其他类型一样使用该类型,这使得它很容易将函数作为参数传递给其他函数,甚至从函数中返回函数类型。函数也可以被写入其他函数中以在函数作用于中封装有用的功能。

定义和调用函数



当你定义一个函数时,你可以选择性地定义一个或多个名称,类型值作为函数的输入(称为形参),或者定义一个函数结束后返回值的类型(称之为返回型)。每一个函数都有一个函数名,用来描述了函数执行的任务。要使用一个函数时,可使用它的名称进行“调用”,并通过它的输入值(称为实参--argument)来匹配函数的参数类型。一个函数的实参(arguments)必须始终和函数形参(parameter)顺序一致。

例如在下面的例子中被调用的函数greetingForPerson,像它描述的那样 -- 它需要一个人的名字作为输入并返回一句针对那个人的问候语。为了实现该功能,你定义了一个输出参数--一个名为personName的字符串值,以及一个String返回类型,包含一个针对那个人的问候语:

func sayHello(personName: String) -> String {
    let greeting = "Hello, " + personName + "!"
    return greeting
} 

闭包表达式



嵌套函数是一种在较复杂函数中方便进行命名和定义自包含代码模块的方式。 当然,有时候撰写小巧的没有完整定义和命名的类函数结构也是很有用处的,尤其是在处理一些函数并需要将另外一些函数作为该函数的参数时。

闭包表达式是一种利用简洁语法构建内联闭包的方式。 闭包表达式提供了一些语法优化,使得撰写闭包变得简单明了。 下面闭包表达式的例子通过使用几次迭代展示了 sort 函数定义和语法优化的方式。 每一次迭代都用更简洁的方式描述了相同的功能。

闭包表达式语法

闭包表达式语法有如下一般形式:

{ (parameters) -> returnType in
    statements
} 

闭包表达式语法可以使用常量、变量和 inout 类型作为参数,但不提供默认值。 也可以在参数列表的最后使用可变参数。元组也可以作为参数和返回值。

下面的例子展示了之前 backwards 函数对应的闭包表达式版本的代码:

需要注意的是内联闭包参数和返回值类型声明与 backwards 函数类型声明相同。 在这两种方式中,都写成了 (s1: String, s2: String) -> Bool类型。 然而在内联闭包表达式中,函数和返回值

reversed = sort(names, { (s1: String, s2: String) -> Bool in
    return s1 > s2
}) 

类型都写在大括号内,而不是大括号外。

闭包的函数体部分由关键字 in 引入。 该关键字表示闭包的参数和返回值类型定义已经完成,闭包函数体即将开始。

因为这个闭包的函数体部分如此短以至于可以将其改写成一行代码:

reversed = sort(names, { (s1: String, s2: String) -> Bool in return s1 > s2 } ) 
时间: 2024-12-26 06:10:48

swift学习第二天的相关文章

Swift学习第二练——Swift项目时光电影

Swift学习第二练--Swift项目时光电影 很早以前的一个OC的练习项目,用swift重新写了一遍,因为xcode版本的更新对swift的兼容度也在不断改变,此版本适用于xcode6.1. 这个项目中,用swift将iOS官方SDK中的HTTP进行了封装,使用了swift编写的异步加载网络图片的方法.练习了用swift操作界面布局,跳转界面等的方法. 下面是封装的下载类的核心代码: private var httpConnection:NSURLConnection? class ZYHHt

swift学习第二天:swift中的基本数据类型

一:swift基本数据类型 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型 有符号 Int8 : 有符号8位整型 Int16 : 有符号16位整型 Int32 : 有符号32位整型 Int64 : 有符号64位整型 Int : 和平台相关(默认,相当于OC的NSInteger) 无符号 UInt8 : 无符号8位整型 UInt16 : 无符号16位整型 UInt32 : 无符号32位整型 UInt64 : 无符号64位整型 UInt : 和平台相关(

swift系统学习第二章

第五节:可选类型 optional 1 //: Playground - noun: a place where people can play 2 3 import UIKit 4 5 /* 6 Swift学习第五节 7 可选类型 optional(可能是任何值) 8 9 10 */ 11 let possibleNumber = "520" 12 var result = Int(possibleNumber) 13 print(result) 14 result.dynamicT

Swift 学习-多线程

1:第一种多线程 func fun1(){ for i in 200...300{ NSLog("%d",i); } } func fun2(){ for i in 300...400{ NSLog("%d",i); } } var th1 = NSThread(target:self,selector:"fun1",object:nil); th1.start(); //开启线程 NSThread.detachNewThreadSelector

Swift学习——Swift基础详解(四)

A:小儿编程很不好! B:多半是不爱学,从看英文版开始,让你爱上编程! Type Aliases    类型重定义(typedef) Swift中重定义类型的关键字是typealias,至于怎么用,应该不必多说了,看例子: typealias AudioSample = UInt16 //定义了一个类型名称AudioSample,代表UInt16类型 var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound is now 0 Boo

Swift学习笔记七:闭包

闭包可以 捕获 和存储其所在上下文中任意常量和变量的引用. Swift 会为您管理在 捕获 过程中涉及到的内存操作. 在 函数 章节中介绍的全局和嵌套函数实际上也是特殊的闭包,闭包采取如下三种形式之一: 1. 全局函数是一个有名字但不会捕获任何值的闭包 2. 嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包 3. 闭包表达式是一个可以捕获其上下文中变量或常量值的没有名字的闭包 一.闭包表达式 闭包函数类似于Objective-C中的block.下面我们用事实说话: let counts =

[转]swift 学习资源 大集合

今天看到了一个swift的学习网站,里面收集了很多学习资源 [转自http://blog.csdn.net/sqc3375177/article/details/29206779] Swift 介绍 Swift 介绍 来自 Apple 官方 Swift 简介 (@peng_gong) 一篇不错的中文简介 [译] Swift 首席架构师 Chris Lattner 简介(黄利民) Swift 背后的男人,他的个人主页. Swift 观点 如何评价 Swift 语言?(@知乎) 已有近 5000 人

swift 学习资源 大集合

今天看到了一个swift的学习网站,里面收集了很多学习资源 Swift 介绍 Swift 介绍 来自 Apple 官方 Swift 简介 (@peng_gong) 一篇不错的中文简介 [译] Swift 首席架构师 Chris Lattner 简介(黄利民) Swift 背后的男人,他的个人主页. Swift 观点 如何评价 Swift 语言?(@知乎) 已有近 5000 人关注该问题! [译] Rust 创始人 Graydon Hoare 对 Swift 的看法 (@CSDN) 无废话 Swi

Swift学习初步(一)

前几天刚刚将有关oc的教程草草的看了一遍,发现oc其实也不像传说的那么难.今天又开始马不停蹄的学习Swift因为我很好奇,到底苹果出的而且想要代替oc的编程语言应该是个什么样子呢?看了网上的一些中文教材之后,才发现原来swift真的是太灵活,相比较之前oc语言真的是有天壤之别了.随着学习的深入,我发现自己真的喜欢上了swift,鉴于网上的教程还不是太多的缘故,我就萌生了将自己的一些学习体验写成一系列博客的想法,如果有什么不全面的地方欢迎大家来拍砖. 首先我来说说自己对于swift的第一印象吧!那