突然兴起复习一下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 ...
随机推荐
- MySQl开发和生产环境索引对比
--1.创建索引信息表create table `t_index_update` ( `table_name` varchar(20) COLLATE gbk_bin DEFAULT NULL, ...
- Servlet转发到JSP页面的路径问题
一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...
- java基础02 数据类型转
一.回答问题 float f1 = 6.66f; float f2 = (float) 6.67; f1==f2? /** * * @author sun * */ public class Demo ...
- log4go的精确定时程序(带自动延迟补偿)
程序设计目标是在程序启动10秒后执行某个任务,例如日志转储(rotate),以后每隔15秒执行一次. 初次的设计 package main import ( "time" &quo ...
- Android后门GhostCtrl,完美控制设备任意权限并窃取用户数据
Android系统似乎已经成为世界各地病毒作者的首选目标,每天都有新的恶意软件在感染更多的设备. 这一次,安全公司趋势科技发布警告,他们发现了一个新的Android后门--GhostCtrl Ghos ...
- C++中使用const修饰指针
在本文中呢,主要讲解四个方面,即:常量数据的与否和常量指针的与否中const如何对指针进行修饰: 1.指向非常量数据的常量指针 对于一个指向非常量数据的常量指针,我们应该清楚的知道,在这我们注重的是指 ...
- docker~Dockerfile优化程序的部署
回到目录 一些理论 我们都知道docker这个容器工具可以帮助我们快速进行环境的部署,这对于运营人员来说,无疑是个福音,而这个工作大叔认为不应该是运营人员干的,而是由开发人员来做,因为只有你知道你干的 ...
- 文本处理常用命令--sort,uniq,cut,wc
#文本处理命令--sort,cut,wc及其他 文本处理命令还有其他常用的,比如:sort,cut,wc 1.cut命令的用法 cut命令: cut - remove sections from ea ...
- Java设计模式学习笔记,一:单例模式
开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的 ...
- 【javascript】ajax的参数
1. 常用参数 url type: contentType: dataType: data: success: error 2. 特殊参数 context: 这个对象用于设置Ajax相关回调函数的上下 ...