swift 2.0 语法 函数

//: Playground - noun: a place where people can play

import UIKit

/*:

函数

* 格式

func 函数名称(形参名称1: 形参类型, ...) -> 返回值类型

{

// 逻辑代码

}

* 没有参数没有返回值

* 没有参数有返回值

* 有参数没有返回值

* 有参数有返回值

*/

// 没有参数没有返回值

// 如果函数的返回值是Void, 那么可以简写为()

// 如果函数的返回值是(), 那么可以直接不写

func say() ->Void

{

print("say hello")

}

say()

func say1() ->()

{

print("say hello")

}

say1()

// 开发中请写下面这种

func say2()

{

print("say hello")

}

say2()

// 没有参数有返回值

func getNumber() -> Int

{

return 998

}

print(getNumber())

func getMinAndMax() ->(Int, Int)

{

return (1, 998)

}

let (min, max) = getMinAndMax()

print(min)

print(max)

// 有参数没有返回值

// 注意: Swift2.0之前, 是不会将第二个参数开始后面所有的参数名称作为标签名称

//      从Swift2.0开始, Swift才将第二个参数开始后面所有的参数名称作为标签名称

// 在Swift2.0之前, 如果想实现这个功能, 那么必须手动添加外部参数

func sum(num1: Int, num2: Int)

{

print(num1 + num2)

}

sum(10, num2: 20)

/*:

外部参数和内部参数

* 内部参数: 默认情况下, 所有的形参都是内部参数

* 外部参数: Swift2.0之前, 可以通过在形参前面加上名称的方式来制定外部参数, Swift2.0之后, 默认情况下从第二个形参开始, 形参既是内部参数又是外部参数

如何指定外部参数:

*  在形参前面以空格隔开, 加上一个名称即可

*  例如: value2 num2: Int

外部   内部  数据

如何忽略外部参数:

* 在形参前面以空格隔开, 加上_

* _代表忽略

* 例如:  _   num2: Int

忽略 内部  数据

*/

func sum1(num1: Int,_ num2: Int)

{

print(num1 + num2)

}

sum1(10, 20)

/*:

常量形参和变量形参

* 默认情况下所有的形参都是常量形参, 也就是说不能在函数中修改形参的值

* 如果想在函数中修改形参的值, 那么必须把形参变为变量形参

*    只需要在变量名称前面加上 var即可

*    注意: 在函数中修改形参的值, 是不会影响到外部实参的值

*/

func swap(var num1: Int, var num2: Int)

{

let temp = num1

num1 = num2

num2 = temp

}

let a = 10

let b = 20

print("a = \(a), b = \(b)")

swap(a, num2: b)

print("a = \(a), b = \(b)")

/*:

输入输出参数

* 如果想在函数中修改形参的值, 并且同时修改实参的值, 那么就必须将形参变为输入输出形参

*   只需要在形参名称前面加上inout即可

*/

func swap2(inout num1: Int, inout num2: Int)

{

let temp = num1

num1 = num2

num2 = temp

}

var n = 10

var m = 20

print("n = \(n), m = \(m)")

swap2(&n, num2: &m)

print("n = \(n), m = \(m)")

/*:

可变参数

* 当一个函数不确定接收多少个参数时, 就可以使用可变参数

* 举例: 计算两个数的和 --> 需求变更 --> 计算三个数的和 --> 需求又变更 --> 计算10个数的和

注意点:

* 可变参数必须指定数据类型

* 在其它语言中有可能可变参数只能放到形参列表的最后面, 而Swift中可以放到任意位置

*/

// 既然任意个整数的和

func sum3(numbers: Int...)

{

//    print(numbers)

var sum = 0

for number in numbers

{

sum += number

}

print(sum)

}

sum3(10, 20)

func sum4(numbers: Int..., value: Int)

{

//    print(numbers)

var sum = value

for number in numbers

{

sum += number

}

print(sum)

}

sum4(10, 20, value: 999)

/*:

默认值

* 可以给形参指定默认值, 如果一个形参指定了默认值, 那么调用的时候就可以不传递该参数的值, 如果没有传递那么就使用默认值

注意点

* 在其他语言中可能默认值只能写在形参列表的最后面, 但是Swift中可以写在任意位置

*/

func joinString(str1: String = "lnj", str2: String = "??", str3: String = "520")

{

print(str1 + str2 + str3)

}

//joinString("xmg", str2: "??", str3: "520")

//joinString("xmg", str2: "心", str3: "520")

//joinString("xmg", str3: "520")

//joinString("lnj")

joinString()

// 有参数有返回值

