Swift教程之基础数据类型详解


基础类型

虽然Swift是一个为开发iOS和OS X app设计的全新编程语言,但是Swift的很多特性还是跟C和Objective-C相似。

Swift也提供了与C和Objective-C类似的基础数据类型,包括整形Int、浮点数Double和Float、布尔类型Bool以及字符串类型String。Swift还提供了两种更强大的基本集合数据类型,Array和Dictionary,更详细的内容可以参考:Collection Types。

跟C语言一样,Swift使用特定的名称来定义和使用变量。同样,Swift中也可以定义常量,与C语言不同的是,Swift中的常量更加强大,在编程时使用常量能够让代码看起来更加安全和简洁。

除了常见的数据类型之外,Swift还集成了Objective-C中所没有的“元组”类型,可以作为一个整体被传递。元组也可以成为一个函数的返回值,从而允许函数一次返回多个值。

Swift还提供了可选类型,用来处理一些未知的不存在的值。可选类型的意思是:这个值要么存在,并且等于x,要么根本不存在。可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,而可选类型对所有的类型都可用,并且更安全。可选类型是大部分Swift新特性的核心。

可选性类型只是Swift作为类型安全的编程语言的一个例子。Swift可以帮助你更快地发现编码中的类型错误。如果你的代码期望传递的参数类型是String的,那么类型安全就会防止你错误地传递一个Int值。这样就可以让编程人员在开发期更快地发现和修复问题。

常量和变量

常量和变量由一个特定名称来表示,如maximumNumberOfLoginAttempt 或者 welcomeMessage。常量所指向的是一个特定类型的值,如数字10或者字符”hello”。变量的值可以根据需要不断修改,而常量的值是不能够被二次修改的。

常量和变量的声明

常量和变量在使用前都需要声明,在Swift中使用let关键词来声明一个常量,var关键词声明一个变量。如下面例子:

Type Safety and Type Inference。而上面的welcomeMessage的例子中,初始化值没有被给出,所以更好的办法是指定welcomeMessage变量的类型而不是让Swift隐式推导类型。

常量和变量的命名

Swift中可以使用几乎任何字符来作为常量和变量名,包括Unicode,比如:

String Interpolation

注释

不参与编译的语句称为注释,注释可以提示你代码的意图。Swift中的注释和C语言中的一样,有单行注释

Type Safety and Type Inference. 

5、浮点数

浮点数就是像3.14159,0.1,-273.15这样带分数的数字。浮点数可以表达比Int范围更广(更大或更小)的数值。swift支持两种带符号浮点数类型:

1.Double类型能表示64位的有符号浮点数。当需要表的数字非常大或者精度要求非常高的时候可以使用Double类型。
2.Float类型能表示32为的有符号浮点数。当需要表达的数字不需要64位精度的时候可以使用Float类型。

注 Double 至少有15位小数,Float至少有6位小数。合适的浮点数小数位数取决于你代码里需要处理的浮点数范围。

6、类型安全和类型推导

Swift是一种类型安全的语言。类型安全就是说在编程的时候需要弄清楚变量的类型。如果您的代码部分需要一个字符串,你不能错误地传递一个整数类型。

因为Swift是类型安全的,它会在编译的时候就检查你的代码,任何类型不匹配时都会报错。这使得编程人员能够尽快捕获并尽可能早地在开发过程中修正错误。

类型检查可以在使用不同类型的值时帮助避免错误。但是,这并不意味着你必须指定每一个常量和变量所声明的类型。如果不指定你需要的类型,Swift使用类型推导来指定出相应的类型。类型推导使编译器在编译的时候通过你提供的初始化值自动推导出特定的表达式的类型。

类型推导使Swift比起C或Objective-C只需要更少的类型声明语句。常量和变量仍然显式类型,但大部分指定其类型的工作Swift已经为你完成了。

当你声明一个常量或变量并给出初始值类型的时候,类型推导就显得特别有用。这通常是通过给所声明的常量或变量赋常值来完成的。 (常值是直接出现在源代码中的值,如下面的例子42和3.14159 。 )

例如,如果您指定42到一个新的常数变量,而不用说它是什么类型,Swift推断出你想要的常量是一个整数,因为你已经初始化它为一个整数

Extensions。

整数和浮点数转换

整数和浮点类型之间的转化必须显式声明:

ControlFlow有详细介绍。 Swift的类型安全策略会防止其他非布尔类型转换为布尔类型使用,比如
Functions with Multiple Return Values

可选类型

在一个值可能不存在的时候,可以使用可选类型。这种类型的定义是:要么存在这个值,且等于x,要么在这个值 不存在。

注:这种类型在C和Objective-C中是不存在的,但是Objective-C中有一个相似的类型,叫nil,但是仅仅对对象有用。对其他的情况,Object-C方法返回一个特殊值(比如NSNotFound)来表明这个值不存在。这种方式假设方法调用者知道这个特殊值的存在和含义。Swift的可选类型帮助你定义任意的值不存在的情况。

下面给出一个例子,在Swift中String类型有一个叫toInt的方法,能够将一个字符串转换为一个Int类型。但是需要注意的是,不是所有的字符串都可以转换为整数。比如字符串”123″可以转换为123,但是”hello, world”就不能被转换。

Unowned References and Implicitly Unwrapped Optional Properties. 

隐式解包的可选类型本质是可选类型,但是可以被当成一般类型来使用,不需要每次验证值是否存在。如下的例子展示了可选类型和解包可选类型之间的区别。

Subscripts和Functions

注:断言会导致程序运行的中止,所以如果异常是预期可能发生的,那么断言是不合适的。这种情况下,异常是更合适的。断言保证错误在开发过程中会被发现,发布的应用里最好不要使用。


« 
» 

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3