Swift是本届WWDC大会苹果推出的一门新开发语言,开发者网站上已经放出了这门新语言的介绍、教程和手册,如果手里有一台iOS设备的话,通过苹果的iBooks应用,从它的官方书店里搜索Swift,可以下载它的官方手册电子书版。

为什么苹果要推出一门新的语言?现在苹果平台的主力开发语言,Objective-C已经无法再进化,无法再发展了,已经无法再赶上现代编程语言前进的步伐!了解Objective-C历史及原理的人都知道,Objective-C是门抄捷径的语言,它基本上没有发明新语法,仅仅是将Smalltalk的消息接口机制套在了C语法上,这虽然让它既拥有C语言的高效率和操纵系统一切的能力,也拥有了像Perl、Ruby等动态语言的动态特性,但是它的发展已经受限于古老的C语法,及C/C++令人恶心到吐的内存出错,想要在开发效率和丰富的表达能力上追赶C#、Go等语言已经是不可能完成的任务,因此干脆推出一门从头重新设计的语言,已经不是折腾不折腾的问题,而是必须的事情了。

虽然说Swift是门新语言,但是并非什么重新发明的语言,而是各种先进语言的大杂烩!例如很多网友第一眼看到它用func关键字定义函数就说这不是Go语言吗?当然了它不是Go的简单克隆品,像前面所说,是掺入了各种目前流行语言的特色(我个人认为Scala影响的最多)。下面我举几个简单的例子,列举我认为的语言出处,希望能大概的看到它的设计哲学和语言特色。事先声明一下,个人知识所限,有些出处可能说的不准确,还请见谅指正,感谢。

1.声明变量

Swift是门强类型语言,引入了其它强类型语言的类型推导机制。
声明一个变量

var i = 100

声明一个常量

let i = 100

变量与常量使用不同的关键字,这个应该是模仿Scala的var和val,let关键字则应该是来自Mozilla的rust语言,不过含义正好相反。

2.类型声明后置

var name:String = "Swift"

3.所有的函数现在都是闭包了

func getGasPrices() -> (Double, Double, Double) {
return (3.59, 3.69, 3.79)
}

4.类定义终于使用class了

5.定义属性使用set/get

var sideLength : double
var perimeter: Double {
get {
return 3.0 * sideLength
}
set {
sideLength = newValue / 3.0
}
}

C#最早发明的语法。

6.重载父类方法需要加override关键字

override func simpleDescription() -> String {
return "A square with sides of length \(sideLength)."
}

来自Java的@Override注解。

7.enum是一种类定义

可以在enum里加入方法,我记得这是Java的,C++11也引入了相似的概念和写法。

8.引入了(或者说保留?)struct,它和class不同的地方在于,变量赋值时,struct变量是内容复制,class是引用复制,这个毫无疑问,C#的东西。

9.范式,可以创建方法模板

func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {
var result = ItemType[]()
for i in 0..times {
result += item
}
return result
}
repeat("knock", 4)

Swift初步介绍的更多相关文章

  1. Swift 初步了解

    Swift 初步了解 前言: 本篇博客会结合OC对Swift进行简单介绍. OC 用NSLog输出日志 NSLog(@"旭宝爱吃鱼"); Swift 用print输出日志 prin ...

  2. 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍

    我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...

  3. 三、Android学习第三天——Activity的布局初步介绍(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下 ...

  4. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  5. mxgraph进阶(二)mxgraph的初步介绍与开发入门

    mxgraph的初步介绍与开发入门 前言 由于小论文实验需求,需要实现根据用户日志提取出行为序列,然后根据行为序列生成有向图的形式,并且连接相邻动作的弧上标有执行此次相邻动作的频次.为此,在大师兄徐凯 ...

  6. 新浪微博API使用初步介绍——解决回调地址的问题

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #新浪微博API使用初步介绍——解决回调地址的问题 #http://blog.csdn.net/monsion ...

  7. Html/CSS 初步介绍html和css部分重要标签

    &初步介绍html和css部分重要标签& 注:开头书写:<!DOCTYPE html>表明对应标准html代码 先行总结重点 下方给出具体 CSS: 1. position ...

  8. Django 小实例S1 简易学生选课管理系统 0 初步介绍与演示

    Django 小实例S1 简易学生选课管理系统 第0章--初步介绍与演示 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 初步介绍 先介绍下这个 ...

  9. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(五)-文件管理初步介绍

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

随机推荐

  1. Solr高亮显示highlight的三种实现

    高亮显示在搜索中使用的比较多,比较常用的有三种使用方式,如果要对某field做高亮显示,必须对该field设置stored=true      第一种是普通的高亮显示Highlighter,根据查询的 ...

  2. USB HID 协议入门

    转载请注明来源:cuixiaolei的技术博客 USB HID设备类的应用场合 USB HID类是USB设备的一个标准设备类,包括的设备非常多.HID类设备定义它属于人机交互操作的设备,用于控制计算机 ...

  3. WPF省市联动Binding

    主要思路: 把省的ItemsSource绑定DataContext,然后给市的ItemsSource绑定到Element(省)的SelectedItem上 xaml <Window x:Clas ...

  4. pyenv的安装和使用

    1. 先安装crul和git sudo apt-get install curl git-core 2. 安装pyenv curl https://raw.github.com/yyuu/pyenv- ...

  5. p39

    ; ========================================== ; pmtest2.asm ; 编译方法:nasm pmtest2.asm -o pmtest2.com ; ...

  6. 剑指Offer39 数组中寻找和为sum的两个数字

    /************************************************************************* > File Name: 39_TwoNum ...

  7. poj 3980 取模运算

    取模运算 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10931   Accepted: 6618 Description ...

  8. 【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

    Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年) ...

  9. Table of Contents - Jersey

    Jersey 1.19.1 Getting Started Get started with Jersey using the embedded Grizzly server Get started ...

  10. 每天一道LeetCode--409 .Longest Palindrome

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...