Swift(一)

//: 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





最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容