新的语言

WWDC简短的介绍,新的语言Swift就问世了,尽管新语言的名字导致贴吧下歌手粉丝和开发人员们争抢地盘- -,只是雨燕就是这么来了。

WWDC keynote里给Swift打上了非常多标签:
Closures,Generics,Namespaces,Type inference,Multiple return types

闭包,泛型支持,支持命名空间,去除隐式类型转换,多返回值等这些优秀的特性让这门语言显得现代和便捷,再加上学习了非常多其它语言类似Go,JavaScript等等的优秀语法,它同一时候兼具编译语言的高性能和脚本语言的交互性,或许这些促成了Apple拿它来代替Objective-C的原因。这篇文章主要对经常使用语法进行简单概述。

简单的赋值与打印

let  l = "hello"
//常量赋值,Swift里面";"不是必要的
var v = "world"
//变量赋值
println(l)
//使用println来进行log
println("nihao \(v)")//使用\()来格式化输出

显式的声明类型

var str :
String = "nihao"

var numStr =
"4"

var realNumber =5

var sum = numStr + realNumber//这么写编译器会提示error 由于不支持隐式的类型转换


当声明类型时,假设没有明显的生命为String, 编译器也会进行类型推导(Type inference),觉得它是String类型的。所以在类型上面去除了OC的弊端后,让错误及早的显现出来。

Optional

可是假设想要实现上面的运算,事实上也是可以实现的,这里须要引入一种新的概念Optional.

借助"?""!"来实现。

当我们不确定这个值是否如今或将来能够为nil时,会在赋值或者使用时加上这些符号标识在尾部。

var nilStr :
String? ="nilOrNotNil"

nilStr = nil

这样它就能够变为nil,默认的赋值是不能赋值为nil的。
注意这里的nil并非Objective-C里使用的nil空指针,而是一种NilType。

当我们确定它不为空的时候则能够加上"!"
如运算的那个样例,我们能够借助String的toInt()函数和"!"来完毕我们想进行的运算。
于是代码看起来像这样:

var numStr =
"4"

var realNumber =5

var sum =numStr.toInt()! +realNumber


数组及字典声明

var numbers = [1,5,2,1,6]

var dict = ["isNew" :"yes",

"name"  : "Swift"]

两种数据结构都使用中括号来表示,而不是字典用大括号了,这样倒是能和函数流程控制以及闭包区分开。

numbers[3] =4

能够直接对数组中的元素进行赋值,而不必在乎是不是mutable array或者array了


流程控制语句

for循环及if语句

numbers = [4,5,6,7,8,9]

var largeThanThree = 0

for n innumbers {

if n > 3 {

largeThanThree++

} else {

largeThanThree--

}

}

largeThanThree //6

遍历字典时能够获取key value

for (question , answer) indict {

if question == "isNew" {

answer //yes

} else {

answer //swift

}

}

对于optional在if语句中的使用须要注意一下

var optionalStr : String? ="swift"

var greeting : String? ="nihao"

optionalStr = nil

if let name =
optionalStr {

greeting = "nihao ,
\(name)" //不会运行

}

可是假设optionalStr 没有被赋值为nil,也就是仍然为"swift"则会给greeting变量赋值为"nihao, swift"

switch语句

Swift的switch支持对String的case比較

let object = "water"

var statement = "the object is "

switch object {

case "ice" :

statement += "冰"

case "water" ,"other":

statement += "水"

default :

statement += "未知"

}

statement //"the object is水"

这里不再须要break,当须要多个匹配统一代码时仍然用逗号隔开

while语句

var big = Int8.max//127 八位integer最大值

while big >
0 {

big--

}

控制范围的for

把通常的for循环用swift写会是

var loop = 0

for var i =
0; i < 3; i++ {

loop++

}

loop //3

如今swift支持了一种新的语法来完毕这样的操作

loop = 0

for i in
0..3 {

loop++

}

loop //3

那假设想让i取边界值,能够用0...3来取代0..3

函数

函数在Swift中变得十分灵活起来,它能够支持单一返回值,返回多个值,甚至嵌套函数,返回函数或者用函数作为參数等等。

func sayHello(person name :
String, weekday day : String) ->
String {

return"hello
\(name), today is \(day)"

}

var res = sayHello(person:"mattt", weekday :
"monday")

->作为返回值符号, name前的person 属于參数表述,也能够不加直接将值传递进去,这里为了函数方便使用才加上。

可变參数的多返回值

多个不同类型或同样类型的值组成的数据结构Swift里称为元组(tuple)

以下一个函数传入可变參数,使用元组返回多个值

func caculate(numbers: Int...) -> (Int,Int) {

var nSum = 0

var nAvg = 0

for number in numbers {

nSum += number

}

nSum

nAvg = nSum / numbers.count

return (nSum, nAvg)

}

