Swift 学习1
来源:互联网 发布:朝鲜 知乎 编辑:程序博客网 时间:2024/05/21 22:21
前两天刚刚学习了Swift,感觉和OC的差异有点大啊,一开始并不习惯!
在这里记录下swift的学习笔记吧。
//常量和变量let number = 10//number = 5 常量不能改变var name = "sugar"name = "uzi" //变量可以修改print(name) //在控制台输出 相当于NSLoglet 汽车 = "汽车"print(汽车)//强制指定类型let number1:Int = 20let floatNumber:Float = 2.0let doubleNumber:Double = 3.00let name1 = "sugar"//类型转换 String() 字符串的拼接+let str = name1 + String(number1)print(str)//打印字符串的长度print(name1.characters.count)//Character只是一个单个的字符let char:Character = "A"//字符串var str1:String = "sugar在2班学习"//空字符串var empty_str = ""var empty_str1 = String()//判断字符串是否为空if(str1.isEmpty){ print("是一个空的字符串")}else{ print("是一个有值的字符串")}//字符串拼接var animalStr = "dog"animalStr += "cat"print(animalStr)//字符串插值var num = 3.0print("2.5 * \(num) == \(num*2.5)")//判断字符串相等let sex = "男"let sex1 = "女"if sex == sex1{ print("一样")}else{ print("不一样")}var string1 = "smile"var string2 = "cry"var temp:Stringtemp = string1string1 = string2string2 = tempprint(string1)print(string2)
以上是一些简单定义字符串、整型数据的方法。
在swift中,let用来定义常量,常量不可变,就是我们用let定义的东西不能再次对它进行修改操作;var用来定义变量,顾名思义,就是可以改变的。
这点和OC有很大区别啊,OC中定义可变字符串和不可变字符串如下:
NSMutableString *mulStr = [[NSMutableString alloc] initWithString:@"sdhjdsf"];//可变字符串创建方法(当然,只是其中一种) NSLog(@"%@", mulStr); NSString *str = @"sdjfdfs";//(不可变字符串,字面量方法创建) NSLog(@"%@", str);
swift中的就很简洁的:
var mulStr:String = "shjdfh" //可变字符串var mulStr1 = "dhjfhdfj" //这样创建的话,系统会帮我们识别是什么类型,就是系统会识别是字符串还是其他什么类型let str2:String = "dsfjsjkldfg" //不可变字符串
还有字符串的拼接啊什么的,swift都会比OC要简单许多。除了字符串,像数组,字典,在swift里的定义方法都差不多。
var mulArr:Array = ["djdf", "ddff", "dwfegh"] //可变数组let arr1:Array = ["dasdf", "dfdasf", "hrhh"] //不可变数组//元素的类型必须是一样的//元素类型为String的数组let nameArray = ["sugar","张三","李四"]//Array<String> Array 是类型 <String>数组中元素的类型var name_array:Array<String> = ["kkk","张三"]//元素类型为string的空可变数组var empty_array = Array<String>()var empty_int_array = [Int]()//追加name_array.append("王五")print(name_array)//往对应的位置添加一个元素name_array.insert("zj", atIndex: 1)print(name_array)//"+="也是往数组后面追加元素 可以追加多个name_array += ["lyl", "sh"]print(name_array)//修改name_array[0] = "jianb"print(name_array)//删除name_array.removeAtIndex(0)print(name_array)
还有下面的字典
let dict = ["name":"sss", "age":15] //不可变字典var dict1 = ["name":"sss", "age":15] //可变字典//不给类型var studentDic = ["name":"sss", "age":12, "sex":"男"]print(studentDic)//给类型 要对应 key 跟 value 的类型var animalDic:Dictionary<String,Int> = ["dog":10, "cat":20]print(animalDic)//空字典var empty_Dic = [:]var empty_dic = Dictionary<String,Int>()//增加animalDic["fish"] = 30print(animalDic)//修改animalDic["dog"] = 100print(animalDic)//删除animalDic.removeAtIndex(animalDic.indexForKey("cat")!)animalDic.removeValueForKey("dog")print(animalDic)
swift中多了一个元组,有点类似于字典和数组的结合版
//元组中有两个元素 一个是String类型的 一个是Array类型的let classInfo:(String,Array) = ("2班", ["ios", "H5"])//给元组中元素一个名字let classInfo1:(classname:String, course:Array) = ("2班", ["ios", "H5"])//元素的名字去拿元素print(classInfo1.classname)print(classInfo1.course[0])//元素的角标print(classInfo.1[0], classInfo.0)//练习var dict = ["name":"sugar", "age":22, "sex":"男", "num":26]var arr = [dict]var arra = (dict, arr)print(arra.1[0]["age"]!)
循环结构
//第一种方法for var i = 0;i<100;i++ { print(i)}//第二种方法 "..<"就是<10for num1 in 0..<10 { print(num1)}//这种 "..."就是<=10for i in 0...10 { print(i)}//for in 遍历数组/字典var carArr = ["Audi", "Benz", "Posche", "BMW"]for car in carArr{ print("carName___\(car)")}var NBADict = ["James":"骑士", "Paul":"快船", "Wede":"热火", "Kobe":"湖人"]for (key,value) in NBADict{ print(key, value)}var num2 = 5//如果大于0 就一直做循环while num2 > 0{ num2-- print(num2)}//如果 while后边判断条件为真 会一直执行repeat里边的内容//如果 while后边的判断条件为假 只会执行一次repeat { print("repeat")}while 10<9//判断语句var numberValue = 10if numberValue == 10 { print("等于10")}else{ print("不是10")}//switch//不需要添加 break 系统会自动帮我们添加//fallthrough 贯穿 执行完判断之后 不会跳出 会继续往下执行//每个分支必须包含代码let numValue = 10//第一种switch numValue{case 10: print("值为10") fallthroughcase 20: print("值为20")default: print("Other")}//第二种//也可以在这里写判断条件switch numValue {case 0...20: print("小孩子")case 20..<30: print("小青年")default: print("Other")}//第三种 可以在switch中声明变量switch numValue{ //在case 里我们可以声明一个变量 如果满足条件的话 我们就可以使用它 并且其值跟switch条件的值一样case var num where numValue > 0 && numValue < 20: num++ print(num)default: print("Other")}//第四种 在switch中 可以判断元组let point = (x:10,y:10)//"_" 忽略 在这里忽略掉第一个元素switch point{case (10,10): print("10,10") fallthroughcase (_,10): print("_,10")case (10,_): print("10,_")default: print("Other")}
枚举
//可以给枚举赋原始值 也可以不赋原始值 对应int来说是递增的enum Direction:Int{ case East = 0 case South case West case North}let d1 = Direction.Westprint(d1.rawValue) //取出原始值//原始值是String类型enum Season:String{ case Spring = "春天" case Summer = "夏天" case Autumn = "秋天" case Winter = "冬天"}print(Season.Autumn.rawValue)//通过原始值创建变量enum Person:Int{ case 小明 = 1 case 八戒 case 大圣}let p1 = Person(rawValue: 1)print(p1!)
函数
//无参无返回值func sayHello() ->Void{ print("sayHello")}sayHello()//无参有返回值func sayHi() ->String{ return "sayHi"}//用常量接收返回值let hiStr = sayHi()print(hiStr)//有参数无返回值//()里面参数名 和 参数类型//n1 n2叫做外部参数 作用就是调用的时候给我们看的(并没有什么卵用)//num1 num2 叫做内部参数 是实际传进去的参数func sum(n1 num1:Int, n2 num2:Int) ->Void{ print("\(num1+num2)")}/*//如果我们不写外部参数 系统默认不显示第一个外部参数 其他都显示//sum(5, n2: 3)*///如果我们都不想让显示 我们可以加上"_"忽略外部参数sum(n1: 5, n2: 3)//总结:1.都显示就全都写上外部参数 2.都不显示就写上"_" 忽略掉 3.系统默认 第一个不显示,后面全显示外部参数//有参有返回值func baiduStrMethod(str3:String, str2:String) ->String{ return str3 + str2}print(baiduStrMethod("http://", str2: "www.baidu.com"))//有参数有多个返回值func caculate (num11:Int, num22:Int) ->(Int, Int, Int){ return (num11+num22, num11-num22, num11*num22)}print(caculate(10, num22: 5))//函数嵌套func test1(){ print("test1") func test2() { print("test2") } test2()}test1()//inoutfunc inoutTest(inout name:String) ->Void{ name = "sugar"}//定义一个变量var myname = "kkk"inoutTest(&myname)//打印外边的mynameprint(myname)
个人总结:感觉swift是很简便,但好像与Xcode的兼容性并不太好,有时候用swift写着写着就会报错,代码颜色全变白/黑,有时候还会直接崩溃。
行啦,第一天就学了这些Swift,可能是有OC的基础,感觉并不难理解。
0 0
- Swift学习1--初识Swift
- Swift学习笔记-1
- swift 学习(1)
- swift学习1
- swift学习笔记-1
- Swift 学习1
- swift学习笔记1
- swift学习笔记1
- Swift基础学习1
- Swift 学习1
- SWIFT学习总结-----1
- Swift学习笔记1
- ios swift学习日记1-Swift 初见
- swift学习1 oc swift混编
- swift -- swift学习笔记(1)
- swift学习笔记(1)
- Swift语言学习No.1
- Swift 学习笔记 1-简介
- 匿名函数和字面量——JS学习
- 在Maven项目中加载spring中的bean的配置xml文件会提示找不到解决方法
- 二分图总结
- C++ primer plus 第十章课后习题,原创答案。
- cccc结构体
- Swift 学习1
- Android 面试题
- 计算机科学与技术院校排名(2015,2016-2017)
- Host-Base LAN-Base LAN-Free Server-Free备份方式详解
- bat复制备份
- 【GDOI2016Day2】第一题SigemaGO
- javaIO流
- android开发笔记之多媒体—图片的颜色处理
- 使用bat对UiAutomator程序进行快速调试