励志作为iOS的开发人员,尽管写代码的时候不会专门的挑选Swift语言,但是肯定都会熟悉Swift这个名字,楼主表示从刚开始学习objc的时候就对Swift这个名字很感兴趣,感觉很高大上,但是从很多博客上也相应的看到相关文章,不得不说,Swift必将成为以后iOS开发的主流,尽管每次更新,Swift语言都会有比较大的更新,但不能代表就不了解他,闲话不多说,想了解Swift的历史可以去百度,今天聊聊关于Swift的那点小基础,这里如果有一点点C++/Java/PHP的基础的话,类比了解起来会更容易,毕竟Swift是集合了许许多多的语言的优点。
var stringBo:String = "RunIntoLove";//后面的引号可以不加,Swift允许,但是楼主比较习惯了 let string1Bo:String = "Run"; //进行修改值 stringBo = "Yue"; string1Bo = "Yue";//会出现报错-Cannot assign to value:'stringBo' is a 'let' constant ,就是说不能改变他的值,因为他是一个let类型的变量
var stringBo = "RunIntoLove";//Swift会自动的根据后面的类型,判断stringBo的类型,所以可以不写类型 var string1Bo:String; //这样子是定义了一个字符串String类型的变量 var int1Bo:Int = 10;//这样子是定义了一个整型Int类型的变量 var string2Bo;//这里会报错,如果不直接赋值,那么后面的类型是不可以忽略的,会报错-Type annotation missing in pattern 类型描述缺少类型
//数字 var u:Int = 00010_000_000;//var u = 10000000 || var u = 10_000_000.0 这三种写法是一样的 var d:Double = 10.2; var o = Double(u) + d;//在Swift中,不同类型的属性不能进行运算,要想进行运算,必须强制转换成相同的类型,这个时候o的值就是10000010.2
var firstName:String = "RunInto" var lastName:String = "Love" //字符串的连接 var name:String = firstName + lastName
//定义元组 var postion = (name:"YueWen",age:22);//定义一个元组,这种定义法类似一个结构体 var person:(String,Int) = ("YueWen",22);//可以提前声明类型 var (z,m) = ("yuewen",18);//通过元组给其他元组赋值 var point2 = (name:z,age:m); //取值 var name_1 = postion.name//与name_1 = postion.0等价 var age_1 = postion.age//与age_1 = postion.1等价 var name_2 = person.0//通过小标进行取值,类似与数组了 var age_2 = person.1
NSInteger i = 1; if(i)//如果i为真,报错-Type'Int' does not conform to protocol 'BooleanType' { //coding.. }
var number:Int = 1; if(numbe1 == 1)//如果number = 1 { //coding... }
//定义一个数组 var numberArr = [90,85,47,52,36,"123"]//这里数组比较特别,里面的数据不仅限于一种类型,比如这里的数组存的就是Int类型的数据以及String类型的数据 //循环遍历 for s in numberArr { print("number = \(s)")//在iOS_9.0之后,print替换了println,println已经被废除,写的话会报错 } //普通for循环 for (var i = 0; i < numberArr.count; i++)//Swift中调用方法废除了[],选用了. 这点与大多数的编程语言相同了 { var s = numberArr[i] print("打印出的变量为\(s)")//print 代替 println,打印的形式只需要加一个\(需要打印的内容)即可 }
//do while循环 var k = 0 repeat//iOS9.0之后用repeat代替了do { var s = numberArr[k] print("do while 循环打印出的变量是\(s)") k++ }while(k < numberArr.count)
//while循环 var k1 = 0; while(k1 < numberArr.count) { print("while 循环打印出的变量是\(numberArr[k1])"); k1++ ; }
//switch let iso = "iOS" switch iso//switch后面的变量可以使字符串,不仅仅只限于数字了 { case "iso": print("iso 为 iOS") //break 可以省略,swift不穿透 //穿透需要加 fall through,加上这一句就是说执行完这句话之后会继续执行case:"Android" case "Android": print("iso 为 Android") case "JS": print("iso 为 JS"); default: print("最后了") }
func testFunction() { print("测试方法!") }
//带参的函数 func testFunction(s:String) { print("参数是\(s)") }
func testFunction0(inout s:String)//表示实参可以改变,改变之后参数也会发生变化,类似C++的引用 { s = "Run"; print("参数是\(s)") } var s:String = "RunIntoLove"; testFunction0(&s);//在执行完毕这一句话之后,s就变成了Run
//带多个参数的函数 func testFunction(s:String , i:Int) { print("我的参数是\(s),\(i)") } testFunction("RunIntoLove", i: 5)
//返回值函数 func testFunctionF(v1:String, andVaule v2:Int, andNumber v3:Int) ->String//逗号不要丢 { return "\(v1)\(v2)\(v3)" } var string = testFunctionF("RunIntoLove", andVaule: 10, andNumber: 8) print("返回值参数是:\(string)");//返回值参数是:RunIntoLove108
//无参 返回3个值,但是需要用一个元组接收 func testFunction123() ->(String ,String ,String) { return ("RunIntoLove","Study","Swift") } //用元组接收 var (name1,action,target) = testFunction123() print("\(name1) \(action) \(target)");//RunIntoLove Study Swift
//函数嵌套函数 func testFunctionInFounction() -> Int//返回值类型为Int { var y134:Int = 100 //方法可以嵌套方法 func add() { y134 += 5 //可以用外部的变量 y134++ //变量与++之间不能有空格,不然编译器会报错 } //执行方法 add() return y134 } var number12 = testFunctionInFounction() print("number12 = \(number12)")//number12 = 106
var arrInt = [80,12,45,789,85,63,110] //定义一个数组
func hasClosureMatch(arr:[Int],value:Int,function:(num:Int, value:Int)-> Bool) ->Bool//参数的方法参数有两个,一个数字,一个参考数字,返回值为bool, 外部大的方法的参数为 一个Int型的数组,参考值,以及一个闭包 { //开始遍历数组 for item in arr { //使用参数中的函数 if(function(num:item, value:value)) { return true } } return false }
//定义个方法,查找arr里面是否有比100大的数 var v1 = hasClosureMatch(arrInt,value:100,function: { (num:Int,value:Int) -> Bool in return num >= value //当该数字num大于参考值value的时候返回sure,否则返回false })//打印结果为ture,因为110大于100