swift 3 学习(2)

1,当多个不同类型的数据进行操作时,需要转化为形同的数据类型。
let num1 = 1
let num2 = 2.3
var count  = num1 + num2

error :
Binary operator '+' cannot be applied to operands of type 'Int' and 'Double'

//正确做法
var count  = num1 + Int(num2)


因为swift有类型推导:当swift 知道你输入的类型时,你可以不写数据的类型
Type inference allows you to omit the type when Swift already knows it.

2,循环

while 循环

var aLotOfAs = ""
while aLotOfAs.characters.count < 10 {
    aLotOfAs += "a"
}


var repeatCount = 0
repeat {
    
    print("我是最帅的")
    repeatCount += 1

} while repeatCount < 100

跳出循环
break

var sum = 1
while true {
  sum = sum + (sum + 1)
  if sum >= 1000 {
break
} }

终止本次剩余操作,继续执行下一步操作
continue

The continue statement lets you finish the current iteration of a loop and begin the next iteration.

let count = 10
var sum = 0
for i in 1..<count{
    if i < 9 {
        continue
    }
    sum += i
    print("i = \(i) sum = \(sum)")
    /*
     i = 9 sum = 9
     */
}
3,Ranges
let count = 10
var sum = 0
for i in 1...count {
    sum += i 
     print("i = \(i) sum = \(sum)")
    /*
     i = 1 sum = 1
     i = 2 sum = 3
     i = 3 sum = 6
     i = 4 sum = 10
     i = 5 sum = 15
     i = 6 sum = 21
     i = 7 sum = 28
     i = 8 sum = 36
     i = 9 sum = 45
     i = 10 sum = 55
     */
}

let count = 10
var sum = 0
for i in 1..<count {
    sum += i 
     print("i = \(i) sum = \(sum)")
    /*
     i = 1 sum = 1
     i = 2 sum = 3
     i = 3 sum = 6
     i = 4 sum = 10
     i = 5 sum = 15
     i = 6 sum = 21
     i = 7 sum = 28
     i = 8 sum = 36
     i = 9 sum = 45
     */
}


let count = 10
var sum = 0
for i in 1...count where i % 2 == 1 {
    sum += i
    print("i = \(i) sum = \(sum)")
    /*
     i = 1 sum = 1
     i = 3 sum = 4
     i = 5 sum = 9
     i = 7 sum = 16
     i = 9 sum = 25
     */
}

4,Switch

选择语句


    let number = 10
    switch number {
    case 0:
        print("Zero")
    default:
         print("Non-zero")
    }    
    
    let string = "Dog"
    switch string {
    case "Cat", "Dog":
     print("Animal is a house pet.")
    default:
        print("Animal is not a house pet.")
    }
let hourOfDay = 12
let timeOfDay: String
switch hourOfDay {
case 0...5:
  timeOfDay = "Early morning"
case 6...11:
  timeOfDay = "Morning"
case 12...16:
  timeOfDay = "Afternoon"
case 17...19:
  timeOfDay = "Evening"
case 20..<24:
  timeOfDay = "Late evening"
default:
  timeOfDay = "INVALID HOUR!"
}
let number = 10
switch number {
case _ where number % 2 == 0:
    print("Even")
default:
    print("Odd")
}
let coordinates = (x: 3, y: 2, z: 5)
switch coordinates {
case (0, 0, 0): // 1
    print("Origin")
case (_, 0, 0): // 2
    print("On the x-axis.")
case (0, _, 0): // 3
    print("On the y-axis.")
case (0, 0, _): // 4
    print("On the z-axis.")
default:        // 5
    print("Somewhere in space")
}
let coordinates1 = (x: 3, y: 9, z: 5)
switch coordinates1 {
case let (x, y, _) where y == x:
    print("Along the y = x line.")
case let (x, y, _) where y == x * x:
    print("Along the y = x^2 line.")
default:
    break
}
5,函数 Function

参数

func printMultipleOf(multiplier: Int, andValue: Int) {
  print("\(multiplier) * \(andValue) = \(multiplier * andValue)")
}

printMultipleOf(multiplier: 4, andValue: 2)



func printMultipleOf(multiplier: Int, and value: Int) {
  print("\(multiplier) * \(value) = \(multiplier * value)")
}
printMultipleOf(multiplier: 4, and: 2)

func printMultipleOf(_ multiplier: Int, and value: Int) {
  print("\(multiplier) * \(value) = \(multiplier * value)")
}
printMultipleOf(4, and: 2)

//默认给value一个值 为1  当不设置value是,value值为1
func printMultipleOf(_ multiplier: Int, _ value: Int = 1) {
  print("\(multiplier) * \(value) = \(multiplier * value)")
}
printMultipleOf(4)


** 带有返回类型 **

func multiply(_ number: Int, by multiplier: Int) -> Int {
  return number * multiplier
}
let result = multiply(4, by: 2)

函数可以有一个特殊的返回类型:Never,编译器会知道这个函数会一直运行,不会退出。

Functions can have a special Never return type to inform Swift that this function will never exit.

func infiniteLoop() -> Never {
  while true {
} 
}

直接修改传入参数:inout

一般说来,方法传入的参数是不能改变的。因为传入的参数相当于一个let的常量。
如果你想直接修改传入的参数,就需要inout参数。copy-in copy-out

Parameters are passed as constants, unless you mark them as inout in which case they are copied-in and copied-out.

func incrementAndPrint(_ value: inout Int) {
  value += 1
  print(value)//6
}

参数类型前面的inout关键字表示该参数应该被复制到方法内,在函数内使用的 copy 副本,然后在函数返回时复制出来。

var value = 5
incrementAndPrint(&value)
print(value)//6

把函数当参数传递

函数可以作为参数传递

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

推荐阅读更多精彩内容