swift之基础语法笔记

主要记录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项目


你可能感兴趣的:(swift)