基础用法,数据类型

     看了二日《Learn Objective-C on the MAC》
普通话版本《Objective-C基础编程》,大致认真读到了第楚辞内存处理有个别,感到那语言可比C++轻巧多了。

     看了两日《Learn Objective-C on the MAC》
普通话版本《Objective-C基础编制程序》,大概认真读到了第柒章内部存款和储蓄器管理有个别,认为那语言可比C++轻松多了。

第一章:Swift的简介

注:近日上学swift,看的是人民邮政和电信出版的《从零开首学习Swift叁》(小差错不少),近年来只看到了前几章。每章的知识点
琐碎,同时存在与其余语言易混淆的一些,不常用的难明白的部分记录下来。

      第二天,因为有C语言基础的来头,小编在windows 上设置了GNUstep
(Objective-C)开采情状,变看电子书籍,边在PC上编写翻译运营树上的演示,大概3个都没放过,还做了众多笔记。
(毕竟小编 马克 Dalrymaple & Scott Knaster
是高屋建瓴,叙述能力不断道来,将其实很深的本领要点浓密浅出地讲出,切中时弊,还将Objc与C语言做相比来申明,印象深远)。不知不觉就在率先天看完了前八章。

      第1天,因为有C语言基础的缘由,笔者在windows 上安装了GNUstep
(Objective-C)开采蒙受,变看电子书籍,边在PC上编写翻译运转树上的言传身教,差不离两个都没放过,还做了过多笔记。
(终究小编 马克 Dalrymaple & Scott Knaster
是高屋建瓴,叙述技巧不断道来,将其实很深的才具要点深刻浅出地讲出,切中时弊,还将Objc与C语言做相比来表明,影像深刻)。不知不觉就在首后天看完了前8章。

简介

斯维夫特 语言由苹果公司在 201四 年推出,用来创作 OS X 和 iOS 应用程序,201四年,在 Apple WWDC 公布,几家欢跃,几家愁。

愁者:只学Object-C的人

高兴者:在此以前做过java/python/js语言的人

第一章

 可是从第十章早先内部存储器管理一些,可不曾那么好啃了。

 然则从第10章初阶内部存款和储蓄器管理一些,可不曾那么好啃了。

历史

20拾 年 柒 月,苹果开采者工具部门首席营业官 克Rees Lattner 起初起始 Swift编制程序语言的统一筹划工作,用一年时光,达成基本架构,Swift 大概历经 4年的开拓期,201肆 年 陆 月宣布。

一、函数具名:

是由函数(可能措施)的称呼和参数标签组成,不包含重返值与参数类型。

“……大家平日讲那几个规则复杂化,一样,忽略那些规则也是一种常犯的一无可取。如若你正在漫无目的地滥用retain
和release
方法一⃣️改进那些错误,那就印证你还未曾当真调整那些规则。你必要减速速度,休憩一下,然后再持续读书……“
在《Objective-C基础编制程序》中,小编如是说。

“……我们平时讲这一个规则复杂化,同样,忽略这个规则也是一种常犯的百无一用。借使你正在漫无目标地滥用retain
和release
方法一⃣️纠正这么些错误,那就证实你还一贯不真的领会那一个规则。你要求减速速度,苏息一下,然后再持续读书……“
在《Objective-C基础编制程序》中,作者如是说。

克莉丝·拉特纳何许人?

LLVM 项目标机要倡导者与小编之1,Clang
编写翻译器的撰稿人,苹果公司『开拓者工具』部门的掌管,领导Xcode、Instruments等编写翻译器团队,Swift的绝大大多基础架构均由他1个人成功。

在Swift3之后,调用函数 时要求内定全体参数的价签,除非函数定义时,使用下划线(_)关键字注解标签。
  //1、 函数标签:rectangleArea(W:H:)  调用时候,如果没有W H,参数标签就是width与height
func rectangleArea(W width:Double, H height: Double) -> Double{
let area = width * height
return area
}
// 调用
rectangleArea(W: 1, H: 2)

//2、 函数标签:rectangleArea(_:H:)
func rectangleArea(_ width:Double, H height: Double) -> Double{
let area = width * height
return area
}
// 调用
rectangleArea(1, H: 2)
上函数中,WH_是参数标签,width height是参数名。参数名是在函数或者方法内部使用的名字,参数标签是在函数或者方法调用时使用的参数名。   

