Swift - 41 - swift1.2新特性(1)
更简洁的if-let
import UIKit func attack(name: String, enemyName: String, weapon: String)
{
print("\(name)使用了\(weapon)攻击了\(enemyName)")
} attack("Rinpe", enemyName: "傻逼", weapon: "金箍棒") var name: String? = "Lolo"
var enemyName: String? = "妖魔鬼怪"
var weapon: String? = "法杖" // 直接这样写是会报错的, 因为定义attack函数的时候, 规定传的参数不能是一个可选型变量
// attack(name, enemyName: enemyName, weapon: weapon)
// 我们就需要进行解包
// swift1.2之后可以多个变量同时解包, 减少了多层嵌套if-let的麻烦
// 另外, 解包的同时还能通过where关键字来进行判断
if let name = name where name == "Lili", let enemyName = enemyName, let weapon = weapon {
attack(name, enemyName: enemyName, weapon: weapon)
} else {
print("Sorry, 这个角色不具备攻击能力")
}
全新的Set结构
//: Playground - noun: a place where people can play import UIKit // 数组(List): 有序数据集合
// 字典(Dictionary): 键值对数据集合
// 集合(Set): 无序数据集合 // 初始化
// swift还没有像数组和字典那样通过[]和{}快捷初始化
// 集合中的元素是不会重复的
var setA: Set<Int> = [1, 2, 3, 4, 1]
var setB = Set<Int>([1, 3, 4, 5])
var setC = Set<Int>() // 常用方法
setA.insert(1) // 添加方法
setA.count // 获取集合中元素的个数
setA.isEmpty // 判断集合是否为空
setA.remove(1) // 移除某个元素
setA.remove(100)
setA
setA.contains(5) // 判断是否包含某个元素 // 数学函数相关的方法
// 交集
setA.intersect(setB)
// 并集
setA.union(setB)
// 补集(A-B)
setA.subtract(setB)
// A有B没有, B有A没有
setA.exclusiveOr(setB)
// 判断B是否为A的子集/父集
setA.isSubsetOf(setB)
setA.isSupersetOf(setB)
// A和B完全不一样
setA.isDisjointWith(setB) /**************************举个栗子**************************/ func attack(name: String, enemyName: String, weapon: String)
{
print("\(name)使用了\(weapon)攻击了\(enemyName)")
} func accomplishAchievement(name: String)
{
// 判断用户是否已经获得该成就
if achievements.contains(name) {
return
} else {
print("*************************")
print("!!!!达成成就, 击败\(name)!!!!")
print("*************************")
print("")
// 添加成就
achievements.insert(name)
}
} // 初始化Set集合
var achievements = Set<String>() var name = "Lolo"
var enemyNames = ["妖魔鬼怪", "僵尸", "僵尸", "僵尸", "妖魔鬼怪"]
var weapon = "法杖" for enemyName in enemyNames
{
// 执行攻击
attack(name, enemyName: enemyName, weapon: weapon)
// 执行成就特效
accomplishAchievement(enemyName)
}
Swift - 41 - swift1.2新特性(1)的更多相关文章
- Swift - 41 - swift1.2新特性(2)
swift 和 OC 的桥接 //: Playground - noun: a place where people can play import UIKit var PI = "3.14 ...
- Swift 2.2 的新特性
导读:本文来自SwiftGG翻译组,作者@walkingway基于苹果Swift官方博客中Ted Kremenek所撰写的"Swift 2.2 Released!"文章进行了关于S ...
- 关于 Swift 2.0 - 语言新特性与革新
随着刚刚结束的 WWDC 2015 苹果发布了一系列更新,这其中就包括了令人振奋的 Swift 2.0. 这是对之前语言特性的一次大幅的更新,加入了很多实用和方便的元素,下面我们就一起来看看这次更新都 ...
- 最全的 Swift 4 新特性解析
转自: http://www.jianshu.com/p/f35514ae9c1a WWDC 2017 带来了很多惊喜.Swift 4 也伴随着 Xcode 9 测试版来到了我们的面前,很多强大的新特 ...
- Swift 3.1 的一些新特性
Swift 3.1 的一些新特性 推荐序 本文来自泊学的投稿,介绍了 Swift 3.1 的新特性,感谢泊学授权发表.以下为文章正文. 正文 Apple 终于发布了Xcode 8.3以及Swift ...
- iOS - Swift Swift 语言新特性
1.Swift 2.0 带来哪些新变化 常规变化: 1.OS X 10.11.iOS 9 和 watchOS 2 SDK 采纳了一些 Objective-C 的特性用来提高 Swift 的编程体验, ...
- iOS开发——新特性OC篇&Swift 2.0新特性
Swift 2.0新特性 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...
- Swift 2.0初探:值得注意的新特性
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...
- Swift 3 新特性和迁移详解
写在前面 Swift 3.0 正式版发布了差不多快一个月了,断断续续的把手上和 Swift 相关的迁移到了Swift 3.0.所以写点小总结. 背景 代码量(4万行) 首先,我是今年年初才开始入手 S ...
随机推荐
- UVA 11722 几何概型
第六周A题 - 几何概型 Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Descriptio ...
- 关于后台数据库正常存储中文通过Ajax方式传递到前台变成问号的处理
我的一个程序,用到的后台数据库MySql,字段是Varchar,Character Set是utf8,字段能且已经正确存储了中文. 从数据库取出信息后,在后台Java代码里Debug看到正确的中文. ...
- mysql一个表中多个字段对应另一个表的id如何查询?
比如有如下2个表 a 和baaID b1ID b2ID b3ID1 1 3 52 2 4 6bbID bCon1 苹果2 香蕉3 国内4 国外5 出口6 进口其中a表中的b1ID,b2ID,b3ID都 ...
- tomcat正常启动,但IP不能访问web。ping IP地址,一直超时。 用ipconfig命令修复TCP/IP的配置信息
今天遇到一个好奇葩的问题 好吧是昨天遇到的一直没找到解决办法(`へ´) tomcat正常启动,但是通过IP不能访问web 用IP地址就是不行 (:′⌒`) 打不开 localhost就可以 ...
- PHP 5.6正式发布:新特性、及功能改进介绍
经过了长时间的开发测试,新版本PHP程序(PHP5.6正式版)终于发布了.新版本中加入了一些实用的新特性,也摒弃了一些冗余的功能.同时,也对部分原有功能进行了改进.下面就一起看看PHP 5.6正式版到 ...
- cf D. Maximum Submatrix 2
http://codeforces.com/contest/376/problem/D 题意:给你一个矩阵,可以随意排列n行的次序,然后找出全部含有1的子矩阵.输出1的个数. 思路:c[i][j]表示 ...
- PKUSC2016滚粗记
Day0 坐飞机来北京,地铁上接到电话,以为是诈骗电话马上就挂了,然后看了一下是北京的电话,赶脚有点不对...打回去居然是报到处老师的电话..走了几个小时,到勺园和其他学校的神犇合住.TAT,感觉第二 ...
- 《Ruby语言入门教程v1.0》学习笔记-03
10.09 第七章 7.1 模块 Ruby标准包里的 Math 模块提供了许多方法,比如:求平方根 sqrt ,使用的时候要这么写:模块名.方法名(参数).如:Math.sqrt( a*5+b ) M ...
- LU分解(1)
1/6 LU 分解 LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵.对应的matlab代码如下: function[L, U] =zlu(A) % ZLU ...
- Forward Proxy & Reverse Proxy | 正向代理 和 反向代理
对请求和响应内容不做修改的转发的服务器,被称为代理服务器.代理服务器分为两种类型:正向代理 和 反向代理. 正向代理:面向互联网,从更广范围获取信息的代理. 反向代理:面向内部,一般用于某企业的网站的 ...