突然兴起复习一下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 ...
随机推荐
- JQuery中常用的选择器
属性选择器 1> [attribute] 概述:匹配包含给定属性的元素. 示例 jQuery 代码:$("div[id]") 描述:查找所有含有 id 属性的 div 元素 ...
- String.valueOf() 方法的使用
1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 ...
- Android创建窗口(一)创建应用窗口
所谓的窗口(Window)就是一个显示在手机屏幕上可视化视图的一片区域.在Android中窗口是一个抽象的概念,每一个Activity就对应着一个窗口,而所有的窗口都是由视图(View)来呈现,而我们 ...
- 读Zepto源码之Event模块
Event 模块是 Zepto 必备的模块之一,由于对 Event Api 不太熟,Event 对象也比较复杂,所以乍一看 Event 模块的源码,有点懵,细看下去,其实也不太复杂. 读Zepto源码 ...
- Oozie时出现Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure?
不多说,直接上干货! 问题详情 [hadoop@bigdatamaster oozie--cdh5.5.4]$ bin/ooziedb.sh create -sqlfile oozie.sql -ru ...
- nopCommerce 3.9 大波浪系列 之 IWebHelper
接口:Nop.Core.IWebHelper 实现:Nop.Core.WebHelper 测试:Nop.Core.Tests.WebHelperTests 简介:Web辅助类 功能:获取客户端IP地址 ...
- .Net中关于相等的问题
在.Net框架中,如果您查看所有类型的的基类:System.Object类,将找到如下4个与相等判断的方法: static Equals() virtual Equals() static Refer ...
- Java 多态的实现原理
一个对象变量可以指示多种实际类型的现象称为多态 允许不同类的对象对同一消息做出响应.方法的重载.类的覆盖正体现了多态. 1.多态的机制 1.1 本质上多态分两种 .编译时多态(又称静态多态) .运行时 ...
- 一个Web 持续集成工作实践
一个web的持续基础实践: https://mp.weixin.qq.com/src=3×tamp=1494325174&ver=1&signature=wFVC0E ...
- (转)上传jar包到nexus私服
场景:在使用私服Nexus时候经常需要上传jar包,但是对上传jar包的方式不是很熟悉,所以很有必要学习下. 1 通过网页上传 GAV Definition:选择GAV Parameters 输入JA ...