看说的多好,欲速不达。

基础用法,数据类型。看说的多好,心急吃不了热水豆腐。

特点

从它的语法中能看到Objective-C、JavaScript、C#、Python等语言的黑影,语法轻易、代码简洁、使用方便,可与Objective-C混合使用(互相调用),提供了近乎
Java 的名字空间(namespace)、泛型(generic)、运算对象重载(operator
overloading)。

二、Swift的开采工具:

xcode开辟工具;AppCode最精粹的第3方开采工具。
AppCode是付费软件。Xcode是主流。
在xcode代码编辑区域,假如想查询相比较完整周全的扶持文书档案,能够按住Alt键双击有些方法,张开XcodeAPI襄协助调查找结果窗口。

而且,我在临睡前也翻翻新浪的帖子,查看一下长辈的读书提构和曲线。

再正是,作者在临睡前也翻翻果壳网的帖子,查看一下前辈的读书提议和曲线。

缘何设计斯威夫特语言

让使用开拓更简短、更加快、更牢固,确定保证最后利用具有越来越好的身分。

第二章

村办总括如下:

民用总计如下:

斯维夫特相对于Objective-C是或不是要从0开首吧?

广大人有个狐疑,新的斯威夫特语言1出,我们都要从初始学语法,今后利用Objective-C的iOS程序猿跟
其余行当的非iOS技师站在了千篇一律条起跑线?大家从零开首。斯维夫特是一门新的言语,语法难度对各种技术员都差不离,从学习Swift的语法角度看,大家是站在一样条起跑线。从使用Swift做iOS开拓的角度看,使用Objective-C的知名iOS程序猿更占优势,因为从Objective-C转为Swift去做iOS开垦,仅仅是书写的格式调换了,iOS开辟的步骤、理念、框架,都不曾更改

一、编写与运作swift格局

一.壹 交互式格局运维(REPL 可能 Playground)
一.2 编译为可实施文件方式运维(iOS 可能 macOS工程)

REPL:Read-伊娃l-Print Loop–读取求值输出循环
启航Swift: 直接在极端输入swift回车就可以(xcode6 输入xcrun swift)
退出::exit或 :quit
经过Xcode创造macOS工程 正是创办Command Line Tool命令行

  1. 1经鲜明要漫长在MAC/IOS下开荒,Objective-C & swift
    都要学
    ,有了Objc
    基础的人相对不要轻视对swift的读书,当然学习C/C++的对Objc/swift
    不屑的肯定有忏悔的一天。
    毕竟语言只是个工具,假如那个纯熟某种语言的话,其实读书objc/swift
    的代价会要命小。
  2. 个体在前两日决心入手MAC book前读书了一下app store
    上的检察,总计出的定论是:
    才能在MAC/IOS上不是瓶颈,难得的是设法和新意。所以在规定要支出品种前,先做一些侦察,有利可图再持续做下去,不要埋首到才能钻探和无穷尽的编码中,那样太没风乐趣了。
  1. 1旦分明要漫长在MAC/IOS下开辟,Objective-C & swift
    都要学
    ,有了Objc
    基础的人相对不要看不起对swift的就学,当然学习C/C++的对Objc/swift
    不屑的明显有忏悔的一天。
    究竟语言只是个工具,如若不行熟练某种语言的话,其实读书objc/swift
    的代价会这么些小。
  2. 个体在前两日决心入手MAC book前读书了一下app store
    上的检察,计算出的定论是:
    技艺在MAC/IOS上不是瓶颈,难得的是想方设法和新意。所以在规定要付出品种前,先做一些实验商量,有利可图再持续做下去,不要埋首到技巧研究和无穷尽的编码中,那样太没有意思了。

Swift现状

当前稍微公司的新品类早就直接使用 Swift 开垦,许多商厦现已在做 斯威夫特的红颜储备,应聘时,会 Swift 开垦无疑会扩大本身筹码,但是国内好多厂商还在观察。

第三章

看了《Objective-C基础编制程序》开首对Objc 有了个起来的打听,
(条条框框比C++多,不过要比C 多了众多,精晓起来实在有相当的大难度的)。

