V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
maiziedu
V2EX  ›  iOS

[分享] Swift2.0 基础语法大全

  •  
  •   maiziedu · 2015-12-03 15:35:38 +08:00 · 2453 次点击
    这是一个创建于 3285 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为 iOS 开发的最新基础语言, swift 语言的重要性不用多说,特别是随着 2.0 的问世,越来越多的人开始研究、使用 swift 编程语言。今天小编在网上搜罗了一些 swift2.0 基础语法相关知识,分享给大家,一起学习吧~~

    变量类型&数值计算
    1 、 Float/Double/Int 可强制用 String() 转换,通用类型转换可用”(var)”, String 转换 Int 可用 Int()
    2 、变量名大小写区分
    3 、类型推断支持 float=1+0.3, 但不支持 float=int+0.3 ,即 a=b(为一个整数变量)+0.3 非法
    4 、元组类似于简单 typedef ,可定义不同类型数据为一组,但无指针和数组;强制类型定义不可与元素命名共存
    5 、赋值语句 不返回值 ,语句执行成功与否不能作为 bool 值赋给变量或作为判断条件,即 succ=(b=a+1)非法
    6 、求余运算%支持实数,但 不准 !!!因为是实数操作,能用二进制表示的正确,否则无法获取正确值。如(1 % 0.25) OK, (1 % 0.2)则结果不对( 0.2 无法准确表示的原因)
    7 、基础数据类型都是结构体
    8 、枚举的值是 case 名本身,而不是 Int 的另称

    流程控制
    1 、 if 接受 可选变量/绑定 作为判断条件, assert 不行
    2 、 assert(bool, string)的意义表示 条件不成立 的话则退出,所以判断条件要写永远成立的那种;正式版中不起作用
    3 、 for-in 循环中间用来做 index 的变量不需要定义,在循环内部不可改变,即使定义为变量;跟 C 相似的 for (;;)循环(事实上不需要括号)却相反: 必须定义,循环内可变
    4 、 case 语句中,不需要写 break ,一个 case 后必须有语句; default 则可以在 case 全范围覆盖条件时省略,否则必须写
    5 、 case 语句的判断条件可以重复,但只会执行第一个匹配
    6 、 case 中的 fallthrough 不能用在有有变量 pickup 的 case 中
    7 、 continue & break 有一个类似 goto 的用法,可以跳转出不止一轮循环,但只能用于循环内

    字符串
    1 、不必关心内存,指针等问题,已封装
    2 、大量 API 使用 Foundation ,即继承自 oc
    3 、与数组不同,其 API 中的 Index 是范型而不是整型
    4 、字符串之间可以相加,字符不行
    5 、每个字符都是一个 可扩展的字母集 ( Extended Grapheme Clusters ),可能由一个或多个 Unicode 标量构成,类似于偏旁部首组成一个字
    6 、对于字符来说,不可使用 + 运算来组成字母集,即使相加也是几个字符而不会自动生成一个;但对于字符串,会自动归集
    7 、使用()时,括号内不能有转义符,包括“”
    8 、和 C 语言不同,字符串并非字符数组,在 Swift 里 String.characters 才是和数组类似的存在,拥有类似的属性和方法

    函数调用
    1 、返回值可以为空( Void ), Void 实际上是一个空的元组
    2 、参数可加外部参数名,有外部参数名的参数调用时必须全部强制使用外部参数;也可加默认参数值;有默认值的参数调用时必须加上外部参数名,除非强制用占位符 _ 命名外部参数名
    3 、可变参数最多一个且必须放在最后
    4 、即使参数为 var ,也不可改变函数外的值,需要用 inout (即传指针)
    5 、 C 中函数本质为指针,指向入口; Swift 中函数为 Function Type 变量,可以赋值,调用,作为参数传递,作为返回值等,只要参数&返回值定义匹配即可

    数组 & 字典 & 集合
    1 、数组可以理解为一个相同元素链表
    2 、可以使用 arr[a … b]=[…] 来做替换操作,甚至增加减少元素个数,但表达式中下标不能越界
    3 、字典存储数据对, 无序 ,不可用下标访问,但 enumerate 可以拿到一个 index
    4 、字典的 key 是唯一的,相当于有对应键值的关键字集合,对应的键值可以相同
    5 、字典可以用 .keys & .values 来分别获取关键字和键值的数组,但只是罗列,不去重
    6 、遍历数组用“ for i in 0.. < arry.count ”时, 记得别弄错区间!!
    7 、如果没有指定类型,数组 默认使用 Object 类型 ,本质上是 OC 的 NSArray ,且无法使用 append (使用 count&repeatedValue 构造器除外,会自动推导类型)
    8 、[ [ [Type] ] ] 申明的多维数组不是严格 N 维矩阵,相同维度上的元素数量可以不同,且可以通过赋值改变,更像是多维链表

    枚举
    枚举不是单纯 Int 值的别名,可以是任意类型

    以上就是 Swift2.0 中的一些语法方面的基础知识,由于篇幅问题,只整理了一部分,大家可以补充分享。

    相关文章:《 swift 中如何使用工具来分析代码》 http://www.maiziedu.com/group/article/9554/
    文章来源: iOS 开发和七七八八

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2629 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 10:57 · PVG 18:57 · LAX 02:57 · JFK 05:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.