Swift 函数入门

1. swift 中函数是第上类型,所以函数也可以作为参数和返回结果

2. 定义形式     关键字    名字 (参数列表)-> 返回值类型。下面是一个返回元组的例子。

        func addNumber(a:Int,b:Int) -> (addResult : Int, timesResult : Int) {

            return(a+b, a*b)

        }

        let result =  addNumber(1, 2)

        println(result.addResult)

传入两个参数 a,b 并把他们相加,相乘的结果以一个元组的形式指返回。可以没有参数,但是必须有代表参数的(),当没有返回值时,->到 { 前的都要省略。这里的没有返回值是指我们没有定义返回值,但是函数实际上会返回一个void值。它其实是一个空的元组,没有任何的元素,可以写成()

3. 函数的参数名称 :

就如我们上面所看到的函数形式,参数名称 a ,b 只是一个局部的变量,我们只能在自己定义的函 数内使用,不能在外部使用。

假设一个函数有多个参数,我们在使用时可能不知道这些参数的明确意思。这时我们可以使用外部参数名称来解决这个问题。

现在有一个函数要求传入三个函数,父母的身高以及来代码男女的1和2 来求子女的身高。如下:

        func getPersonHeight(height1:Float,hieght2:Float,isBoy:Int)  -> Float{

            if isBoy == 1 {

              return  45.99 + 0.78 * (height1+hieght2) / 2 + 5.29

            } else {

                return 37.85+0.75 * (height1+hieght2) / 2 + 5.29
            }

        }

当我们在别处使用的时候不会提示这三个数所表示的意思,可能会造成传值的错误。现在我们只需要使用参数的外部名称,在调用时也能明确的标明它们的所代表的意思。  参数的外部名称加在局部名称前面,用空格割开。

        func getPersonHeight(height1:Float,hieght2:Float,isBoy:Int)  -> Float{

            if isBoy == 1 {

              return  45.99 + 0.78 * (height1+hieght2) / 2 + 5.29

            } else {

                return 37.85+0.75 * (height1+hieght2) / 2 + 5.29
            }

        }

当调用没有外部名称时的代码

let height = getPersonHeight(
170, 180,1);

当调用有外部名称时的代码

let height = getPersonHeight(motehrHeight:
170, fatherHeight: 180, oneIsBoy:1);

有外部名称是更加清晰。而且我们可以简写外部参数名。假如我们已经定义了如下函数

func getPersonHeight(motherHeight:Float, fatherHieght:Float,  oneIsBoy:Int)  ->
Float

我们的局部函数名已经相当明确了,这时我们只需要在其前面加上  # ,就可以当作外部参数名来使用

        func getPersonHeight( # motherHeight:Float, # fatherHieght:Float,  # oneIsBoy:Int)  -> Float{

            if oneIsBoy == 1 {

              return  45.99 + 0.78 * (motherHeight+fatherHieght) / 2 + 5.29

            } else {

                return 37.85+0.75 * (motherHeight+fatherHieght) / 2 + 5.29
            }

        }

        let height = getPersonHeight(motherHeight: 170, fatherHieght: 190, oneIsBoy: 1)
        println(height)

4. 默认参数: 对于一些非必须赋值的参数我们在写参数时可以给其一个默认的值。下面的代码给性别默认为1

        func getPersonHeight(motherHeight:Float,fatherHieght:Float, oneIsBoy:Int = 1)  -> Float{

            if oneIsBoy == 1 {

              return  45.99 + 0.78 * (motherHeight+fatherHieght) / 2 + 5.29

            } else {

                return 37.85+0.75 * (motherHeight+fatherHieght) / 2 + 5.29
            }

        }

当我们调用的时候会发现,系统会给有默认值的参数加一个外部名称 :

let height =
getPersonHeight(170,
180, oneIsBoy: 2)

不给参数赋值时:  let
height = getPersonHeight(170,
180)

注意: 默认参数必须放在所有参数的最右边,否则会造成调用混乱。

5.可变参数 :  在对数类型后面加 ... 直接看代码  ,求 N 个整数的和

        func sumOfSomeNumbers(numbers:Int...) -> Int {

            var sum: Int = 0

            for item in numbers {

                sum += item
            }

            return sum

        }

     println(sumOfSomeNumbers(1,2,3,4,5))

注意:可变参数必须放在最右面,当同时默认参数也存在时,可变参数放在最后。

6.输入输出参数:

swif 中参数的传递是值传递,函数内部对参数的修改只发生在函数内部,函数的外边参数是不会发生改变的。如果想要改变传入的参数,我们就需要输入输出参数了,这样的参数在函数内部的改这会保持到函数的外部。 输入输出只需要在 参数名称前加上inout。

        func inoutTest(var number: Int) {

            number -= 1;
        }

        var number = 3;

        inoutTest(number)

        println(number)

输出的值 为 3

下面使用 输入输出函数,输入输出参数调用时要在参数前面加上 &

        func inoutTest(inout number: Int) {

            number -= 1;
        }

        var number = 3;

        inoutTest(&number)

        println(number)

输出的值 为 2

注意: 输入输出参数不能有默认值,而且可变参数不能用 inout 标记。如果你用 inout 标记一个参数,这个参数不能被 var 或者 let 标记。

7.函数的类型

在swift 中函数属于第一类型,所以有自己的类型,函数的类型由参数的类型跟返回值的类型决定。

func addTwoInts(a: Int, b: Int) -> Int {
    return a + b
}
  1. 这个函数的类型是  (Int,Int) -> (Int)  .我们就可以定义一下这个类型的变量

var   addIntsFunc : (Int,Int) -> (Int) = addTwoInts

2.   函数当作参数传递,这时函数的类型显得特别有用。

        func addTwoNumber(addFunction:(Int,Int)->(Int), number1:Int, number2:Int) ->Int {

              return addFunction(number1,number2)
        }

        func addTwoInt(number1:Int, number2:Int) -> Int {

            return number2 + number1;
        }
        <pre name="code" class="plain">        func addTwoInt(number1: Int,number2: Int) -> Int {
            return number1 + number2;
        }
        func timesTwoInt(number1: Int,number2: Int) -> Int {
            return number1 * number2
        }

        func chooseStepFunction(isAdd: Bool) -> (Int,Int) -> Int {
            return isAdd ? addTwoInt: timesTwoInt;
        }

        let function:(Int,Int)->(Int) = chooseStepFunction(false)

       println(function(1,2))

println(addTwoNumber(addTwoInt, 1,2));


我们声明了一个 addTwoNumber的函数,他的参数是一个(Int,Int) ->(Int) 类型的函数 和两个Int 类型的数。,然后定义了一个(Int,Int) ->(Int) 类型的函数 addTwoInt函数然后当作参数使用。

3. 函数当作返回值.我们现在定义一个函数,以一个bool 值作为参数,然后返回一个(Int,Int) ->(Int)的函数。代码

        func addTwoInt(number1: Int,number2: Int) -> Int {
            return number1 + number2;
        }
        func timesTwoInt(number1: Int,number2: Int) -> Int {
            return number1 * number2
        }

        func chooseCaculateFunction(isAdd: Bool) -> (Int,Int) -> Int {
            return isAdd ? addTwoInt: timesTwoInt;
        }

        let function:(Int,Int)->(Int) = chooseCaculateFunction(false)

       println(function(1,2))

chooseCaculateFunction  返回了一个 函数 ,根据bool 值决定返回addTwoInt 或 timesTwoInt 函数,然后赋予常量function。调用该常量返回一个Int值并输出。

5.

时间: 2024-10-03 22:42:00

Swift 函数入门的相关文章

苹果Swift编程语言入门教程【中文版】

目录 1 简介 2 Swift入门 3 简单值 4 控制流 5 函数与闭包 6 对象与类 7 枚举与结构 1 简介 Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.Swift采用了安全的编程模式和添加现代的功能来是的编程更加简 单.灵活和有趣.界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向. Swift已经存在了多年.Apple基于已有的编译器.调试器.框架作为其基础架构.通过ARC(Aut

Apple Swift编程语言入门中文教程

Apple Swift编程语言入门教程 目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS&OSX开发有所帮助. Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.S

Apple Swift编程语言入门教程

目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS&OSX开发有所帮助. Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.Swift采用了安全的编程模式和添加现代的

swift菜鸟入门视频教程-06-函数

本人自己录制的swift菜鸟入门,欢迎大家拍砖,有什么问题可以在这里留言. 主要内容: 函数定义与调用(Defining and Calling Functions) 函数参数与返回值(Function Parameters and Return Values) 函数参数名称(Function Parameter Names) 函数类型(Function Types) 函数嵌套(Nested Functions) 视频地址: 百度网盘:http://pan.baidu.com/s/1dD8E5M

Apple Swift中文入门教程【转发】

1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS&OSX开发有所帮助. Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单.灵活和有趣.界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向. Sw

Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)

本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina等网页的小demo,如果对swift的语法不感兴趣的同学可以直接跳到第二部分来感受下Swift的魅力-(本文的demo源码已上传至github:https://github.com/iOSGeek0829/XSurfing) 一.Swift常用语法 Swift是Apple去年推出的一门新的语言,基于C和Objective-C,而没有C的一些兼容约束,它采用了安全的编程模式和添加现代的功能

Swift编程语言入门教程

目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS&OSX开发有所帮助. Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.Swift采用了安全的编程模式和添加现代的

Swift快速入门(二)基本数据类型

相关文章 Swift快速入门(一)第一个Swift程序 1.变量和常量 声明常量和变量 Swfit是强类型的语言,Swift要求所有的变量和常量必须先声明后使用. 声明变量需要使用var,声明常量则需要使用let var 变量名[:类型] =初始值 let 常量名[:类型] =初始值 下面来进行举例: // 声明变量时显式指定类型 var age : Int // 声明变量时指定初始值,编译器会根据初始值确定该变量的类型为String var game= "九阴真经" // 显式指定的

Swift简单入门教程:30分钟玩转Swift

通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实现:    println("hello, world") 如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这行代码就是一个完整的程序.你不需要为了输入输出或者字符串处理导入一个单独的库.全局作用域中的代码会被自动当做程序的入口点,所以你也不需要main函数.你同样不需要在每个语句结尾写上分号. 这个教程会通过一系列编程