看了《Objective-C基础编制程序》开头对Objc 有了个起来的刺探,
(条条框框比C++多,不过要比C 多了成都百货上千,通晓起来实在有非常大难度的)。

Swift重要性

苹果近年来在大力推广斯维夫特,浦项政法学院的公开课目前也是利用Swift在授课.因为从此Swift必将代替OC

1、标识符

区分轻重缓急写,可以是字母、数字、下划线、汉语、表情,首字母不是是数字。
注重字作为标记符,必须抬高重音符号,重音符号不是标记符的一局地。

 let `class` = "123" // ``也可以用于其他标识符,`a`与a是等价的
 let `a100` = "1"
  print(a100)  // 打印 1

但是swift 倒是一门易学易用的言语,在体育场合借到了 Pitre 的《swift
基础教程二nd》,粗略翻了1晃,那门语言可跟javascipt 很像啊。 

但是swift 倒是一门命理术数易用的语言,在教室借到了 Pitre 的《swift
基础教程二nd》,粗略翻了一下,那门语言可跟javascipt 很像啊。 

私家建议:

先理解斯威夫特最基本的语法,高等/特殊的功力随着学习的尖锐再深切钻探,斯威夫特并轻便,不过语法和OC差别卓殊越来越大。

2、关键字

驷不比舌字是分别轻重缓急写的。下划线(_)关键字表示格局相配,能够替换任何字符。

好了,开始动身。

好了,开头出发。

其次章:Swift的初体验

3、常量let 变量var

常量只可以开头化二遍,能够带上类型先定义,再赋值也是可行的。变量证明时候借使不写类型必须初步化。要么不初始化,然则必须抬高项目。

var var01 = 100;
var var02 : String
var var03  // var var03  编译失败

let和var关键字评释时候,原则上事先利用let。可避防范程序运转进程中不需要的修改并升高程序的可读性。无法修改let变量的值,可是能够通过指针获得对象后,修改对象内部的性质。

澳门葡京备用网址 1

澳门葡京备用网址 2

从Xcode六初阶现出(Swift开首现出)Playground,翻译为:操场/游乐场,对于学习Swift基本语法分外有利,所见即所得(连忙查看结果),语法特性发生改换时,能够高速查看.如下图:

澳门葡京备用网址 3

特别注意,引用数据类型注解时,平时接纳let注明,纵然从事情范围来讲并不需求3个常量,不过接纳let能够幸免引用数据类型在程序运营进程中被破绽百出地修改。
  • Swift 贰 是Apple
    从头构建的现世语言,功用强大且易于学习。Apple公司已将其视作丰裕的iOS/watchOS/tvOS/Mac
    OS X 应用程序的成本语言
  • Xcode  近年来新星的Xcode
    最新版本是Xcode捌.三
  • LLVM 在xcode
    中,LLVM在私下专业,那种编写翻译器技艺让Swift 语言变得优雅,并将Swift代码调换为Apple设备管理器能够运行的机械吗
  • REPL
    (Read-伊娃l-Print-Loop)是二个命令行工具,可用以飞速尝试Swift代码。在MAC OS X中,可在terminal 中运作它
  • playground
    在Xcode中,提供了交互性和实时的结果,相当适合用来上学Swift
  • 斯威夫特 二 是Apple
    从头创设的现世语言,成效庞大且便于学习。Apple公司已将其视作丰裕的iOS/watchOS/tvOS/Mac
    OS X 应用程序的开采语言
  • Xcode  目前新型的Xcode
    最新版本是Xcode8.三
  • LLVM 在xcode
    中,LLVM在镇定自若工作,那种编译器才具让Swift 语言变得优雅,并将Swift代码调换为Apple设备管理器能够运维的机器吗
  • REPL
    (Read-Eval-Print-Loop)是二个命令行工具,可用来快速尝试斯威夫特代码。在MAC OS X中,可在terminal 中运作它
  • playground
    在Xcode中,提供了交互性和实时的结果,卓殊适合用来读书Swift

Swift最基本的语法变化

一.导入框架 import UIKit

二.概念标记符时,必须注脚该标记符是变量照旧常量

3.宣称标识符的格式:变量/常量关键字 名称 : 数据类型

