• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > Swift心得笔记之函数

Swift心得笔记之函数

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了swift segue 回调函数,swift函数,swift 函数式编程,swift 回调函数,taylor swift等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

参数

外部变量名

一般情况下你可以不指定外部变量名,直接调用函数:

func helloWithName(name: String, age: Int, location: String) {
    println("Hello \(name). I live in \(location) too. When is your \(age + 1)th birthday?")
}
helloWithName("Mr. Roboto", 5, "San Francisco")
</div>

但是在类 (或者结构、枚举) 中的时候,会自动分配外部变量名 (第一个除外) ,这时候如果还想直接调用就会报错了:

class MyFunClass { 
    func helloWithName(name: String, age: Int, location: String) {
        println("Hello \(name). I live in \(location) too. When is your \(age + 1)th birthday?")
    }
}
let myFunClass = MyFunClass()
myFunClass.helloWithName("Mr. Roboto", 5,  "San Francisco")
</div>

如果你怀念在 OC 中定义函数名的方式,可以继续这样定义,比如 helloWithName 这种,隐藏第一个函数的外部名:

class MyFunClass {
    func helloWithName(name: String, age: Int, location: String) {
        println("Hello \(name). I live in \(location) too. When is your \(age + 1)th birthday?")
    }
}
let myFunClass = MyFunClass()
myFunClass.helloWithName("Mr. Roboto", age: 5, location: "San Francisco")
</div>

如果你实在不想要外部变量名,那么可以用 _ 来代替:

struct Celsius {
    var temperatureInCelsius: Double
    init(fromFahrenheit fahrenheit: Double) {
        temperatureInCelsius = (fahrenheit - 32.0) / 1.8
    }
    init(fromKelvin kelvin: Double) {
        temperatureInCelsius = kelvin - 273.15
    }
    init(_ celsius: Double) {
        temperatureInCelsius = celsius
    }
}
let boilingPointOfWater = Celsius(fromFahrenheit: 212.0)
// boilingPointOfWater.temperatureInCelsius 是 100.0
let freezingPointOfWater = Celsius(fromKelvin: 273.15)
// freezingPointOfWater.temperatureInCelsius 是 0.0
let bodyTemperature = Celsius(37.0)
// bodyTemperature.temperatureInCelsius 是 37.0
</div>

对外部参数名的娴熟应用可以极好的抽象初始化过程。可以看看 json-swift library 中的应用。

默认参数值

可以在函数定义里写上函数的默认值,这样在调用的时候可以不传这个值:

func add(value1 v1:Int, value2 p1:Int = 2) -> Int{
    return v1 + p1
}
add(value1: 2, value2: 4)   // 2 + 4
add(value1: 1)  // 1 + 2
</div>

如果你没有提供外部参数名,设置默认参数值会自动提供默认参数名。

可变参数

可变参数 (Variadic Parameters) 可以接受一个以上的参数值。比如计算平均数:

func arithmeticMean(numbers: Double...) -> Double {
    var total: Double = 0
    for number in numbers { // numbers is [Double]
        total += number
    }
    return total / Double(numbers.count)
}
arithmeticMean(1, 2, 3, 4, 5)
arithmeticMean(3, 8, 19)
</div>

如果不止一个参数,需要把可变参数放在最后,否则会报错。应该这样:

func sumAddValue(addValue:Int=0, numbers: Int...) -> Int {
    var sum = 0
    for number in numbers { // numbers === [Int]
        sum += number + addValue
    }
    return sum
}
sumAddValue(addValue: 2, 2,4,5) // (2+2) + (4+2) + (5+2) = 17
</div>

常量和变量参数

默认参数是常量,无法在函数体中改变参数值。我们可以 var 一个新的值就行操作,也可以直接在函数定义中加上 var 避免在函数体中定义新的变量。

比如这一个右对齐函数:

func alignRight(var string: String, count: Int, pad: Character) -> String {
    let amountToPad = count - countElements(string)
    if amountToPad < 1 {
        return string
    }
    let padString = String(pad)
    for _ in 1...amountToPad {
        string = padString + string
    }
    return string
}
let originalString = "hello"
let paddedString = alignRight(originalString, 10, "-")  // "-----hello"
</div>

输入输出参数 (inout)

在函数体中对变量参数进行的修改并不会改变参数值本身,比如看这个例子:

func add(var v1:Int) -> Int {
    return ++v1
}
var a = 1
add(a)      // 2
a           // 1
</div>

如果想通过函数修改原始值需要 inout ,但是这样是错误的:

func add(inout v1:Int) -> Int {
    return ++v1
}
var a = 1
add(a)      // 2
a           // 1
</div>

在传入的时

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Swift 函数
  • 深入理解swift变量和函数
  • Swift心得笔记之函数
  • Swift的74个常用内置函数介绍
  • Swift教程之函数详解
  • Swift中的可变参数函数介绍

相关文章

  • 2017-05-28简单分析Swift语言的一些基本特征
  • 2017-05-28Servlet3.0实现文件上传的方法
  • 2017-05-22Swift 条件语句
  • 2017-05-28Swift 3.0基础学习之闭包
  • 2017-05-28详解Swift语言中的类与结构体
  • 2017-05-28Swift的开发环境搭建以及基本语法详解
  • 2017-05-28MyBatis中的模糊查询语句
  • 2017-05-28swift 3.0 实现短信验证码倒计时功能
  • 2017-05-28详解Swift中的函数及函数闭包使用
  • 2017-05-28Swift教程之属性详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 用Swift构建一个简单的iOS邮件应用的方法
    • 如何设计一个秒杀系统
    • Swift中的访问控制和protected
    • 简单分析Swift语言的一些基本特征
    • window下安装和配置maven环境
    • Swift 属性
    • 通过Session案例分析一次性验证码登录
    • 解决 Xcode 6-Beta2 智能提示bug
    • Hibernate三种状态和Session常用的方法
    • Swift快速集成下拉刷新和上拉加载更多示例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有