主要记录xcode下swift个人学习笔记
// Playground - noun: a place where people can play
import UIKit
//变量
var a = 10
var b = 5
//常量 ,不可改变值
let c = a+b
// c = 5 //error: cannot assign to value: 'c' is a 'let' constant c = 5
print(c)
//类型 字符串
var str = "Hello "
//指定类型,没有必要,除了特殊情况,有自动类型推断
var s1:String = "Wrold"
var i:Int = 0 //整数
print(str+s1)
Int.max //9,223,372,036,854,775,807
Int8.max //127
Int8.min //-128
UInt8.max // 无符号 255
// swift 默认 Int 只鼓励使用 Int
let a1 : Float = 3.14 //Float 32位 精度 6 位
let b1 : Double = 3.141592657532 // 64位 精度 6 位
//默认 Double
// boolean true or false
var isOk = false
//元组 多个值的随意组合,在括号内,逗号分开
("slack",55,"QQ会员",9)
let slack = (user:"slack",account:300,tilte:"QQ会员")
slack.tilte // "QQ会员" 根据key名
slack.1 // 300 根据序号
//用与多个变量交换值
var (a2, b2, c2) = (1,2,3)
(a2,b2,c2) = (b2,c2,a2) //a2 2 ,b2 3, c2 1
//可选变量 optional ? 标识 可选变量为空或者 false 时,if 里不执行
var myName:String?="slack"
if let name=myName{
print("hello \(name) ...")
}
var address:String?="address..."
//var address:String? // 默认 nil
if address == nil {
print("no address")
}else{
// 可选拆包,把变量的值解压出来,变量后加 !
print(address!)//address...
}
// 操作符
i = 5 //赋值
-i //-5
i++ //5
i //6
// + - * / %
3.4 / 0.2 // 17 swift可以小数 相除
9 % 2.5 // 1.5
i += 3 //组合赋值 9 ( i=6)
i /= 3 // 3
// 比较操作符
3 == 3 //true
5 >= 6 //false
var 红绿灯 = "红"
if( 红绿灯 == "红"){
print("禁止通行")
}else{
print("可以通行")
}
//红绿黄 0 1 2
var 红绿灯1 = 2
if( 红绿灯1 > 0){
print("可以通行")
}else{
print("禁止通行")
}
// ! 取反 && 与 || 或
let ( 高,大,上) = (true,true,false)
if(上 || (高 && 大 && (!上) ) ){
print("welcome")
}else{
print("No")
}
// String字符串 Character字符
//字符串连接
str = str + "slack"
str.isEmpty // false null?
var char : Character = "A" //字符要指名,默认是字符串
//特别有意思的字符串连接 \(引用已有的)
str = "\(str),fdajgf,\(100)"
print(str)
// Unicode 汉字编码,编码号百度咯
"\u{5154}" //兔
str.startIndex// 0
str.endIndex// 22
str[str.startIndex] // str = Hello slack,fdajgf,100
str[str.startIndex.successor()]// 后一个索引 str[str.startIndex]
str[str.endIndex.predecessor()]// 最后一位 前一个索引 predecessor()
// modify String 我的测试环境的问题,error
//str.insert("A", atIndex: str.endIndex)
//str.removeAtIndex(str.endIndex.predecessor())
// compare string with == or !=
//数组
var arr = ["hello","slack",str,100,20.3] // 啥类型都可以放
print(arr)
//空数组
var arr1 = []
//特定类型的空数组
var arr2 = [String]()
//循环 1--100 append 添加
for index in 0...100{
arr2.append("Item\(index)")
}
print(arr2) //[Item0, Item1, Item....
//遍历 arr数组
for value in arr{
print(value)
}
// insert
arr2.insert("hello", atIndex: 0)
arr2 // "hello", "Item0", "Item1", "Item2"...
// remove
arr2.removeAtIndex(2)
arr2 //"hello", "Item0", "Item1", "Item2"...
//count 计数
i = 0
while i < arr.count {
print(arr[i])
i++ //error
}
// 闭区间 a...b 1...100
// 半开区间 a..<b 1..<101
///流程控制 判断分支
for index in 0...100{
if(index%2==0){
print(index)
}
}
// set 值无序不重复 测试环境不识别Set count isEmpty insert remove contains
//sort -->数组
// 集合 交 差 并 补
//a.intersect(b) a.subtract(b) a.union(b) a.exclusive(b)
//集合关系 子集 父集
// isSubsetOf (子集,可以相等) isStrictSubsetOf (严格子集: 集合 a > b)
// isSupersetOf (父集) isStrictSupersetOf (严格父集)
// isDisjointWith 无交集
//let 身份证号 : Set<String> = ["123","345","12x"]
//let ID : Set = ["123","345","12x"]
//字典 遇到缩写时使用 key 唯一,值无序可重复
var dict = ["name":"slack","age":"16"]
dict["sex"]="male"
print(dict)
// 获取
print(dict["name"])
dict.count // 3
dict.isEmpty // false
//update
dict.updateValue("Slack", forKey: "name")
// remove
dict.removeValueForKey("sex")
//for循环对字典遍历
for (key,value) in dict{
print("\(key),\(value)")
}
// 健值对分离成数组
var keys = [String](dict.keys)
var values = [String](dict.values)
//continue break out:1 2 4 5
for i in 1...6{
if i == 3 {
continue // 结束本次循环
}
print(i)
if i == 5 {
break //结束所有循环
}
}
//guard 早退语句 必须条件不满足的早阶段退出 like if
///函数
func sayHello(name:String){
print("hello \(name)")
}
sayHello("slack")
//函数可以返回多个值(元组),很有意思,需要指明返回值类型
func getNums() -> (Int ,Int){
return (2,3)
}
let (num1,num2) = getNums()
getNums().0 // 2
print(num2) // 3
//函数当变量使用
var fun = sayHello
fun("slack ")
///面向对象
class Hi{
func sayHi(){
print("Hi ")
}
}
//还可以继承
class Hello:Hi{
var _name:String
//构造方法
init(name:String){
self._name = name
print("Hello init...")
}
//可以重写方法
override func sayHi(){
print("hello slack \(self._name)")
}
}
var hi = Hi()
hi.sayHi()
var h = Hello(name:"Zzzz")
h.sayHi()
//不定数参数 参数任意个 求和
func sum(numbers : Int...) -> Int {
var result = 0
for number in numbers{
result += number
}
return result
}
sum(1,2,3,4,5,6) // 21
// 函数返回值,把函数类型作为一个返回值
func add1 (a: Int) -> Int {
return a + 1;
}
func sub1 (a: Int) -> Int {
return a - 1;
}
// 包装 根据条件去不同函数
func addOrSub1(正数:Bool) -> (Int) -> (Int) {
if 正数 {
return add1
}else {
return sub1
}
}
addOrSub1(true)(5) // 6
addOrSub1(false)(5) // 4
print()
// struts class
struct Resolution{
var width = 0
var height = 0
}
class VideoMode{
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name: String?
func description(){
print("name:\(name) frameRate:\(frameRate) resolution:\(resolution) interlaced:\(interlaced)")
}
}
let mode = VideoMode()
mode.name = "1080p HD"
mode.frameRate = 30.0
mode.description()
///开发ios项目