函数:函数是独立的代码块,执行特定的任务。

Swift 的统一函数语法足够灵活,能表达没有参数名称的简单的 C 型函数的任何东西,本地和外部复杂 Objective-C-style 方法参数名称为每个参数。一旦函数完成其执行,参数可以提供默认值来简化函数调用, 并且可以作为输入输出参数来传递,修改一个传递变量。

Swift 中的每个函数都有各自的类型,包括函数的参数类型和返回类型。此类型类似于 Swift 中的任何 其他类型,您可以使用此类型,使它很容易将函数作为参数传递给其他函数,并从函数返回函数。函数也可以 写在其他函数中,来封装一个嵌套函数范围内的有用的功能。

定义和调用函数:

当你定义一个函数时,您可以选择性地定义一个或多个命名类型值,函数作为输入(称为参数),和/或一个类型的值,当它完成后函数将作为输出返回(称为其返回类型)。

每一个函数都有一个函数名,用于描述该函数所执行的任务。使用一个函数,你用它的名字“调用”函数 并将其传递给匹配函数参数类型的输入值(称为参数)。所提供的函数的参数必须与函数的参数列表顺序相 同。

简单举一个例子:定义一个名称为sayhello的函数,一个类型为字符串的参数personName,返回值也是字符串类型:

//单个参数
func sayhello ( personNmae: String)->String{
let greatName = "hello " + personNmae + "!"
return greatName
}

写一句输出语句:

println(sayhello("tom"))

此时在控制台上可以看到输出这么一句话:"hello  tom!"

简单分析一下这个代码块:func关键字是声明一个函数,sayhello是定义的函数名,personName是类型为字符串的参数,用->表示函数的返回值,后面跟函数的返回类型。

如果想要函数具有两个参数,参考C语言,可以很容易的想到下面这种方式,输入两个int型的参数,计算两者的和:

func sum (one:Int,two:Int)->Int{
return one + two
}
println(sum(2,4))
//此时输出的结果是6
注意:当函数中有多个参数时,需要用逗号分隔。

无参数函数:不要求函数对输入参数进行定义。这是一个没有输入参数的函数,当被调用时,它总是返回相同的字符串消息。 
//无参函数
func NoPrame()->String{
return "这是一个无参函数"
} println(NoPrame())

虽然该函数不采取任何参数,但是该函数名依然需要放在括弧中。当函数被调用时,函数名后要有一 对空括号。

无返回值函数:不要求函数对返回类型进行定义。这里定义了一个NoReturn函数,它会打印自 己的字符串值,而不是返回它:

//无返回值函数
func NoReturn(onewords:String){
println("这是\(onewords)") } NoReturn("一句话")
//函数内部会输出:一句话

具有多个返回值的函数:下面的例子定义了一个名为 count 函数,它计算元音,辅音,和某一字符串中的其他字符,基于美国 英语中使用元音和辅音的标准设定。

//具有多个返回值的函数,元组类型作为函数的返回类型
func count(string:String)->(vowels:Int,consonants:Int){
var vowels = 0,consonants = 0
for character in string{
switch String(character).lowercaseString{
case "a","e","i","o","u":
++vowels
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
++consonants
default:
break
}
}
return(vowels,consonants)
}

在这里进行count函数的调用:

let total = count("some arbitrary string!")
println("\(total.vowels) vowels and \(total.consonants) consonants")

控制台会输出:"6 vowels and 13 consonants"

Swift-函数学习的更多相关文章

  1. Swift基础学习

    Swift基础学习  http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...

  2. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

  3. Drools 函数学习

    Drools 函数学习 函数是定义在规则文件当中一代码块,作用是将在规则文件当中若干个规则都会用到的业务操作封装起来,实现业务代码的复用,减少规则编写的工作量.函数的编写位置可以是规则文件当中 pac ...

  4. 一份关于Swift语言学习资源的整理文件

    一份关于Swift语言学习资源的整理文件     周银辉 在这里下载 https://github.com/ipader/SwiftGuide

  5. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

  6. C语言(函数)学习之strstr strcasestr

    C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...

  7. Swift函数编程之Map、Filter、Reduce

    在Swift语言中使用Map.Filter.Reduce对Array.Dictionary等集合类型(collection type)进行操作可能对一部分人来说还不是那么的习惯.对于没有接触过函数式编 ...

  8. 如何在C语言中调用Swift函数

    在Apple官方的<Using Swift with Cocoa and Objectgive-C>一书中详细地介绍了如何在Objective-C中使用Swift的类以及如何在Swift中 ...

  9. Swift 函数

    1: 函数形式: Swift函数以关键字func 标示.返回类型->后写明.如果没有返回类型可以省去.多个参数用,分割.其中参数名字在前:类型描述 func GetName(strName:St ...

  10. swift函数的用法,及其嵌套实例

    import Foundation //swift函数的使用 func sayHello(name userName:String ,age:Int)->String{ return " ...

随机推荐

  1. BezierDemo开源项目的学习

    多看多学涨姿势,no zuo nuo die做暖男 1.概述 国际惯例,首先感谢一下开源作者. 这个项目主要是实现实现qq红点拖拽的效果 地址在https://github.com/chenupt/B ...

  2. 我所理解的Android 启动模式

    首先,这是从 一个开源网站转载的,觉得写得不错,对我们之前理解的activity的启动模式是一个新的理解方式,并给出实际的应用场景. 任务栈是什么 任务栈Task,是一种用来放置Activity实例的 ...

  3. Java学习网站大全

    Java学习网站 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM的JAVA专题--永远的蓝色巨人 http://www.hu ...

  4. iOS9 系统分享调用(UIActivityViewController)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/49615109 ...

  5. 部署与管理ZooKeepe

    1.部署 本章节主要讲述如何部署ZooKeeper,包括以下三部分的内容: 1. 系统环境 2. 集群模式的配置 3. 单机模式的配置 系统环境和集群模式配置这两节内容大体讲述了如何部署一个能够用于生 ...

  6. SDWebimage的原理和使用机制

    对于ASIHttp请求和AFNetworking请求都有关于图片缓存机制的使用,但是相对于专注运用在图片使用的SDWebimage来说,又有不一样的使用效果,最主要的体现在缓存数据的转换. SDWeb ...

  7. python 内置标准库socketserver模块的思考

    socketserver模块简化了编写网络服务器的任务, 在很大程度上封装了一些操作, 你可以看成是事件驱动型的设计, 这很不错.它定义了两个最基本的类--服务器类 BaseServer, 请求处理类 ...

  8. webpack.config.js配置文件

    1.基本配置 webpack在执行时,除在命令行传入参数,还可以通过指定的配置文件来执行.默认会搜索当前目录下webpack.config.js.这个文件是一个node.js模块,返回一个json格式 ...

  9. 《MySQL必知必会》读书笔记_2

    通配符:(尾空格可能会干扰通配符匹配) % 匹配任意字符 _ 匹配任意单个字符 正则表达式:REGEXP 用法就是替换掉LIKE的位置,后面配合正则表达式. 默认不区分大小写,如果区分的话添加关键字B ...

  10. (原创)ubuntu 10.04+ruby1.9.2+rails3 安装记录

    第一步当然是现在ruby 1.9.2 的sourcecode了,因为现在的ubuntu 源中还没有1.9.2的版本 我下载的是ruby-1.9.2-p290.tar.gz 然后解压到/usr/loca ...