四.语句甘休时不供给加分号,假使同一行有多少个语句,则依然供给加不过不提议1行多条语句

五.斯威夫特中的打印语句:print(打字与印刷的始末)

4、注释 表达式

// 单行注释; /**/
块注释;Swift的多行注释能够嵌套。表达式在注解变量和常量时候绝不钦点数据类型。因为这么程序代码十三分简洁,但有时候供给钦定特别的数据类型,比方var
a:Int1陆 =
10代码。对应语句甘休后的分部不是必须情状下也不要加。多语句写在壹行上要加分号。

边看书边实行边写随笔:

边看书边试行边写随笔:

其三章:Swift的中坚语法

第四章

Chapter 1 Swift 简介

Chapter 1 Swift 简介

一. 常量与变量

一、1元运算符 二元运算符

swift不设有a++ ++a –a a–等运算符,应该运用a += 1a-=一交替。贰元运算符中浮点数取余运算的时候%无法动用。整数能够。用浮点数的truncatingRemainder(dividingBy:
)函数进行取余运算。

  1. 在Terminal 中输入xcrun swift 可进入REPL,实行swift代码测试

  2. 使用var 定义变量,使用let 定义常量

  3. swift 基本类型:

    Bool, Int ,Int32,Int64,Int8,Int16, UInt,UInt32,UInt64,UInt8,UInt16,Float,Double,Character,String

  4.  数学运算法  加 (+),减 (-),乘 (*),除
    (/),种种语言在那一点都是三个道德。

  5. 数值表示法, 2进制,捌进制,1六进制,科学计数法,与C同

  6. 自在显示字符串

  1. 在Terminal 中输入xcrun swift 可进入REPL,实行swift代码测试

  2. 运用var 定义变量,使用let 定义常量

  3. swift 基本类型:

    Bool, Int ,Int32,Int64,Int8,Int16, UInt,UInt32,UInt64,UInt8,UInt16,Float,Double,Character,String

  4.  数学生运动算法  加 (+),减 (-),乘 (*),除
    (/),种种语言在那点都以2个道德。

  5. 数值表示法, 二进制,八进制,1陆进制,科学计数法,与C同

  6. 轻巧显示字符串

1.如何是常量和变量

    
在Swift中显明:在概念二个标志符时必须通晓表达该标志符是一个常量仍旧变量,使用let来定义常量,定义之后不得以修改。使用var来定义变量,定义之后方可修改。

2、算术赋值运算符

+= 加赋值, -= 减赋值, *=乘赋值, /= 除赋值, %=取余赋值。

 使用嵌入表示法\() 来引用变量/常量,如

 使用嵌入表示法\() 来引用变量/常量,如

二.常量和变量的主干采取

import UIKit

let a : Int = 10

// 错误写法,当一个字段定义为常量时是无法修改的

// a = 20

var b : Int = 20

// 因为b定义为变量,由此是足以修改的

b = 30

叁、关系运算符

=== 恒等于 首要用于引用类型数据比较 eg:a === b
a与b引用同二个实例时候回来true
不然再次回到false,比较多个引用的始末是还是不是为同贰个实例。 !== 与===相反
不恒等于

let  n=10
let  name= “Tom”
let  city=“Shanghai”
print (“I am \(name), from \(city), age=\(n)")
let  n=10
let  name= “Tom”
let  city=“Shanghai”
print (“I am \(name), from \(city), age=\(n)")

三.常量和变量的选择注意事项

瞩目:是指向的靶子不可能再拓展修改.可是足以通过指针获得对象后,修改对象内部的品质。在真正使用进程中,提出先定义常量,若是需求修改再修改为变量(越发安全)

//
注意:注解为常量不得以修改的情趣是指针不能够再指向任何对象.不过足以因此指针获得对象,修改个中的质量

// view : UIView = [[UIView alloc] init];

// Swift对象中不要求*

var view : UIView = UIView()

view = UIView()

let view1 : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 100,
height: 100))

view1.backgroundColor = UIColor.redColor()

// 枚举类型的用法:类型.枚举的值

let btn : UIButton = UIButton(type: UIButtonType.Custom)

btn.backgroundColor = UIColor.blueColor()

