Swift(一)

作者: BiniOSdeveloper | 来源:发表于2016-03-17 17:25 被阅读77次
//: Playground - noun: a place where people can play

import UIKit

/**
* Swift 2.0以前
* print
* println
* Swift 2.0 以后合体了
* print
*/
print("Hello,Swift")

// 1.常量和变量.

let a = 10 // 程序运行期间,不能修改的量.
var b = 20 // 程序运行期间,可以修改的量.

/**
*  命名规则.
* 1. 可以由数字 字母 下划线 组成
* 2. 不能以数字开头.
* 3. 全面支持Unicode(可以用中文 表情等)
*/

let 😹 = 20
var 😻 = 30
😻 + 😹
let 硬件 = 90
let 软件 = 100
let 电脑 = 硬件 * 软件

// 一:数据类型(会根据后面类型自己判断变量的类型)
// 1.
//(1) 整型 Int Int8 Int16 Int32 Int64
let firstNumber: Int = 20
let number: Int8 = 20
Int.max // 和当前CPU的大小有关.
Int.min
Int8.max
Int8.min
Int16.max
Int16.min
INT64_MAX
Int64.min

// (2)无符号整型 UInt UInt8 UInt16 UInt32 UInt64
UInt.max
UInt.min

// 2.(带小数点的默认为Double类型)
// (1)Float 7位
let firstFloat: Float = 0.1231212121554454515
let secendFloat = 0.2


// (2)Double 16 位
let firstDouble: Double = 0.452165646415415454545454666666
let secendDouble = 0.5

// Swift中在运算时,有严格的类型匹配.
// 如果类型不匹配时,需要进行类型强转.
Double(firstFloat) + firstDouble

// 3.字符和字符串.
// (1)字符 Character
let char: Character = "a"
// (2)字符串 String
var firstString: String = "无语"
let secendString: String = "对你"

secendString + firstString + String(char) // 字符串拼接.
firstString += secendString

firstString += "\(硬件)" //  "\()"插入运算符.

let ThirdString = "ddDdDd"
ThirdString.uppercaseString // 字符串大写.
ThirdString.lowercaseString // 字符串小写.
ThirdString.characters.count // 获取字符串长度,能返回一个装着字符的数组.

// 4.数组.Array

// Array<元素类型> 或者 [元素类型]
let firstArray: Array<Int> = Array<Int>()
let FourArray: [Int] = [Int]()

var secendArray = [10, 20, "ab", 50]
print(secendArray)
let ThirdArray = [12, "a", 32, secendString]

// 数组添加元素
secendArray.append(30)
secendArray.append("sewew")
secendArray += ["真的"]
secendArray.removeFirst(3) // 从一个开始删到第几个.
secendArray.removeAtIndex(2) //
secendArray.removeFirst() // 删的第一位是哪个数
print(secendArray)

// map 映射 将数组中的值,映射成另外一种类型(类似字符串的万能公式)
let array = [10, 30, 40, 50, 60]
let arr = array.map({"多少\($0)元"}) // $0 表示遍历时每次代替的元素.(应用:如时间戳)
arr
// 筛选 值 > 30 的
let arr1 = array.filter({$0 > 30})
arr1



// 5. 元组
// 1. 元组定义
// (1)元组可以有多个参数.
// (2)参数没有词修饰,用" . "下标去取值.
// (3)有词修饰,可以用" . "或" 词 "取值 .

// 2. 元组的应用.
// (1)可以同时给多个变量赋值()
// (2)函数有多个返回值.
let def = (name:"傻×", age:20, count:100.0)
def.name
def.age
def.count

let abc = ("傻nouou", 19, 200.0)
abc.0
abc.2
abc.1

let(name, age, count) = abc
name
age
count

let arrayYuanzu = [10, 30, 40, 50, 60]
let arryuanzu = arrayYuanzu.map({"多少\($0)元"}) // $0 表示遍历时每次代替的元素.(应用:如时间戳)
print(arr)


