The basics of swift

原文出自:标哥的技术博客

前言

Swift是iOS、OS X和WatchOS平台新的开发语言。尽管如此,Swift有很多是与我们使用过的C和Objective-C开发经验是很像的。

Swift提供了自己版本的C和Objective-C基础数据类型,包括整型Int、浮点型Double和Float、Boolean值Bool和字符串类型String。Swift还提供了三个强大的基本集合类型Array、Set、Dictionary。

与C语言一样,Swift使用变量存储和通过唯一标识名获取值。Swift也有值不可变的,称为constants,它是比C的常量要强大得多。Swift通过使用常量可使代码更安全且更清晰。

除了我们熟悉的类型外,Swift引入了在Objective-C中没有的高级数据类型,比如元组(Tuples)。元组使我们可以创建和传一组类型相同或者不相同的值。我们可以使用元组作为函数返回值。

Swift还提供了可选类型(Optional Type),用于处理可空值。可行类型表示“它有值,且值为x或者它根本没有值”。使用Optionals与Objective-C中使用指针nil很像,但是Optionals可以是任意类型,而不仅仅是类。Optionals不仅仅是安全,而且比nil指针语意更清晰明了,它们是Swift最强大的特性之一。

Swift是类型安全的语言,这意味着我们所写的代码的类型必须是明确的,不能隐匿转换。比如,如果我们希望是Float类型,却传一个Int类型,那么是不可行,编译器会抱错。

注明:Swift版本为2.1

测试环境:xcode 7.2

常量与变量

常量与变量都通过一个名称与之关联一个指定类型的值。常量的值一旦设置,不能再修改,而变量是可以随时修改值的。

常量

声明常量使用关键字let来声明,声明时可不明确指定常量的数据类型,交由编译器来推断:

// 常量和变量必须在使用前声明,用let来声明常量,用var来声明变量
// 常量在声明时,要求初始化,且不能更改
// 如果是局部常量,就使用驼峰命名规则即可
let blog = "http://www.huangyibiao.com";

// 如果是全局的常量,个人习惯以小写k开头,后面单词首字母大写
// 本人不习惯看全大写,因此更喜欢这种风格
let kWebsiteTitle = "标哥的技术博客";

当然,有的时候我们是不能省略类型说明的,比如Float和Double类型,若我们期望的是Float类型,则必须指定数据类型为Float类型,否则默认编译器就会推断为Double类型:

// 指明数据类型
let maxCost: Float = 2000.0

// 最大并发数量设置为全局,则可以这么定义
// 可以指定类型为Int,则指定也没有关系,编译器会推断出来为Int
let kMaxCocurrentCount: Int = 4

可能注意到了代码句后面的分号可有可无,通常都不添加。

变量

声明变量使用关键字var来声明。

类型自动推断

// 类型自动推断
// 推出类型为Int <=> var x: Int = 1
var x = 1

// 推断出类型为String <=> var string: String = ...
var string = "编译器自动推断出类型String"

一行声明多变量

// 可以一行声明多个变量
// 虽然可以一行声明多个变量,但是建议不要这么做,一行声明一个更可读
var x1 = 0, x2 = 1, x3 = 2

// 连续多个变量声明时,只需要对最后一个变量指定类型,其它几个变量类型也会被声明为指定的类型
var s1, s2, s3: String

// 抱错,类型不一致,s1是String类型
// s1 = 1
s1 = "s1"
print(s1)

虽然可以一行声明多个变量,也可以只指定最后一个变量的数据类型,但是不推荐这么做。在开发中一定要清晰,因此最好一行只声明一个变量。

类型标注

// 变量声明时,可以明确指定类型
var xx: Int = 0

添加类型标注的方式是很简单的,就是在变量名的后面添加冒号跟着数据类型。比如上面的就是变量名xx后面跟着: Int。为了更美观,通常会在冒号后面添加一个空格。

分号可有可无

// 一般情况下,在swift中分号是可有可无的
var seg = 1;
var seg1 = 1

但是,如果一行声明多个变量,像这样就必须添加分号:

var seg11 = 1; var seg111 = 2

如果不添加分号就会抱错,因为编译器也分不清了。

整数

// Swift 提供了8,16,32和64位的有符号和无符号整数类型。分别为:
// (U)Int8,16,,32,64
//
// 定义有符号整数,基本都是使用Int就可以了
// Int
// 一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int,
// 长度与当前平台的原生字长相同:
//
// 在32位平台上,Int和Int32长度相同。
// 在64位平台上,Int和Int64长度相同。
var number: Int = 10
print(Int.max)
print(Int.min)

进制

// 一个十进制数,没有前缀
// 一个二进制数,前缀是0b
// 一个八进制数,前缀是0o
// 一个十六进制数,前缀是0x
var decInt = 17
var binInt = 0b10001
var octInt = 0o21
var hexInt = 0x11

类型转换

Swift是强类型语言,不允许隐式转换,因此类型不相同时必须手动转换类型,不能赋值,否则编译器会报错:

var intType = 10
var doubleType = 10.0
// 报错,类型不一致,必须手动转换
//intType = doubleType
intType = Int(doubleType)

类型别名

使用类型别名,通过关键字typealias来声明,格式为:typealias 类型别名 = 原类型名。使用类型别名的好处是使语义更明确。

typealias IntType = Int

// IntType其实就是Int
let valueObject: IntType = 10

print(valueObject)

Bool值

Swift中的真假值用true、false表示,与objective-c中的YES、NO表示的意思一样的。

var isDoing: Bool = false

var isSuccessful = true

Unicode字符变量

我们可以使用中文命名,也可以使用表情符号命名,但是真正开发中是不允许的,因为这会引来很多麻烦。再说,这么多年来都习惯了英文命名,用中文命名会让很多人无法接受的,而且也不好输出。

“`
var 你好 = “你好世界”
var

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值