Swift基础学习笔记 一
之前学习过一段时间swift,由于目前开发的项目还是用的OC,一段时间不看swift又基本忘干净了,好记性不如烂笔头,还是用博客记录一下自己学的东西吧。
基本数据类型:
1.常量(let)和变量(var):
常量用 let 修饰,如 let age = 18 ;let name = "pig" 。
作用:在使用let初始化赋值以后,则不能更改。
变量用var 修饰,如 var age = 18 age = 19
作用:使用var定义的变量,在后续可以多次修改,如上 我们定义了一个变量age,赋值为18,后面我们还可以将它改为19。
2.类型标注和类型推断
2.1 类型标注
我们可以通过以下方式去给一个对象或基本数据标注类型:
let age : Int = 1 (定义一个int类型的常量初始化为1)
var name :String = "lan" (定义一个String类型的变量初始化为 lan )
var like = String() (定义一个String类型的变量,没有初始值 )
也可以在一行中定义多个同样类型的变量,用逗号分割,并在最后一个变量名之后添加类型标注:
var red, green, blue: Double //定义变量red ,green,blue 为double类型
2.1 类型推断
如果没有初始值则必须要声明类型,用冒号分割;如果有初始值但没有明确声明对象的类型,则会根据初始化的值自动去推导一个类型如:
let age = 1 (这里会自动推断为age是int类型)
var name = "lan" (这里会自动推断为name是String类型)
var height = 2.11 (这里会自动推断为height是Double类型)注意:如果没有声明类型,浮点数都会被自动推断为Double类型,而不是float类型。
3.值的转换
swift的值永远不会被隐式转换为其他类型,如果需要把一个值转换为其他类型,需要显示转换如:
let number = 1
let count = 2.2
let all = Double(number) + count //这里必须要把int类型的number转换为double类型 才能相加,否则会报错。
4.可选类型:
使用可选类型(optionals)来处理值可能缺失的情况。可选类型表示:
- 有值,等于 x
或者
- 没有值
注意:
C 和 Objective-C 中并没有可选类型这个概念。最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示“缺少一个合法的对象”。然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而,Swift 的可选类型可以让你暗示任意类型的值缺失,并不需要一个特殊值。Swift 的 nil 和 Objective-C 中的 nil 并不一样。在 Objective-C 中,nil 是一个指向不存在对象的指针。在 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 nil,不只是对象类型。
我们可以通过在类型后面加?表示值可能会缺失如:var number:Int? = 1 var name : String? = xiaoming
在取值时,如果确定是有值则可以用!, var name : String? = xiaoming print(name!)
?? 操作符来提供一个默认值。如果可选值缺失的话,可以使用默认值来代替。如
let nickName:String? = nil
let fullName:String = "111"
let l = nickName ?? fullName
总结Swift与OC的差别:
1.Swift用let和var创造声明一切数据及对象并且可以通过初始化的值来推断出数据类型,OC则必须要在创建对象或者数据时声明一个类型,如 int ,float,NSString,NSArray等。
2.Swift在不同基本类型数据运算时,需要显式的把他们转换成一样的类型才能计算,更加安全。OC在不同类型数据运算会自动的隐式转换完成计算。
3.在 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 nil,不只是对象类型。在 Objective-C 中,nil 是一个指向不存在对象的指针。
4.Swift有可选类型的概念,可以处理值缺失时的情况,OC没有这个类型。
5.Switf中的Bool值判断只有true,false,OC的Bool值判断有很多种。如Yes,true,1,>1,object等都可表示为true;0,NO等表示为false,表示方式可以有很多。
6.Swift中有元祖类型,OC没有。
Swift基础学习笔记 一的更多相关文章
- Swift基础学习笔记
1.在学基本语法之前,简单看一下与OC的不同 注释:OC #pragma marks 视图加载完成 Swift //MARK: 视图加载完成 //TOOO:设置背景颜色(Xco ...
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Swift基础学习
Swift基础学习 http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
随机推荐
- js 数组转json,json转数组
//数组转json串var arr = [1,2,3, { a : 1 } ];JSON.stringify( arr ); //json字符串转数组var jsonStr = '[1,2,3,{&q ...
- LeetCode赛题391----Perfect Rectangle
#391. Perfect Rectangle Given N axis-aligned rectangles where N > 0, determine if they all togeth ...
- MySQL数据库(12)----ALL、ANY、SOME子查询
运算符 ALL 和 ANY 常与某个关系比较运算符结合在一起使用,以便测试列子查询的结果.它们会测试比较值与子查询返回的全部或部分值是否匹配.例如,当比较值小于或等于子查询返回的每个值时,<= ...
- The parameter to the method is the basic data type
package method.invocation; public class TheParameterToTheMethodIsTheBasicDataType { public static vo ...
- Quick BI助力云上大数据分析---深圳云栖大会
在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家陌停对大数据智能分析产品 Quick BI 进行了深入的剖析.大会现场的精彩分享也赢得观众们的一直认可和热烈的反响. 大数据分析之路的挑 ...
- 转贴:如何学好C++语言.docx
不知道哪里转的.呵呵 抱歉 C++是最难的语言.这个世界上最难的编程语言可能非C++莫属了.你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章.C++是一门很自由的语 ...
- windows完全卸载office
运行文件O15CTRRemove.diagcab执行完全卸载. 文件下载地址:https://pan.baidu.com/s/1eSilUJS
- Access用OleDbParameter无法更新数据解决方案
昨天遇到了一个非常郁闷的问题,这个问题我几乎花了一天的时间才找到了造成问题的症结并解决. 问题是这样,原本一个使用Sqlserver数 据库的系统,我要让它实现Access数据接口,即我可以很方便地把 ...
- 查看SQL运行时间
set @d=now(); select * from table; select timestampdiff(second,@d,now());
- [19/04/28-星期日] GOF23_结构型模式(享元模式)
一.享元模式(FlyWeight,轻量级) [共享类与非共享类] /*** *FlyweightFactory享元工厂类: 创建并管理享元对象,享元池一般设计成键值对 */ package cn.sx ...