var (s: Int, a:
Int) = caculate(1,2,3)

s //6

a //2

嵌套函数

func funs(number : Int) ->Int {

var y = 10 + number

func add() {

y++

}

add()

return y

}

函数也能够作为返回值进行传递

func makeIncrementer() -> (Int ->Int) {

func addOne(number: Int) ->Int {

return 1 + number

}

return addOne

}

var increment = makeIncrementer()

increment(7)

闭包函数

var numbers: Int[] = [4,3,1,2,5]

numbers.map({

(number: Int) -> Int in

let result = 3 * number

return result

})

这篇博客简介了Swift初步的使用,假设有不当的地方希望指出。







现代的新语言--Swift初探的更多相关文章

  1. Swift 新语言开发

    全书文件夹: 一.Welcome to Swift 二.Language Guide 三.Language Reference /* 译者的废话: 几个小时前熬夜看了WWDC,各种激动,今年非常有料啊 ...

  2. iOS开发——新特性Swift篇&Swift 2.0 异常处理

    Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...

  3. 关于苹果公司最新的语言Swift

    Swift供IOS和OSX新的编程语言开发的应用程序,吸取C和Objective-C质朴的语言.但没有损失C兼容性语言.Swift使用安全的编程模型.增加各种现代编程语言功能,使语言更容易掌握.更具可 ...

  4. Kotlin新语言简介和快速入门知识点

    Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...

  5. swift初探(供objective c开发人员參考)

    6月初的wwdc苹果推出了一门新的开发语言swift.系统10.9.3以上安装xcode6 beta版就可以体验swift. 苹果公司做了尽可能多的努力让这门语言迅速成为一个工业级的有用编程语言,而不 ...

  6. 杂项-语言-Swift:Swift

    ylbtech-杂项-语言-Swift:Swift Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于 ...

  7. Swift初探01 变量与控制流

    Swift初探01 变量与控制流 输出"hello world"是几乎学习所有编程语言的第一课,这是程序员的情怀. 所以我们学习swift的第一步,就是输出一句"Hell ...

  8. C# 3.0新语言特性和改进(一)

    引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...

  9. python的第一个程序“Hello,World”,传闻要想学好新语言....

    传闻要想学好新语言,第一个程序必须是“Hello,World”...O(∩_∩)O哈哈~ 下面附上代码: # -*- coding:utf-8 -*- print("Hello,World& ...

随机推荐

  1. Cannot modify header information - headers already sent by

    有时候你在使用 header("Location: http://localhost/myblog/index.php/manager/listview");的时候会出现这个问题, ...

  2. 如何打开Windows Server 2003 内存寻址扩展

    本文介绍了如何在系统内存大于4G的情况下,让windows2003 Advanced Server支持大内存的方法: 由于Windows2003 32bit是32位操作系统,当服务器配备内存高达4G时 ...

  3. swift 重载 泛式 inout的使用

    swift 重载 泛式 inout的使用 函数 func 关键字 -> 表示返回值信息等等 那我们接下来利用函数做几件事情 -a 比较两个数字的大小 -b 比较两个字符串 -c 既能比较字符串, ...

  4. javascript中的事件问题

    事件的类型: (1)鼠标事件:   click用户点击鼠标时发生,当用户的焦点在按钮上,并按了回车键,同样会触发这个事件 dbclick 用户双击鼠标左键时发生    mouseover 鼠标移出某个 ...

  5. (转)C#.NET使用TTS引擎实现文语转换

    (转)C#.NET使用TTS引擎实现文语转换 本文讲述使用微软TTS5.1语音引擎(中文)实现文本阅读和音频输出为WAV完美解决方案. 网上很多文章说的是要安装SAPI.51 SDK,而这个东西有好几 ...

  6. javascript控制图片等比例缩放

    <SCRIPT language="JavaScript"> function DrawImage(ImgD,FitWidth,FitHeight){ var imag ...

  7. C程序设计语言练习题1-13

    练习1-13 编写一个程序,打印输入中单词长度的直方图.水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些. 代码如下: #include <stdio.h> // 包含标准库的信息 ...

  8. iOS开发——C篇&预处理

    其实在C语言的远行过程中,有这样一个流程, 编译:C----〉可执行文件(可以运行的) 1:.C------.i 预处理(之前和之后还是C语法)2: .i-------.s 编译(之前是C语法,之后是 ...

  9. java1200例-文字的探照灯效果

    <style> .mydiv{ color:white; filter:light; height:; font-size:35px; left:10px; position:relati ...

  10. ie浏览器下HTML上传控件input=file的美化

    近期写东西用到了input=file这个按钮,给其添加背景,在其它浏览器上都可以正常的显示,可一到ie上便不听话了,完全没有添加上,显的很难看.今天在网上找到一方法,试过后感觉很好,终于把这个问题给解 ...