// 6. Bool类型

// true false
let str = "玉皇大帝"
let string = "王母娘娘"
str == string

// 7. 字典(无序)
let dic:Dictionary<String, String> = Dictionary<String, String>()

var dictionary = ["name":"小刘","age":"28"]
dictionary["name"]

let index = dictionary.indexForKey("name")
dictionary.removeAtIndex(index!)


dictionary
// 可以有取值范围
// 0...2   0 <= x <= 2 [ 0, 2 ]
// 0.. <2  0 <= x < 2 [0, 2]
array[0...2]


// 二: 分支语句
// 1. if... else
if str == string {
    print("成立")
}else {

 print("不成立")
}
// 2. switch  fallthrough穿过
let i = 20
switch i {
case 0...20 where i > 20:
    print("是20")
    fallthrough // 加它会继续往下走
case 30:
    print("是30")
        // 无fallthrough 直接跳出,默认加了break.
default:
    print("嘿嘿")
}

// switch 可以传字符串,不再局限于整型表达式.
switch "小明" {
    case "小明":
    print("heheda")
   case "小智":
    print("xxxxxxx")
   default:
    print("++++")
}

// 三: 循环.
// 1.while 
var num = 0
while num < 100 {

    num++
}
// 2. do...while Swift2.0以前的写法.
// repeat...while Swift2.0以后.

repeat {
 num++
}while num < 100

// 3. for
for var num = 0; num < 100; num++ {
  num++
}


for num in 0..<100 {

    print(num)
}

// 四:函数
// func 函数名(参数列表) ->返回值类型 {函数体}
// _ 对外隐藏自己的外部参数.
// 函数默认第一个参数加了_

// Swift2.0以前,#number1 以本身作为外部参数.
// 2.0以后,默认的参数列表中第一个元素隐藏外部参数
// 需要在第一个参数前给它起外部参数.

// 参数如果默认给初值,在函数调用时,可以忽略.


func sayHi() {
print("hehele")
}

sayHi()

// 有参有返回值
func sumNumber(num1
    
    num1:Int, _ num2:Int, num3: Int = 0) ->Int {

return num1 + num2 + num3

}
sumNumber(num1: 20, 20)
sumNumber(num1: 20, 20, num3: 1)

// 有参无返回值
func printString (string:String) {
   print(string)
}

// 无参无返回值

func sayNo() {

print("hehe")

}

// 无参有返回值
func sayHopy() ->String {
    
    let xiaoming: String = "小明"

return xiaoming

}

// 有参多返回值.
func haveMoreReturn (more:String) ->(name:String,age:Int) {

    return (name,age)
}


// 多相同参数列表可以忽略为...
func sumAllNumber (number:Int...) ->Int {

    var sum = 0
    for num in number {
    
        sum += num
    
    }
 return sum

}

sumAllNumber(1, 2, 4, 54, 65, 454)


// 无参多返回值.
func noHaveMoreReturn () ->(String,Int) {

return (name,age)

}


// 交换两个变量的值.  inout
var num1 = 20
var num2 = 30

func exchangeNumber ( inout number1: Int, inout _ number2: Int) {

//    let temp = number1
//    number1 = number2
//    number2 = temp

    // 通过元组交换两个变量的值.
    (number1, number2) = (number2, number1)
    
}

exchangeNumber(&num1, &num2)
num1


var str1 = "学成"
var str2 = "啸天"

// T 代表任意类型 泛型(还可以用U,同样也只泛型,U指另外一种泛型)
func exchangeAnyObject<T> ( inout number1: T, inout _ number2: T) {
    
    //    let temp = number1
    //    number1 = number2
    //    number2 = temp
    
    // 通过元组交换两个变量的值.
    (str1, str2) = (str2, str1)
    
}

exchangeAnyObject(&num1, &num2)
str1





相关文章

网友评论

    本文标题:Swift(一)

    本文链接:https://www.haomeiwen.com/subject/fgeclttx.html