btn.setTitle(“按钮”, forState: UIControlState.Normal)

btn.frame = CGRect(x: 20, y: 20, width: 60, height: 30)

view1.addSubview(btn)

4、位运算符

“~” 位反:按位取反
“&” 位与:两位一体为一,那一人才为一
澳门葡京备用网址,“|” 位或:只要有2个为一 那一个人正是一
“^” 位异或:两位相反时那壹人才为一
“>>”右移:比方UInt八,右移之后,(高出5位)右侧两位去除,高位补零。
“<<”左移:举个例子UInt八,左移之后,(赶上陆人)左侧两位去除,低位补零。

 7. 使用typealias 定义外号,与C中的typedef 同,如

 柒. 使用typealias 定义小名,与C中的typedef 同,如

贰. 斯维夫特中数据类型

第五章

typealias EightBits=UInt8
var reg:EightBits=0
typealias EightBits=UInt8
var reg:EightBits=0

Swift中的数据类型:整型、浮点型、对象类型、结构体类型等等

1、斯威夫特的数据类型

整型、浮点型、布尔型、字符、字符串(String)、元组、集结、枚举、结构体属于值类型

  • Int8相当于OC的char Int16相当于OC的short Int32相当于int
    Int64相当于OC的long Int相当于OC的NSInteger
    类属于引用类型

 8.元祖 (Tuple) 元祖是由2个或多少个变量/常量/字面量组成的单个实体,如

 八.元祖 (Tuple) 元祖是由1个或多个变量/常量/字面量组成的单个实体,如

一.整型和浮点型

整型:

有符号

Int8 : 有符号8位整型

Int16 : 有符号16位整型

Int32 : 有符号32位整型

Int64 : 有符号64位整型

Int : 和平台相关(暗中认可,也就是OC的NSInteger)

无符号

UInt8 : 无符号8位整型

UInt16 : 无符号16位整型

UInt32 : 无符号32位整型

UInt64 : 无符号64位整型

UInt : 和平台相关(常用,也就是OC的NSUInteger)(暗中同意)

浮点型

Float : 叁拾4人浮点型

Double : 64浮点型(默认)

// 定义几个Int类型的变量m,并且赋值为十

var m : Int = 10

// 定义一个Double类型的常量n,并且赋值为三.14

let n : Double = 3.14

2、浮点型

浮点型主要用来囤积小数数值,也得以用来存款和储蓄范围不小的整数。暗中同意的浮点数是Double类型

var vard:Double = 2553333
let myDreamCar=(2017,"Mercedes-Benz","M-Class")
print (myDreamCar.0)
print (myDreamCar.1)
print (myDreamCar.2)
let myDreamCar=(2017,"Mercedes-Benz","M-Class")
print (myDreamCar.0)
print (myDreamCar.1)
print (myDreamCar.2)

2.Swift中的类型推导

Swift是强类型的语言

Swift中其它1个标志符都有深入人心的档案的次序

注意:

只要定义1个标记符时有直接开始展览赋值,那么标记符后边的类型能够省略.

因为Swift有品种推导,会活动依据前边的赋值来调节前面的标志符的数据类型

能够经过option+鼠标左键来查看变量的数据类型

//
定义变量时不曾点名分明的品种,然而因为赋值给i3个20.20为整型.由此i为整型

var i = 20

// 错误写法:若是之后赋值给i2个浮点型数值,则会报错

// i = 30.5

// 正确写法

var j = 3.33

j = 6.66

3、数字代表方法

三.一 进制表示
贰进制数:0b 0b11拾0 (28)
捌进制数:0o 0o3四(2八)
十6进制数:0x 0x一C (2⑧)
三.2 指数表示
10进制指数: 三.36e2 (3.3陆 * 10的2次幂)
再有补零、增添下划线表示的款式 都是能够的。

 玖. 可选类型, (今后还不知情那个用处是?)

 玖. 可选类型, (今后还不精晓那么些用处是?)

三.Swift中挑凉州运算

Swift中在开始展览基本运算时务必确定保证项目一致,不然会出错。同样连串之间才方可拓展演算,因为Swift中尚无隐式转。

4、整型之间的转移

斯威夫特中,差别门类的变量/常量
无法相互运算,编译失利。必须出示转变(利用构造函数)

