现代的新语言--Swift初探
//常量赋值,Swift里面";"不是必要的
//变量赋值
//使用println来进行log
var str :
String = "nihao"
var numStr =
"4"
var realNumber =5
var sum = numStr + realNumber//这么写编译器会提示error 由于不支持隐式的类型转换
var nilStr :
String? ="nilOrNotNil"
nilStr = nil
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
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初探的更多相关文章
- Swift 新语言开发
全书文件夹: 一.Welcome to Swift 二.Language Guide 三.Language Reference /* 译者的废话: 几个小时前熬夜看了WWDC,各种激动,今年非常有料啊 ...
- iOS开发——新特性Swift篇&Swift 2.0 异常处理
Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...
- 关于苹果公司最新的语言Swift
Swift供IOS和OSX新的编程语言开发的应用程序,吸取C和Objective-C质朴的语言.但没有损失C兼容性语言.Swift使用安全的编程模型.增加各种现代编程语言功能,使语言更容易掌握.更具可 ...
- Kotlin新语言简介和快速入门知识点
Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...
- swift初探(供objective c开发人员參考)
6月初的wwdc苹果推出了一门新的开发语言swift.系统10.9.3以上安装xcode6 beta版就可以体验swift. 苹果公司做了尽可能多的努力让这门语言迅速成为一个工业级的有用编程语言,而不 ...
- 杂项-语言-Swift:Swift
ylbtech-杂项-语言-Swift:Swift Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于 ...
- Swift初探01 变量与控制流
Swift初探01 变量与控制流 输出"hello world"是几乎学习所有编程语言的第一课,这是程序员的情怀. 所以我们学习swift的第一步,就是输出一句"Hell ...
- C# 3.0新语言特性和改进(一)
引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...
- python的第一个程序“Hello,World”,传闻要想学好新语言....
传闻要想学好新语言,第一个程序必须是“Hello,World”...O(∩_∩)O哈哈~ 下面附上代码: # -*- coding:utf-8 -*- print("Hello,World& ...
随机推荐
- POJ2914
POJ2914 无向图的最小割 题意:给你一个无向图,然后去掉其中的n条边,使之形成两个连通分量,也即原无向图不连通,求n的最小值. 输入: m(无向图点集),n(无向图边集) a,b,c(a,b两点 ...
- minus的用法
简单的说就是去同留异. MINUS 指令是运用在两个 SQL 语句上.它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中.如果有的话,那这一笔资料就被去除,而 ...
- 用CALayer实现聚光灯效果
效果图: 代码部分: #import "ViewController.h" @interface ViewController () @property (nonatomic, s ...
- GUI按键绑定到键盘和打印组件
首先说明一点 按键绑定到键盘和设置快捷键是不一样的 按键绑定键盘是按键有了和button一样的功能,没有焦点时也能使用(WHEN_IN_FOCUSED_WINDOW),甚至有时候单独作为一个事件(有自 ...
- DOM---documentFragment
代码暂时寄存 创建:document.createDocumentFragment() 案例: var a=document.createDocumentFragment(); var b=docum ...
- MySQL是否在扫描额外的记录
在确定查询只是返回需要的数据之后,接下来应该看看查询为了返回结果是否扫描了过多的数据.对于MySQL,最简单的衡量查询开销的三个指标如下: 1响应时间,2扫描行数,3返回行数 没有那个指明能够完美的衡 ...
- Android Framework------之PowerManagerService的功能
自从接触Android系统已经一年多了,这段时间内对于Android系统的Framework层的各个模块都有过接触,有时也做过分析,但是一直没能形成一个总结性的东西.这次下定决心,好好整理整理对于An ...
- 字符串匹配算法之Sunday算法
字符串匹配查找算法中,最着名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore).两个算法在最坏情况下均具有线性的查找时间.但是在实用上,KMP算法并不比最简 ...
- 常用排序算法之——选择排序(C语言+VC6.0平台)
选择排序是另一种经典排序算法,核心思想是:在一趟找最小(大)数的过程中,先假设待排数据中的第一个数据即为最小(大)数据,然后循环将其他数据与该数据比较,每次比较时若小于该数据则让新数据成为最小(大)数 ...
- nginx读书日志
2016.12.20 nginx 功能特性: 既可以作为http服务器,也可以作为反向代理服务器或者邮件服务器 基本服务:处理静态文件,处理索引文件以及支持自动索引 nginx服务器中主要由proxy ...