1 import Foundation
2 //变量声明使用
3
4 //使用 let 来声明常量,使用 var 来声明变量 常量只能为它赋值一次
5 let name="cuiyw";
6 var age:Int=20;
7 //声明时类型是可选的,声明的同时 赋值的话,编译器会自动推断类型
8 var money:Double=200.0;
9 //有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号之前写一个反斜杠
10 let infto=name+String(age)+"\(money)";
11 println(infto);
12
13 //函数
14 //func 函数名( 参数变量:类型 ,参数变量:类型...){}
15 //说明:
16 //1: func 是函数关键字
17 //2:{} 函数体
18 //3: 参数变量是默认常量类型,不能在函数函数体里面直接修改
19 //即 func A (value:String) 与 func A (let value:String)写法是相同的,即value 是常量。参数不能修改
20
21
22 //a.无参数无返回值
23 func functest()
24 {
25 println("functest");
26 }
27
28 //b.有参数无返回值 可以设置默认值
29 func functest(name:String,age:Int=23)
30 {
31 println(name+"\(age)")
32 }
33 functest("cyw");
34
35 //c该方法与b方法一起调用时 都调用b方法
36 //func functest(var name:String)->String
37 //{
38 // name="a1变量参数cyw";
39 // println(name);
40 // return name;
41 //}
42 //functest("cyw");
43
44
45 //func 函数名( var 参数变量 : 类型,... ) {}
46 //说明
47 //1: func 函数关键字
48 //2: var 参数变量 :类型 表示参数变量是可变变量,不是常量,可以任意修改
49
50 //d该方法与b方法比较 时各自输出
51 //方法也可以添加一个外部参数名
52 func functest( var personName name:String)
53 {
54 name="a变量参数cyw";
55 println(name);
56 // return name;
57 }
58 functest("cyw");
59
60
61
62 //e.有参数有多个返回值
63 func functest()->(String,Int)
64 {
65 return("cuiyw",23);
66
67 }
68 // f 输入输出函数 inout声明就不能用 var let 声明 同时参数也不能是let声明的
69 func hello( inout sayhello say:String )
70 {
71 say="hello";
72 }
73 var hello="say hello";
74 hello(sayhello: &hello);
75 println(hello)
76
77
78 //g 内部函数
79 func func1()
80 {
81 func func2()
82 {
83 println("fuc2");
84 }
85 func2();
86
87 }
88 func1();
89
90 //h 返回函数类型的函数
91 func add(num:Int)->Int
92 {
93 return num+1;
94 }
95
96 func sub(num:Int)->Int
97 {
98 return num-1;
99 }
100
101 func func3(num:Bool)->(Int)->Int
102 {
103 return num ? add:sub;
104 }
105 var num=9;
106 var fun:(Int)->Int=func3(num>10);
107 num=fun(num);
108 println(num);