let historyScore:UInt8 = 90
let englishScore:UInt16 = 130
let totalScore = UInt16(historyScore) + englishScore
var v: Int?
var v: Int?

4.数据类型的转速

Int类型转成Double类型:Double(标志符)

Double类型转成Int类型:Int(标志符)

let a = 10

let b = 3.14

// 错误写法

// let c = a + b

// let c = a * b

// 准确写法

let c = Double(a) + b

let d = a + Int(b)

注:一般提倡小范围转大范围,不提倡大范围转小范围,或者会促成精度的不见,乃至运营万分。

整型与浮点数类型转变和上文类似。

 Chapter2  集合

 Chapter2  集合

三.逻辑分支

5、布尔型

在Swift中,布尔类型唯有四个值 true false

  1. 数组

    let candyJar=[“Peppermints”, “Gooey Bears”,”Happy Ranchers”]
    print (candyJar[0])
    candyJar.append(“Candy Canes”) //!!! error ,the array is constant

    var refillableCandyJar =candyJar //将常量数组赋给变量数组
    refillableCandyJar.append(“坎蒂 Canes”)
    refillableCandyJar+=[Peanut Clusgters”];
    refillableCandyJar+=[“Banna Taffy”,”Bubble Gum”]

    var h20:[String]=[“Hydogen”,”Hydrogen”,”Oxygen”]; //要是要在宣称数组时钦赐其值的项目

  1. 数组

    let candyJar=[“Peppermints”, “Gooey Bears”,”Happy Ranchers”]
    print (candyJar[0])
    candyJar.append(“Candy Canes”) //!!! error ,the array is constant

    var refillableCandyJar =candyJar //将常量数组赋给变量数组
    refillableCandyJar.append(“Candy Canes”)
    refillable坎蒂Jar+=[Peanut Clusgters”];
    refillableCandyJar+=[“Banna Taffy”,”Bubble Gum”]

    var h20:[String]=[“Hydogen”,”Hydrogen”,”Oxygen”]; //假如要在宣称数组时钦定其值的门类

一.支行的牵线

分层即if/switch/三目运算符等看清语句,通过分支语句可以决定程序的推行流程。

陆、元组类型

元组是一种数据结构,元组就像一条表的笔录,各字段类型不必千篇一律。元组在作为函数重返多值时更是主要。在分解元组时候
不须求的字段能够用下划线”_”代替:

 // 写法
 let info = ("123", 18)
 let info1 = (name: "123" , age: 18)
 let  (name, age) = ("123", 18)

 var student = (id:"1002", name:"zhangsan",english_score:32,chinese_score:80)
 let (id1,name1,_,_) = student
 print(id1,name1, student.0, student.id) // .键值(键存在时)  .下标都可以访问

 与C同,数组中带有的因素类型必须一律。

 与C同,数组中隐含的要素类型必须1致。

二.if分支语句

和OC中if语句有必然的差异,剖断句能够不加()。在斯威夫特的论断句中必须有醒目标真伪,不再有非0即真;必须有分明的Bool值,Bool有八个取值:false/true。

// 演练一:

let a = 10

// 错误写法:

//if a {

//    print(“a”)

//}

// 正确写法

if a > 9 {

print(a)

}

// 演练二:

let score = 87

if score < 60 {

print(“不及格”)

} else if score <= 70 {

print(“及格”)

} else if score <= 80 {

print(“良好”)

} else if score <= 90 {

print(“优秀”)

} else {

print(“完美”)

}

// 演练三:

// 那一个是可选类型,因为唯有评释成可选类型后,才方可判明是还是不是为空

// 可选类型会在此起彼伏解说,可先驾驭就可以

let view : UIView? = UIView()

// 决断倘使view有值,则设置背景

// 错误写法

//if view {

//    view.backgroundColor = UIColor.redColor()

//}

if view != nil {

view!.backgroundColor = UIColor.redColor()

}

柒、可选类型

斯维夫特全数的数据类型注脚的变量或许常量都不能够为空值(nil)
比方三个变量/常量的值 或然为空 恐怕不为空,就用当下项目标可选类型
Int->Int? Int!
可选类型的留存珍视是因为Swift是强类型,Int类型的
除了能积攒整型数据,别的都不得以积累, 蕴含nil。

