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)
}

  

上一篇:IIS环境下部署项目


下一篇:6.RDD持久性