Swift 对比学习 (一)
Swift相对Objective-C来说,有过之而无不及,并与Objective-C无缝混编,可谓利器。在Swift中可以看到不同的编程语言的影子,天下语言一大抄,这样也好,减低了不同语言的学习成本。
let 和 var,相比只有var的语言多了个选择,如果变量的值不会被修改,那就用let吧,意图更加明确。
var sideLength: Double ,Pascal也是这样声明变量类型,TypeScript也是这样干的,还是比较好接受的。
行尾不用加分号(当然你要非得加也不错),一返C语言家族的常态,也许学Pascal多些?
getter,setter大家已经习以为常了,C#,Java都有,不过willSet,didSet确很有新意。
enum Rank: Int
{
case Ace = 1
case Tow, Three, Four
case Jack, Queen, King
}
枚举成员用case声明还是很有趣的
protocol等同于C#的interface;extension基本上相当于C#的扩展方法,但更强大些,可以扩展现有类去实现特定的protocol.
泛型,C#早已有之,Java也弃暗投明,话说它们的祖宗是不是C++的template呀?
println完美替代NSLog, 字符串插值(string interpolation)也很给力,C#6据说也有了?
元组(tuples)还是很方便实用的,C#目前只能借助类库实现类似功能。
optionals基本等同于C#的nullable类型,就是叫法不一样,还写法都一样。不过Swift里多了个隐式解析可选(implicity unwrapped optionals),用!标记,第一次付值之后,就不用再判断空了,可以直接当作声明的类型使用。
基本运算符与C基本相同,多了个浮点求余?
区间运算符,明显Pascal系列的,C系列好像有人这样用过,好东西还是值得学习的。它还分区间(...)和半区间(..)
字符串,Unicode编码,转意写法与C相同。
数组,与C#相似,使用Array<SomeType>类型,SomeType[]为简单写法。数组支持+=和区间运算符还是带来不少方便。
for-in 与C#的foreach无异
Dictionary<KeyType, ValueType>就按.NET里的Dictionary<K,V>来用吧,差不了多少。
都看到这里了,还有见到Swift中用到new,莫非new跟本就不是关键字?
func 方法定义
关联值(Associated Values),第一眼看上去最不理解的东西,不过又好像很有用的样子? 它可以把一个常量或变量值与一个枚举值关联起来,使用时可以通过枚举值直接获取相关联的常量或变量值。
class 和 struct 与C#差不多,不过成员没有private,public的说道,有类型方法(Type Methods)就是C#的static method,Swift中用class func表示,类静态成员还是用static, 不太make sense啊?
类的构造函数用init(),构造函数的参数很奇特,分内部名和外部名(为了对应ObjectiveC?),可以使用convenience init()内部调用其它构造函数(如:self.init(name:"[Unnamed]"))继承用冒号,调父类成员用super, 可以override 方法,属性或属性观察器(Property Observer), @final可以防止重写.
反初始化(deinit)? (神命名啊),就按C#的Dispose()理解吧。
恒等运算符(===, !==) 学javascript的?
今天就先看这些吧,以上内容纯属现学现卖,如有错误望指正。
Swift 对比学习 (一)的更多相关文章
- Swift 对比学习 (二)
书接上回,可以作为参数和返回值的函数数型,以及嵌套函数,绝对继承了动态语言的优良传统: 函数嵌套了,那必然少不了闭包问题,Swift的闭包表达式语法也蛮有趣的. { (paraeeters) -> ...
- 突破瓶颈,对比学习:Eclipse开发环境与VS开发环境的调试对比
曾经看了不少Java和Android的相关知识,不过光看不练易失忆,所以,还是写点文字,除了加强下记忆,也证明我曾经学过~~~ 突破瓶颈,对比学习: 学习一门语言,开发环境很重,对于VS的方形线条开发 ...
- 一份关于Swift语言学习资源的整理文件
一份关于Swift语言学习资源的整理文件 周银辉 在这里下载 https://github.com/ipader/SwiftGuide
- MongoDB(五)mongo语法和mysql语法对比学习
我们总是在对比中看到自己的优点和缺点,对于mongodb来说也是一样,对比学习让我们尽快的掌握关于mongodb的基础知识. mongodb与MySQL命令对比 关系型数据库一般是由数据库(datab ...
- Swift入门学习之一常量,变量和声明
版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...
- Java程序员学C#基本语法两个小时搞定(对比学习)
对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import ...
- Swift开发学习(两):Playground
Swift开发学习:Playground 大约 对于软件用户.游戏玩家,我一直提倡用户体验.也是用户,是各种开发工具的使用者.也会喜欢用户体验做得好的工具软件.这次苹果想开发人员所想,提供了一个能够玩 ...
- Swift基础学习
Swift基础学习 http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...
- [转] Java程序员学C#基本语法两个小时搞定(对比学习)
Java程序员学C#基本语法两个小时搞定(对比学习) 对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. ...
随机推荐
- Haproxy+Keepalived高可用负载均衡详细配置
本文所使用的环境: 10.6.2.128 centos6.5 10.6.2.129 centos6.5 VIP 为10.6.2.150 要实现的目标: 实现10.6.2.128和10.6 ...
- SVN 集中式版本控制软件
简介: 目前流行的版本控制软件中,SVN ( 集中式版本控制 ) 算是使用范围更广.且使用时间更早的一款了,现在 git ( 分布式版本控制 ) 更火爆一点. 一.安装svn [root@localh ...
- 遇到IIS7配置PHP出现403和404错误的解决办法
服务器要配置PHP,总是出现403错误.服务器是新装的,操作系统是windows server 2008 R2,装的IIS7. IIS里PHP和本地服务器对比了好几遍,都没到出错的原因,后来通过cmd ...
- spring+hibernate实体类注解详解(非原创) + cascade属性取值
@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...
- Linux新建用户无法使用tab补全的修改办法
原因: Root用的是/bin/bash 新增用户默认用的是/bin/sh,用ls -l /bin/sh发现 ->dash,修改下连接即可正常使用:
- U盘启动盘 安装双系统 详细教程
U盘启动盘 安装win7+linux双系统 最近在看鸟哥的linux 私房菜 ,看到多重系统那部分,自然的安装多重系统的激情由此而燃.在网上看了很多资料,感觉都不全.经过艰辛的摸索,终于被我发现了一个 ...
- 数字与字母 随机数小demo
public String generateRandomId(){ String chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHI ...
- 关于webstorm 对 vue的设置
1. 首先安装vue插件,安装方法: setting --> plugin ,点击plugin,在内容部分的左侧输入框输入vue,会出现两个关于vue的插件,点击安装即可.安装完成后,就可 ...
- Selenium2+python 常用函数汇总
1. driver = webdriver.Chrome() --新建实例 2.driver.find_element_by_id("username") ---通过标签属性id ...
- Linux操作系统安装JDK
1.利用winSCP将要安装的jdk包传到Linux上. 2.命令 tar -zxvf [jdk的安装包],安装包须是tar的包才行. ep:tar -zxvf server-jre-7u80-lin ...