Int?是对Int的一层包装,它们是贰种区别的数据类型。能够直接将Int类型赋值给Int?类型(小->大)
比如有些变量一向有值 就用普通品种
壹经不分明是否有值就用可选类型:? !
“?”: 开端不分明有未有值的留存,拆包时候要求用感叹号!拆包 (展现拆包)
“!”: 一般是始于明确一定有值,拆包时候 省略惊叹号! (隐式拆包)

   let n1:Int? = 10       // 可选类型
   print(n1!)             // 显式拆包 / 强制拆包
   var n2:Int! = 10       // 隐式拆包可选类型
   print(n2)              // 隐式拆包
   var n3:Int?
   print(n3!)             // 不正确,!强制拆包  some必须有值--fatal error: unexpectedly found nil while unwrapping an Optional value(可选类型打印是Optional(xxx))

可选绑定:选用性的赋值,纵然可选类型值存在
就自行解包赋值给三个常量或许变量,如若可选类型值不存在,就不成立那么些常量大概变量

     // 方法
    func n1Value(n: Int)->Int?
    {
          if n == 0 {
               return nil
         }else {
        return n
       }
    }
    // 可以自动解包,n0就是解包后的Int类型
  if let n0 = n1Value(n: 1)  {    // 多个值绑定语句用逗号分隔,只要有一个值绑定失败,整个结果就是false
         let nn : Int = n0     // 不报错  说明n0是普通类型
         print("n0创建 值为:\(n0)")
     }else{
         print("n0没有创建")
     }

用var 定义的是可变的数组,使用let定义的是常量数组。

用var 定义的是可变的数组,使用let定义的是常量数组。

三.三目运算符

Swift 中的 3目 运算保持了和 OC 1致的风骨

var a = 10

var b = 50

var result = a > b ? a : b

println(result)

第六章

swift语言中的数组能够类比为C中的向量 vector。

swift语言中的数组能够类比为C中的向量 vector。

1、字符 —- 使用双引号 (单字符)
 var char01: Character = "a"  // 单字符
 var charStr:Character = "\u{26}" // Unicode编码

swift中数组能够修改/替换(钦命数组索引并赋给它新值就可以),删除(removeAtIndex/removeLast),插入(insert:atIndex),合并(+)

swift中数组可以修改/替换(钦命数组索引并赋给它新值就能够),删除(removeAtIndex/removeLast),插入(insert:atIndex),合并(+)

2、字符串(结构体) —- 使用双引号 (单字符大概多字符)
  • 接纳String的由来:String是个结构体,品质更加高,NSString是几个OC对象,质量略差,String援助直接遍历,
    斯维夫特提供了String和NSString之间的无缝转变

var str0: String = "Objective-C and Swift" // String可省略,默认是String类型
let emptystring1 = "" // 单字符

字符串的长度:

str0.characters.count  // str0.characters字符串的遍历  Character类型
  • 字典
  • 字典
3、转义符

“ \t ”: 水平制表符
” \n “: 换行
” \r “: 回车
” “” “: 双引号”
” ‘ “: 单引号’
” \” “: 反斜杠\

字典包蕴多个例外的一对:键 (key)和 值
(value),键和值的系列能够分裂,但全部键的种类都必须壹致,全数值的品类也亟须一致。

字典包罗三个不等的一对:键 (key)和 值
(value),键和值的档案的次序能够不一致,但全数键的连串都不能够不1致,全体值的连串也非得1律。

4、字符串的拼接(++=\append同样档期的顺序 \()不相同档期的顺序)
  • 可变字符串: var定义
    不足变字符串:let定义

       append拼接:
       lamda2.append("a") // 必须是单个字符
       lamda2+="123" //  +=写在引号外部
       print(andSign2+"字符串bu相等"+lamda2) //  +写在引号外部
       print("5=\(2+3)") //  将Int类型转String类型拼接,表达式写在引号内部
    
  • *字符串的格式化

     // 字符串的格式化
     var min = 12
     var second = 23
     var time = String.init(format: "%02d: %02d", arguments: [min, second])
    
