首页 > 其他分享 >Swift与Objc(传统语言)的异同

Swift与Objc(传统语言)的异同

时间:2023-02-07 15:03:20浏览次数:40  
标签:语句 case 异同 Swift switch 元组 Objc swift id


本文旨在简明扼要的总结swift语言中与objc传统语言的差异点。帮助自己和大家学习。

一,swift基础语法

1.swift的表达式可以不指定数据类型,因为可以自动推荐数据类型。

例:var a = 10;与var a:int = 10;是同义。编译器会根据=后面的数值推断出来。

2.表达式后可不用分号。除非几个表达式连在一块需要;冒号分割。

3.swift中运算符,== 等于,a等于b时返回true,否则false。!=不等于,与==恰恰相反。

   ===恒等于,a与b同引用同一个实例时返回true,否则为false。===与==含义不同。==是比较两个引用的内容是否是一个实例。!==不恒等于,与===恰恰相反。===和!==一般不用于引用类型之外的其他类型的比较。由于Swift中引用类型只有类,所以===和!==一般只比较类的实例,而结构体,int,double,枚举等等都是值类型,不能用于比较。但是数据Array是结构体的例外,他虽然是结构体,但他可以使用===和!==进行比较

4.在objc中使用NSLog(@"");打印输出便于调试,但是在swift中使用println(“\()”)。

5.在swift中引入了新的数据结构元组。元组是关系数据库中的基本概念,元组表中的一条几率,每列就是一个字段。因此在二维表里,元组也成为记录。

var student = ("1000","李四")和 var student = (id:"1000",name:"李四")这两段话都表示声明并初始化了元组类型的studnt变量。第一种可以使用.语法来获取字段,student.0访问id第一个字段。第二中写法可以通过字段名字来访问其中内容。student.id来访问id字段。

6.在控制语句中分支语句的switch有了变化。一,在传统语言中如objc,C,C++,java等只能比较离散的单个整数变量。但是swift中的switch可以使用整数,浮点数,字符,字符串和元组类型,而且它的数值可以是离散的也可以是连续的范围。二,swift中的switch语句case分支不需要显示的添加break语句,分支执行完成就会执行switch语句。三,在switch中使用范围匹配,如switch 数值 case 90...100:case 80..<90: 我们可以看到这个case选择是一个范围区间。追加一点知识...表示闭区间,..<半闭区间。四,使用元组做switch的时候还可以将匹配的值绑定到一个临时的变量和常量,这些常量和变量能够在该分支李使用,被称为值绑定。还可以使用where语句,对条件进行过滤,类似于SQL语句中的where字句。例, var student = (id:"1000",name:"李四",age:32,chineseScore:90,EnglishScore:91)  case(_,_,let age,90...100,90...100)where age > 0;   _,_,可以忽略元组中对应的那个id和name的值。let age就是值绑定,可以在下面用。where age > 0可以过滤掉age>0的值得。90...100对应元组中的chineseScore,第二个90...100对应EnglishScore。

7.传统的跳转语句有continue,break,return,在swift增加了fallthrough,fallthrough是贯通语句,只能使用在switch中使用,为了额贯通case分支设计的,或者这种语句我们用的很少,但是作为一门编程语言,还是要照顾用户的少数特殊需求。switch中遇到fallthrough默认会执行下一个case,而不是传统的执行完case就break了。

标签:语句,case,异同,Swift,switch,元组,Objc,swift,id
From: https://blog.51cto.com/u_15952281/6042135

相关文章

  • 查询类方法indexOf和includes异同点
    查询类方法indexOf和includes异同点相同处可以判断数组或字符串是否包含某个元素。第一个参数为要查找的元素,第二个参数为查询开始的位置。字符串执行匹配时,第一个参......
  • Swift 4 JSON 解析指南
    Apple终于在Swift4的Foundation的模块中添加了对JSON解析的原生支持。虽然已经有很多第三方类库实现了JSON解析,但是能够看到这样一个功能......
  • swift4把字符串中间空格去掉
    swift4把字符串中间空格去掉也不知道这帮人怎么想的,设计的字符串处理麻烦死了,我先不说效率到底怎么样,就从写法上到现在没理解swift4处理字符串怎么搞......
  • "_OBJC_CLASS_$ [文件名1]referenced from in[文件名2]:ld: symbol(s) not found问题
    说实话开发一年多了,遇到了至少三次以上这种问题,很困惑,也很难搞觉得,其实很简单解决办法,在buildPhases中添加文件名1的.m文件即可了。"_OBJC_CLASS_$"PackageTourCustomAnnot......
  • lsyncd 配合 rsync 实时差异同步节点文件
    目录说明书部署客户端安装rsync服务编写配置文件创建rsync用户创建目录并赋权创建认证用户和密码文件启动rsync查看rsync是否启动成功部署服务端安装rsync服务创......
  • Swift Codable 自定义默认值解码
     前言最近我们公司服务端修改了某个接口返回数据结构,减少了一些字段,导致iOS这边codeable解码失败,获取不到正确的数据信息,相关业务无法完成。不想使用可选值类型,可以使用......
  • Swift开篇006->枚举
    PART_A枚举简介定义:一组相关的值定义了一个共同的枚举类型语法格式enumDirection{caseEastcaseSouthcaseWestcaseNorthcaseNorthWest,EastSou......
  • Swift开篇007->类和结构体
    PART_A类&结构体对比共同点定义属性:存储值定义方法:提供功能定义附属脚本:访问值定义构造器:生成初始化值通过扩展增加默认实现的功能实现协议以提供某种标准功能类的附加功能......
  • Swift开篇009->方法
    PART_A实例方法简介实例方法:可属于某个特定类、结构体或枚举实例的方法实例方法能隐式访问它所属类型的所有其他实例方法和属性实例方法只能被它所属的类的某个特定实例调......
  • Swift开篇004->集合
    PART_O集合简介集合长度默认可变,若分配成常量,则其大小和内容皆不可变Swift集合类型(必须通过泛型明确存储值)​​Arrays​​:数组,有序可重复​​Sets​​:集合,无序不重复​​......