[分享] Swift2.0 基础语法大全 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
maiziedu
V2EX    iOS

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

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

    作为 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     Solana     1187 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:01 PVG 01:01 LAX 09:01 JFK 12:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86