va r dict =["one":1, "two":2,"three":3,"four":4]
print (dict["one"])  //find

dict["five"]=5 //add

dict["one"]=11 //update

dict["one"]=nil //delete

dict.removeValueForKey("two") //delete
va r dict =["one":1, "two":2,"three":3,"four":4]
print (dict["one"])  //find

dict["five"]=5 //add

dict["one"]=11 //update

dict["one"]=nil //delete

dict.removeValueForKey("two") //delete
伍、字符串的插入删除替换 截取

// 字符串的操作–String.Index是索引类型

var str0: String = "Objective-C and Swift"

五.一、插入字符 insert(_ newElement: Character, at i: String.Index)

str0.insert(".", at: str0.endIndex) // "Objective-C and Swift."

5.二、删除字符remove(at i: String.Index)-> Character

str0.remove(at: str0.index(before: str0.endIndex)) // "."

五.3、删除钦命范围removeSubrange(_ bounds:
ClosedRange<String.Index>)

var startIndex = str0.startIndex
var endIndex = str0.index(startIndex, offsetBy: 9)  // 从startIndex索引开始向后9个字符的索引值
var range = startIndex...endIndex
str0.removeSubrange(range)  // "C and Swift"

5.4、替换replaceSubrange(_ bounds: ClosedRange<String.Index>,
with newElements: String)

startIndex = str0.startIndex
endIndex = str0.index(startIndex, offsetBy: 0)
range = startIndex...endIndex
str0.replaceSubrange(range, with: "C++") // "C++ and Swift"

5.5、*字符串的截取

   这种不再使用了,String.Index索引类型不方便
   //str.substring(to: <#T##String.Index#>)
   //str.substring(from: <#T##String.Index#>)
   //str.substring(with: <#T##Range<String.Index>#>)

   这样用,先String转NSString,再调用NSString的截取方法,传入Int即可。(str as NSString)是NSString类型
   (str as NSString).substring(to: <#T##Int#>)
  • 数组的数组
  • 数组的数组
陆、字符串的可比

高低: >、 < 是还是不是等于: ==、 !=

//Todo

//Todo

(Swift的Foundation中NSString使用=== 、 !==是不是等于)

“”和String()创造的空字符串是13分的。

 let emptystring1 = ""
let emptystring2 = String()

if emptystring1 == emptystring2 {
    print("相等")
}else
{
   print("不等")
}

字符串的hasSuffix(_ 🙂 hasPrefix:(_ 🙂

lamda2.hasPrefix("1")  // false
lamda2.hasSuffix("3")  // true

//add some codes

//add some codes

  • 创制空数组和词典

    var myEmptyArray:Array=[]
    //or
    var myEmptyArray=Int
    myEmptyArray+=[33,44,66]
    myEmptyArray=[] //delete all items

    var myEmptyDictionary =Dictionary ()
    myEmptyDictionary =[“myKey”,12.34]

  •  数组迭代

    //method 1
    for itemName in list {
    … do something with itemName
    }

    //method 2
    //迭代数组的值及其索引
    for (index, candy) in combinedRefillableCandyJar.enumerate () {
    print (“Candy (candy) is in position (index) of the array”)
    }

  • 开创空数组和词典

    var myEmptyArray:Array=[]
    //or
    var myEmptyArray=Int
    myEmptyArray+=[33,44,66]
    myEmptyArray=[] //delete all items

    var myEmptyDictionary =Dictionary ()
    myEmptyDictionary =[“myKey”,12.34]

  •  数组迭代

    //method 1
    for itemName in list {
    … do something with itemName
    }

    //method 2
    //迭代数组的值及其索引
    for (index, candy) in combinedRefillableCandyJar.enumerate () {
    print (“Candy (candy) is in position (index) of the array”)
    }

 

 

  • 迭代词典

    for (index, value ) in arceneauxsOtherCandyRoute {
    print (“(key) has a candy jar with the following contents:(value)”)
    }

  • 迭代词典

    for (index, value ) in arceneauxsOtherCandyRoute {
    print (“(key) has a candy jar with the following contents:(value)”)
    }

 swift 基本数据类型学习&介绍达成

 swift 基本数据类型学习&介绍完成

<Chapter 2 end >

<Chapter 2 end >

 

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website