之前学习过一段时间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 中的一个特性,一个方法要不返回一个对象要不返回nilnil表示“缺少一个合法的对象”。然而,这只对对象起作用——对于结构体,基本的 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基础学习笔记 一的更多相关文章

  1. Swift基础学习笔记

    1.在学基本语法之前,简单看一下与OC的不同 注释:OC       #pragma marks  视图加载完成 Swift    //MARK: 视图加载完成   //TOOO:设置背景颜色(Xco ...

  2. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

  3. 【C#编程基础学习笔记】6---变量的命名

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...

  4. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)

    技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...

  5. Swift基础学习

    Swift基础学习  http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...

  6. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  7. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  8. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  9. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

随机推荐

  1. js函数的节流与防抖

    一.防抖&节流 在前端开发中有一部分用户行为会频繁的触发事件执行,而对于DOM的操作.资源加载等耗费性能的处理,很可能会导致界面卡顿,甚至浏览器奔溃.函数的节流与防抖就是为了解决类似需求而产生 ...

  2. JavaScript的进阶之路(四)理解对象2

    对象的三个属性 原型属性 1.var v={}的原型是Object.prototype;继承了一个constructor属性指代Object()构造函数,实际的原型是constructor.proto ...

  3. C# 读取config

    控制台应用程序 App.config: AppSettings.config: Program.cs: string a = ConfigurationManager.AppSettings[&quo ...

  4. Leetcode算法比赛----First Unique Character in a String

    问题描述 Given a string, find the first non-repeating character in it and return it's index. If it doesn ...

  5. SPARK - Execute Framework

    Spark函数详解系列之RDD基本转换 https://www.cnblogs.com/MOBIN/p/5373256.html The  RDD provides low level API for ...

  6. HTTP协议教程

    文章内容: 1.HTTP协议概述 2.URL知识概述 3.HTTP消息结构详解 1.HTTP协议概述 定义: 超文本传送协议 (HTTP-Hypertext transfer protocol) 是分 ...

  7. 微信小程序开发7-JavaScript脚本

    1.小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来完成业务需求. 2.ECMAScript 在大部分开发者看来,ECMAS ...

  8. 第2课 android机器人的翻页相册

    一.准备:准备像素大小相同的图片若干张.(本例中的图片,统一像素大小为310*310,请保存至本机电脑并按顺序命名为1.jpg至6.jpg) 二.启动与登陆: 启动谷歌浏览器,并在地址栏里输入loca ...

  9. [翻译] PQFCustomLoaders

    PQFCustomLoaders Current version: 0.0.1 Collection of highly customizable loaders for your iOS proje ...

  10. Win10笔记本显卡驱动更新升级

    对于游戏玩家来说,对显卡的关注度要高于电脑其它硬件,一般来说,显卡越好,游戏性能往往越强.不过要持续发挥显卡的最佳游戏性能,经常更新显卡驱动也是很有必要的.那么笔记本显卡驱动怎么更新?下面小编以自己的 ...