之前学习过一段时间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. is_array判断是否为数组

    if(is_array($arr)){ echo "是数组"; }else{ echo "不是数组"; }

  2. laravel开发之-网站初建

    1 cmd 打开电脑命令窗口 2 目录切换到网站根目录 3 输入命令:php artisan serve 4 model 生成命令:php artisan make:model 需要生成的model名 ...

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

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

  4. forkjoin框架疑问记录

    今天在看jdk1.7的forkjoin框架时候,里面有个例子如下: product类: public class Product { private String name; private doub ...

  5. sql server 查询分析器中表名无效,有红线,其实是这张表的

    ctrl+shift+R 就OK了,就是刷新本地缓存.

  6. BufferedInputStream使用详解

    下面的例子演示如何使用BufferedInputStream类读取文本文件内容. 首先需要声明一个byte数组作为buffer,然后循环将文本内容循环读入到buffer中,并将buffer转换为字符串 ...

  7. 关于CATransform3D矩阵变换的简单解析

    关于CATransform3D矩阵变换的简单解析 效果图: 我能能够用上的CATransform3D其实很简单,并不复杂. CATransform3D有着4种东西我们可以设置. 1. 透视效果(由m3 ...

  8. Emacs快捷键(较全)

    C = Control M = Meta = Alt | Esc Del = Backspace 基本快捷键(Basic) C-x C-f "find"文件, 即在缓冲区打开/新建 ...

  9. Redis的数据类型及其常用命令

    快速入门Redis 首先安装redis: windows下安装redis Linux下安装redis 1. 什么是redis Redis属于nosql(非关系型数据库) 关系型数据库是基于关系表的数据 ...

  10. Android Volley源码分析及扩展

    转载请标明出处: http://www.cnblogs.com/why168888/p/6681232.html 本文出自:[Edwin博客园] Volley 介绍 Android系统中主要提供了两种 ...