Swift的基本类型和流程控制
Swift 是一门静态的强类型语言。它以简单、干净、可读性好等特点著称。
1、 为什么是静态语言?
首先静态语言比之动态语言,更具有安全性。它不允许类型之间自动的进行转换,必须要显示的转换。Swift是类型安全的,它会在编译的时候就检查你的代码,任何类型不匹配时都会报错。这使得编程人员能够尽快捕获并尽可能早地在开发过程中修正错误。但是,这并不意味着你必须指定每一个常量和变量所声明的类型。如果不指定你需要的类型,Swift使用类型推导来指定出相应的类型。类型推导使编译器在编译的时候通过你提供的初始化值自动推导出特定的表达式的类型。类型推导使Swift比起C或Objective-C只需要更少的类型声明语句。常量和变量仍然显式类型,但大部分指定其类型的工作Swift已经为你完成了。当你声明一个常量或变量并给出初始值类型的时候,类型推导就显得特别有用。这通常是通过给所声明的常量或变量赋常值来完成的。
例如:你要声明一个用户名字符串常量,并为他赋值叫“json”.
let userName = "json"
不必指定什么类型,在编译时会通过类型推导的机制将常量userName 自动设为 赋的值的类型。
2、什么叫强类型语言?
即变量或者常量,必须要先定义然后才能使用,否则会报错。
好了 ,言归正传,下面给大家介绍下swift的基本类型和流程控制
3、基本类型
包括整形Int、浮点数Double和Float、布尔类型Bool以及字符串类型String。Swift还提供了两种更强大的基本集合数据类型,Array和Dictionary。这里要提到。除基本数据类型外,swift还有一个称为“元祖”的数据类型,这是他独有的。后面我会给大家解释。
4、常量和变量
常量和变量的命名方式还是采用大家熟悉的”驼峰“命名。常量指向一个特定类型的值,一旦赋值,不能再次修改。变量也是指向一个特定类型的值,但它可以根据需要做出修改。另外swift的宗旨是简洁,所以每行可不写分号
前面说了,swift是强类型的语言,所以它的常量和变量需要先声明再使用。那么常量和变量怎么声明呢?
常量的声明:
let开头,表明你要声明一个常量 后接变量名,一般采用驼峰命名方式命名,用=符号连接 ,再接你要赋的值。如果这时你不指定初始值,需指定常量类型。
例如: let usreName = "tom" //声明时赋值
let userName String ///声明时不初始化值
userName = "tom"
注意:由于swift的语法要求规划化,所以值和运算符之间要么都不留空格,要么都留空格。
值得注意的是在声明字符时有所不同,学过其他高级语言的朋友都知道,其他高级语言在声明字符时一般把值用单引号引住,然swift有所不同,它的字符赋值还是用双引号,但要用注解声明。
例如:
var ch :Character = "c" // 字符值 必须用双引号,并且是一个字符
用let开头声明的常量,在赋值后,不能做修改。
变量的声明:
var 开头,其他的于常量的声明一致,这里就不在详细描叙,大家参照常量的声明。
5、流程控制
if esle:
例如:
let i = 1
if i {
print("编写错误!")
}
就swift 而言 ,这种写法是错误的。i是一个常量,不是一个表达式,也就不能当成是boolean类型来用。
正确的编写应该是:
let i = 1
if i ==1 {
print("编写正确!")
}
for :有两个形式。
第一种:例如:
for var i = 0;i < 1000;i++{
print("说一千遍我爱你!")
}
第二种:例如:
let array = [0,1,2,3,4,5,6,7,8,9]
for a in array {
print("\(a),") //输出结果为:0,1,2,3,4,5,6,7,8,9
}
第二种方法相比于第一种,最明显的是不用知道数组的长度,就可以遍历出每个元素。
while :也是循环控制语句。可以和for之间完美转换。例如:
var i = 0
while i < 1000 {
print("说一千遍我爱你!")
i++
}
repeat while:循环控制语句,跟java的do while一样的作用,都是先执行一次,再判断条件。例如:
var i = 0
repear {
print("说一千遍我爱你!")
i++
} while i < 1000
switch:分支判断语句。以前我们有的朋友也学过,但swift中switch的作用更加强大和突出了。它可以接收任意的常量和变量,只要前后的类型保持一致。例如:
let i = "abc"
switch i{
case "abc":
print ("abc")
default:
print ("其他情况")
}
注意:Swift要求switch 是个完整的结构,也就是说switch中必须有一个case以上和一个default。
好了,今天的分享就到这。希望可以帮到刚刚学习ios或者想要学ios的朋友们,我也是新手,有不足和不对的地方求大神指正。让我们一同进步!大家可以关注我的微博http://www.cnblogs.com/lb0129/
Swift的基本类型和流程控制的更多相关文章
- ios数据的基本类型和流程控制
swift的声明变量方式和js是类似的.基本类型基本都和java的差不多,多了字符类型. let:用于声明常量: var:用于声明变量: 基本类型有:double,float,Int(数字类型):bo ...
- Swift中文教程(三)--流程控制
原文:Swift中文教程(三)--流程控制 Swift用if和switch编写条件控制语句,用for-in,for,while和do-while编写循环.条件控制语句和循环语句中,小括号是可选的,但花 ...
- iOS开发Swift篇—(六)流程控制
iOS开发Swift篇—(六)流程控制 一.swift中的流程控制 Swift支持的流程结构如下: 循环结构:for.for-in.while.do-while 选择结构:if.switch 注意:这 ...
- 李洪强iOS开发Swift篇—06_流程控制
李洪强iOS开发Swift篇—06_流程控制 一.swift中的流程控制 Swift支持的流程结构如下: 循环结构:for.for-in.while.do-while 选择结构:if.switch 注 ...
- Swift学习——格式控制符和元组流程控制(二)
Swift中的格式控制符和元祖 (1)首先介绍一下元祖,元祖是关系型数据库中 比如学生表中的姓名,年龄,电话等 定义例如以下 var studentinfo = ("jhon", ...
- swift_简单值 | 元祖 | 流程控制 | 字符串 | 集合
//: Playground - noun: a place where people can play import Cocoa var str = "Hello, playground& ...
- Java 关键字、标识符、注释、常量与变量、数据类型,算术、赋值、比较、逻辑、位、三元运算符和流程控制、break、continue【3】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...
- python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
- Day1 Python基础学习——概述、基本数据类型、流程控制
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...
随机推荐
- C# DataGridView控件清空数据完美解决方法
C# DataGridView控件绑定数据后清空数据在清除DataGridview的数据时: 1.DataSource为NULL(DataGridView.DataSource= null;)这样会将 ...
- JAVA异常初步
1,1个图.Throwable是所有异常类的老祖宗,万恶之源.Error正常是系统级错误,控制不了,Exception类又分RuntimeException及别的异常,RuntimeException ...
- 修复 Firefox 下本地使用 Bootstrap 3 时 glyphicon 不显示问题
本地开发使用 Firefox 调试,遇到了 glyphicon 图标不显示的问题,期初以为是路径问题,搜索一大圈后找到了答案,原来这是一个安全性的问题,于是问题就好办了,解决方案如下: 1. 在Fir ...
- 【转】 教大家防止Jar包被反编译
http://blog.csdn.net/zhengjingle/article/details/50833746 在需要放置编译的java类中加一个无用的class,然后再把class的名字修改了, ...
- 2013 acm 长沙网络赛 G题 素数+枚举 Goldbach
题目 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3856 先预处理求出两个素数的和与积,然后枚举n-prime和n/pr ...
- 【译】RabbitMQ:远程过程调用(RPC)
在教程二中,我们学习了如何使用工作队列在多个工作线程中分发耗时的任务.但如果我们需要去执行远程机器上的方法并且等待结果会怎么样呢?那又是另外一回事了.这种模式通常被称为远程过程调用(RPC). 本教程 ...
- ubuntu 15 安装cuda,开启GPU加速
1 首先要开启GPU加速就要安装cuda.安装cuda,首先要安装英伟达的驱动.ubuntu有自带的开源驱动,首先要禁用nouveau.这儿要注意,虚拟机不能安装ubuntu驱动.VMWare下显卡只 ...
- Android进程间的通信之AIDL
Android服务被设计用来执行很多操作,比如说,可以执行运行时间长的耗时操作,比较耗时的网络操作,甚至是在一个单独进程中的永不会结束的操作.实现这些操作之一是通过Android接口定义语言(AIDL ...
- WPF 动态更换样式文件
ApplySkinFromMenuItem("Style/BigImgStyle.xaml", "Style/FileListStyle.xaml"); //换 ...
- 自定义指令directive
1.自定义指令 在angular中,module下面的directive方法用于创建自定义指令,用法: m1.directive('myTab',function(){ return { restri ...