在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
//函数
import UIKit /*获得系统时间 var date = NSDate() var timeFormatter = NSDateFormatter() timeFormatter.dateFormat = "MM:dd" //(格式可俺按自己需求修整) var strNowTime = timeFormatter.stringFromDate(date) as String print(strNowTime) */ /*===函数是用来完成特定任务的独立的代码块==== 1.没有定义返回类型的函数会返回特殊的值,叫 Void。它其实是一个空的元组(tuple),没有任何元素,可以写成()。 2.将带有默认值的参数放在函数参数列表的最后 3.一个函数最多只能有一个可变参数 4.如果函数有一个或多个带默认值的参数,而且还有一个可变参数,那么把可变参数放在参数表的最后 5.函数参数默认是常量,想要修改参数值必须声明为变量 6.对变量参数所进行的修改在函数调用结束后便消失了,并且对于函数体外是不可见的。变量参数仅仅存在于函数调用的生命周期中 输入输出参数(In-Out Parameters): 1.在参数定义前加 inout 关键字。一个输入输出参数有传入函数的值,这个值被函数修改,然后被传出函数,替换原来的值 2.当传入的参数作为输入输出参数时,在调用该参数时需要在参数名前加&符,表示这个值可以被函数修改 3.输入输出参数不能有默认值,而且可变参数不能用 inout 标记。如果你用 inout 标记一个参数,这个参数不能被 var 或者 let 标记 4.输入输出参数是函数对函数体外产生影响的另一种方式。输入输出参数和返回值是不一样的,但仍然修改了原来的值 全局函数(global functions):定义在全局域中 嵌套函数(nested functions):把函数定义在别的函数体中,默认情况下,嵌套函数是对外界不可见的,但是可以被它们的外围函数(enclosing function)调用。一个外围函数也可以返回它的某一个嵌套函数,使得这个函数可以在其他域中被使用。 */ //函数应用1: 找出整型数组中的最大值、最小值、平均值 var num1 = [-10,-9,-8,-7,-6,-5,-4,-3,-2,-1] var num2 = [1,2,3,4,5,6,7,8,9,10] var num3 = [333,444,555,666,777,888] //num1 = [] //num2 = [] func minmax(a ray1:[Int],var b ray2:[Int],inout c ray3:[Int]) ->(min:Int,max:Int,pingjun:Double)?{ //ray1 = [2,4,6] 由于函数参数默认是常量,所以无法修改ray1参数 ray2 = [33] //参数ray2声明为变量,可以在函数体内临时修改传入的值,但不改变实际参数的值 ray3 = [69,3,4] //参数ray3是一个inout参数,这个实际参数传入的值将通过函数改变,然后传出函数,并替换原来的值,调用时需在参数前加&号 if ray1.isEmpty == true || ray2.isEmpty == true{return nil} var minNumber = 0 var maxNumber = 0 var pingjunzhi = 0.00 var total = 0 var ray = ray1 + ray2 + ray3 if ray.count == 0{ return nil } for x in ray[0..<ray.count] { total += x if x<minNumber{ minNumber=x } if x>maxNumber{ maxNumber=x } } pingjunzhi = Double(total/ray.count) return (minNumber,maxNumber,pingjunzhi) } if var a = minmax(a:num1,b:num2,c:&num3){ print("在整型数组\(num1)、\(num2) 和修改后的 \(num3)中\n最小值是:\(a.min),最大值是:\(a.max),平均值是:\(a.pingjun)") }else{ print("所有数组为空,无法找出") }
//求所有数组里面的所有数据的平均值(函数参数个数可变) func pingjunzhi(arrays:[Int]...)->Int? { if arrays.isEmpty == true { print("没有任何数据!") return nil } var total = 0 var m = 0 for array in arrays[0..<arrays.count]{ if array.isEmpty == true { print("有部分数组为空!",terminator:" ") continue } m += array.count for numbers in array[0..<array.count]{ total += numbers } } //var result = total/m //print("所有数组数据的平均值为:\(total/m)") return total/m } var num4 = [9999,1,1,1,1,5] num4 = [] if var qq = pingjunzhi(num1,num2,num4){ print("所有数组数据的平均值为:\(qq)") }
//函数应用2: 函数类型应用、嵌套函数 //+-*/%运算函数addition subtraction multiplication division rermainder func arithmetic(yunsuanfu:String)->(a:Int...)->Int{ func average(a:Int...)->Int{ var result = 0 for x in a{ result += x } return result/a.count } func addition(a:Int...)->Int{ var result = 0 for x in a{ result += x } return result } /* func substraction(){ for x in numbers[1..<numbers.count]{ result -= x } } func multiplication(){ for x in numbers[1..<numbers.count]{ result *= x } } func division(){ for x in numbers[1..<numbers.count]{ result /= x } } func rermaider(){ for x in numbers[1..<numbers.count]{ result %= x } } */ switch yunsuanfu{ case "aver":return average case "+":return addition default: break } return average }
var tt = arithmetic("+") print("结果:\(tt(a:1,2,3,4,10))")
func sumOfNumbers(str: String = "1", _ numbers: Int...) -> Int { //第一个参数默认为外部参数名,第二和之后为内外部名,“_”可省略其外部名调用他 var total: Int = 0 if let num = Int(str) { total += num }
for number in numbers { total += number } return total } sumOfNumbers("5",1,2,3)
|
请发表评论