func sum5(num1: Int, num2: Int) -> Int

{

return num1 + num2

}

print(sum5(20, num2: 20))

时间: 2024-10-05 05:02:03

swift 2.0 语法 函数的相关文章

swift 2.0 语法 字符串

//: Playground - noun: a place where people can play import UIKit /*: 字符串 * OC中的字符串是一个对象, Swift中的字符串是一个结构体 * OC中的字符串以\0结尾, Swift中的字符串不是以\0结尾 * Swift中的字符串比OC中的字符的性能要好 * Swift中的字符串支持遍历 */ let str = "abc\0def" print(str) // 遍历字符串 for c in str.chara

swift 2.0 语法 分支

import UIKit // 注意: Swift中可以不写;号, 但是有一定的前提条件, 一行只有一句代码 //      如果一行有多句代码, 那么;还是必须写 // 注意: Swift变态的地方, 有时候运算符的左右如果没有写空格就会报错 let num = 10 /*: if * Swift中的if和OC中的if用法大致一致, 知识在细节上有一些细微的不同 不同点 * 1.OC中非0即真, 而Swift中没有这个概念, Swift中if的条件表达式必须是一个bool值 * Swift中提

swift 2.0 语法 循环

//: Playground - noun: a place where people can play import UIKit /*: for循环 * 基本用法和OC一致 * 条件表达式必须是bool类型的值 * 条件表达式的()可以省略 * 在OC中如果{}中只有一条语句, 那么{}可以省略, 而Swift不可以 */ for var i = 0; i < 10; i++ { print(i) } /*: 区间 半闭区间: 0..<10  包含头不包含尾 闭区间:   0...10  包

swift 2.0 语法 可选类型

import UIKit /*: 可选类型(可以有值, 也可以没有值) * 在OC中我们可以给一个对象类型变量赋值为nil或者一个对象, 而在Swift中如果想给一个变量赋值为nil那么必须明确指定为可选类型才可以, 也就是说普通变量是不能赋值为nil的 格式:  数据类型? *  以后但凡看到init后面跟上一个?, 就代表初始化方法返回的值是可选的 注意: * 可选类型是不能直接使用的, 如果向使用一个可选类型的值, 必须对可选类型进行解包 ! * 解包的含义: 告诉系统可选类型的变量, 一

swift 2.0 语法 数组

import UIKit /*: 数组 * 格式 var arr:[Int] = [数值1, 数值2, 数值3] * 不可变数组  let  == NSArray * 可变数组    var */ let arr = [10, 11, 12] // 开发中用这种 let arr2: [Int] = [10, 11, 12] let arr3: Array<Int> = [10, 11, 12] // 注意: 如果向先定义在初始化, 那么就必须在定义的时候指定数据类型 var arr4:[Int

swift 2.0 语法 字典

//: Playground - noun: a place where people can play import UIKit /*: 字典 * 和OC的区别 * 1. {} 替换为 [] * 2. 去掉所有@ * 可变字典   var * 不可变字典 let */ var dict = ["name": "lnj", "age": 30] let dict2: [String : NSObject] = ["name":

swift 2.0基本语法

下面为一些swift 2.0 的基本语法,写在playground中,每次swift版本跟新的时候,打开瞅瞅,就可以对比出哪里发生了修改. 内容包括:01变量&常量 02分支 03循环 04字符串 05数组 06字典 07函数 01变量&常量 //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground" /*: let 常量 var 变量 *

Swift 2.0学习笔记(Day 19)——函数参数传递

原创文章,欢迎转载.转载请注明:关东升的博客   函数的语法格式如下: func 函数名(参数列表) -> 返回值类型 { 语句组 return 返回值 } 关键字是func. 多个参数列表之间可以用逗号(,)分隔,也可以没有参数. 使用箭头“->”指示返回值类型.返回值有单个值和多个值.如果函数没有返回值,则“-> 返回值类型”部分可以省略. 如果函数有返回值,就需要在函数体最后使用return语句:如果没有返回值,则函数体中可以省略return语句. 函数定义示例代码如下: func

《从零开始学Swift》学习笔记(Day 7)——Swift 2.0中的print函数几种重载形式

原创文章,欢迎转载.转载请注明:关东升的博客 Swift 2.0中的print函数有4种重载形式: print(_:).输出变量或常量到控制台,并且换行. print(_:_:).输出变量或常量到指定类型的流中,并且换行. print(_:appendNewline:).输出变量或常量到控制台,appendNewline参数是布尔值,true表示换行,false表示不换行. print(_:_:appendNewline:).输出变量或常量指定类型的流中,appendNewline参数是布尔值,