突然兴起复习一下Swift3.0
/// 参考Swift3.0.1文档
/// 摘录来自: Apple Inc. “The Swift Programming Language (Swift 3.0.1)”。 iBooks. import UIKit class ViewController: UIViewController { override func viewDidLoad() {
super.viewDidLoad()
aSwiftTour() } func aSwiftTour(){
//Swift中的输出语句
print("Hello World") //MARK: - 变量
/**var声明变量
Swift具备自动推导的能力
右边是什么类型这个变量或者是常量就自动的是什么类型了
*/
var variable =
variable =
//MARK: - let声明常量
let constant =
print(variable,constant) //指定变量的类型 隐式指定
let implictInteger = //Int
let implicitDouble = 66.0 //Double //显式地指定类型为Double
let explicitDouble: Double = //Double
print(implictInteger,implicitDouble,explicitDouble) let label = "The width is"
let width =
let widthLabel = label + String(width)
print(widthLabel) //MARK: - 数字和字符串的拼接
let apples =
let oranges =
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit." //MARK: - 数组操作
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[] = "bottle of water" //MARK: - 字典操作 key:value
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations" //创建空数组和空字典的方式
//创建一个元素类型为字符串的数组
let emptyArray = [String]()
//key为String类型value为Float类型的字典
let emptyDictionary = [String: Float]() //MARK: - 数组字典更简单的方式
/**
“If type information can be inferred, you can write an empty array as [] and an empty dictionary as [:]—for example, when you set a new value for a variable or pass an argument to a function.”
摘录来自: Apple Inc. “The Swift Programming Language (Swift 3.0.1)”。 iBooks.
*/
shoppingList = []//默认是[String]
occupations = [:]//默认是[String:String] //MARK: - 控制流
//注意for if else 的格式
let individualScores = [, , , , ]
var teamScore =
for score in individualScores {
if score > {
teamScore +=
} else {
teamScore +=
}
}
print(teamScore) //MARK: - ?是可选值类型
var optionalString: String? = "Hello"
print(optionalString == nil) var optionalName: String? = "John Appleseed" var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)" } //MARK: - “Another way to handle optional values is to provide a default value ”“using the ?? operator. If the optional value is missing, the default value is used instead.” let nickName: String? = nil
let fullName: String = "John Appleseed"
let informalGreeting = "Hi \(nickName ?? fullName)" /**
(lldb) po nickName
nil (lldb) po fullName
"John Appleseed" (lldb) po informalGreeting
"Hi John Appleseed"
*/ //MARK: - Switch Case的用法
let vegetable = "red pepper"
switch vegetable {
case "celery":
print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
print("That would make a good tea sandwich.") //用x来标识vegetable 看看这个字符串的尾部是否有pepper Returns a Boolean value indicating whether the string ends with the specified suffix.
case let x where x.hasSuffix("pepper"):
print("Is it a spicy \(x)?")
//Is it a spicy red pepper? default:
print("Everything tastes good in soup.") } //MARK: - 快速遍历数组 并且找出来最大值
/**
三个字典还是鄙视比较好玩的 素数 斐波那契数列 平方
*/
let interestingNumbers = [
"Prime": [, , , , , ],
"Fibonacci": [, , , , , ],
"Square": [, , , , ],
]
var largest =
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
print(largest) //25 //MARK: - 循环
var n =
while n < {
n = n *
}
print(n)
//
var m =
//就类似于do while
repeat {
m = m *
} while m <
print(m) // /** “Use ..< to make a range that omits its upper value, and use ... to make a range that includes both values.”
*/ var total =
for i in ..< {
total += i //1 2 3
} print(total)// var totalBoth =
for i in ... {
totalBoth += i//1 2 3 4
}
print(totalBoth)//10 //MARK: - 函数和闭包
//函数 函数参数 返回值
func greet(person: String, day: String) -> String {
return "Hello \(person), today is \(day)."
}
let s = greet(person: "Bob", day: "Tuesday") //"Hello Bob, today is Tuesday." func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) {
var min = scores[]
var max = scores[]
var sum = for score in scores {
if score > max {
max = score
} else if score < min {
min = score
}
sum += score
} return (min, max, sum)
}
let statistics = calculateStatistics(scores: [, , , , ])
print(statistics.sum)
print(statistics.)
//120 120
/**
(lldb) po statistics.min
3 (lldb) po statistics.max
100 (lldb) po statistics.sum
120
*/ //可变参数的函数 zhu'yi
func sumOf(numbers: Int...) -> Int {
var sum =
for number in numbers {
sum += number
}
return sum
}
let sumOfEmptyParam = sumOf() let sumOfThree = sumOf(numbers: , , ) /**
(lldb) po sumOfEmptyParam
0 (lldb) po sumOfThree
651
*/ //函数A的内部有函数B 函数A内部还调用了函数B
func returnFifteen() -> Int {
var y =
func add() {
y +=
}
add()
return y
} let fifteenFunc = returnFifteen() //15 //参数为空 返回值为闭包类型
func makeIncrementer() -> ((Int) -> Int) {
//参数为整型 返回值为整数
func addOne(number: Int) -> Int {
return + number
}
return addOne
}
var increment = makeIncrementer()
increment() //8 //“A function can take another function as one of its arguments.
//函数的返回值是一个函数 而且不仅仅是一个函数那么简单 只可意会哈哈
func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool {
for item in list {
if condition(item) {
return true }
}
return false
}
func lessThanTen(number: Int) -> Bool {
return number <
}
var numbers = [, , , ]
let nubersB = hasAnyMatches(list: numbers, condition: lessThanTen) //true 7满足条件
print(nubersB) //MARK: - 闭包
//“You can write a closure without a name by surrounding code with braces ({}). ”
//到了闭包了 先停一下突然兴起复习一下Swift3.0的更多相关文章
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- Swift3.0变化分享
Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...
- swift3.0变化总结
Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...
- 关于for循环------swift3.0
在程序开发当中,for循环使用的频率无疑是最高的.常用的swift循环是递增式遍历.当然各种循环,swift都能办到.但其大多采用关键字形式实现,大部分开发者更喜欢直接使用C式循环代码.在swift3 ...
- Swift2.3 --> Swift3.0 的变化
Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...
- Swift3.0都有哪些变化
从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行.在W ...
- iOS开发 swift3.0中文版
swift3.0中文版: http://pan.baidu.com/s/1nuHqrBb
- swift3.0的改变
Swift在这2年的时间内,发展势头迅猛,在它开源后,更是如井喷一样,除了 iOS.mac 平台,还支持了 Linux. 而今年下半年, Swift 3.0 也会随之发布.https://github ...
随机推荐
- vijos1057题解
题目: 永恒の灵魂最近得到了面积为n*m的一大块土地(高兴ING^_^),他想在这块土地上建造一所房子,这个房子必须是正方形的. 但是,这块土地并非十全十美,上面有很多不平坦的地方(也可以叫瑕疵).这 ...
- DOM元素拖拽效果
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 单例设计模式 Single
一些人总结出来用来解决特定问题的固定的解决方案. 解决一个类在内存中只存在一个对象,想要保证对象的唯一. 1 为了避免其他程序过多的建立该类对象.禁止其他程序建立该类对象. 2 为了其他程序可以访问该 ...
- 为Dynamics 365启用部署级的跟踪以及跟踪文件的定期删除
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复260或者20170712可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- [CF161D]Distance in Tree-树状dp
Problem Distance in tree 题目大意 给出一棵树,求这棵树上有多少个最短距离为k的点对. Solution 这个题目可以用点分治来做,然而我到现在还是没有学会点分治,所以只好用树 ...
- KMP算法(研究总结,字符串)
KMP算法(研究总结,字符串) 前段时间学习KMP算法,感觉有些复杂,不过好歹是弄懂啦,简单地记录一下,方便以后自己回忆. 引入 首先我们来看一个例子,现在有两个字符串A和B,问你在A中是否有B,有几 ...
- Html的基本元素(Element)
本人写这篇文章是我在IT修真园里学习了一段时间,反过来复习时整理的.虽然只是些基础知识内容,希望能帮到大家. 首先我们要了解所谓的html它的定义是什么? [html:超文本标记语言,文本:txt格式 ...
- 封装游戏配表读取和存储(xml格式);支持行列存取,标题存取
做服务器肯定会涉及到游戏配表,而读取游戏配表是一个必备技能; 之前一直都是采用TinyXml直接读,匹配字符串,每次加个表都是一大坨代码,看着也是心累; 因此利用了闲暇的时间封装了一个 xml配置表 ...
- 【JAVASCRIPT】React入门学习-文本渲染
摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 文本渲染 1. 纯文本渲染 <!DOCTYPE html> <html> <head&g ...
- 流畅python学习笔记:第十五章:上下文管理器
在开始本章之前,我们首先来谈谈try-excep..final模块.在Python中,进行异常保护的最多就是用try..except..final.首先来看下下面的代码.进行一个简单的除法运算.为了防 ...