突然兴起复习一下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 ...
随机推荐
- [图形学] Chp17 OpenGL光照和表面绘制函数
这章学了基本光照模型,物体的显示受到以下效果影响:全局环境光,点光源(环境光漫反射分量,点光源漫反射分量,点光源镜面反射分量),材质系数(漫反射系数,镜面反射系数),自身发光,雾气效果等.其中点光源有 ...
- VB6获取IE8的地址栏的URL信息
这是个老梗了,也没什么技术含量.因为自从接触Linux之后,Windows上我所知道的那一点api基本上都忘光了.所以这样的博文可以当做是备忘,说不定有天还能用的到. Windows上想要获取浏览器的 ...
- JQuery中常用的选择器
属性选择器 1> [attribute] 概述:匹配包含给定属性的元素. 示例 jQuery 代码:$("div[id]") 描述:查找所有含有 id 属性的 div 元素 ...
- 通用JSONHelp 的通用的封装
1. 最近项目已经上线了 ,闲暇了几天 想将JSON 的序列化 以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft 已经做的很好了.但是我想封装一套为自己开发的项目使用 ...
- NodeJS中的http模块
利用http模块,nodejs可以开发服务器, 极大简化服务器的创建: var http = require("http"); //创建服务器 var server = http. ...
- 细说Handler
今天来说说Android一个重要类吧:Handler (我写的博客风格不适合新手,因为我讨厌新手教学,我都是直奔主题,不交代前因后果) 大家都知道Handler的用法一般是线程间的通讯,当然,一个线程 ...
- 发博客用的一些HTML
这个世界,在发生什么? 移动光标 <p style="background: #999999; padding: 5px; font-size: 22px;">< ...
- Mongoose基础入门
前面的话 Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具.本文将详细介绍如何使用Mongoose来操作MongoDB NodeJS驱动 在介绍Mongoose之 ...
- 玩玩微信公众号Java版之四:自定义公众号菜单
序: 微信公众号基本的菜单很难满足个性化及多功能的实现,那么微信能否实现自定菜单呢,具体的功能又如何去实现么?下面就来学习一下微信自定义公众号菜单吧! 自定义菜单接口可实现多种类型按钮,如下: 1.c ...
- 全面理解SSD和NAND Flash
Flash Memory又叫做闪存,是一种非易失性存储器.非易失性是指断电之后数据不会丢失,这里就涉及到断电保护(后面详细讲解). 总体思路 1.NAND Flash的用途. 2.NAND Flash ...