基础教程2nd,循环和调节结构

  • 流程序调节制
  • 流程序调节制

objective-c中的日志打字与印刷代码:

前言

Swift提供了近似C语言的流水生产线调整结构,包罗能够频仍实施职分的for和while循环。还有基于特定条件选取实施分化代码分支的if、guard和switch语句,还有控制流程跳转到别的代码的break和continue语句。

斯威夫特增加了for-in循环,用来更简便地遍历数组、字典、区间、字符串和其它系列类型。

Swift的switch语句比C语言中愈发有力。在C语言中,假若某些case比非常的大心漏写了break,那几个case就会贯通至下三个case,而Swift无需写break,所以不会发生那种贯穿的情况。case
还足以协作愈多的门类格局,蕴涵区间匹配(range
matching)、元组(tuple)和一定类型的叙述。switch的case语句中万分的值能够是由case体内部权且的常量只怕变量支配,也能够由where分句描述更扑朔迷离的合营原则。

1  在一定的界定内计数循环,结构为

一  在特定的范围内计数循环,结构为

NSLog(<#NSString *format, ...#>)NSLog(@"OC 中的日志信息");

for循环(For Loops Statement)

  • for:与C语言一样的for循环
  • for-in:连忙遍历集结、系列等

for-in遍历range(个中…表示闭区间[1,5]):

for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
// 何问起 hovertree.com
// 它可以转换for循环为:
for var index = 1; index <= 5; ++index {
   // ...
}

  若我们绝不获取值,能够用下划线(_)过滤,那种用法很广阔:

let base = 3
let power = 10
var answer = 1

// 三个点表示全闭区间[1, power]
for _ in 1...power {
    answer *= base
}
// 何问起 hovertree.com
// 两个点加一个<就是左闭右开[1, 5)
var sum = 0
for _ in 1..<5 {
  sum += 1
}

  常见的遍历数组方法:

let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
    print("Hello, \(name)!")
}
// 何问起 hovertree.com
// or 
for (name, index) in names.enumerate() {
   // 也是很常用的
}

  常见的遍历字典:

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
    print("\(animalName)s have \(legCount) legs")
}
// 何问起 hovertree.com
// 我们知道字典中的键值对是用元组表示的,所以可以直接通过元组来访问

  

for loopVar in startNumber...endNumber
for loopVar in startNumber...endNumber

首先行代码是打字与印刷的格式,打印格局,打字与印刷函数.

while循环(While Loop Statement)

  • while循环,每一趟在循环起来时总括原则是不是符合;
  • repeat-while循环,每一趟在循环甘休时计算口径是或不是合乎。用法与Objective-C中的do-while完全等同。

注意:没有do-while而是repeat-while

var index = 10
while index > 0 {
  index--
}
print(index)// 0
/* hwq2.com */
index = 0
repeat {// 没有do-while了,只有repeat-while
  print("test repeat")
  index++
} while index < 3

  

 关键字in 的后边依次为初叶数字,八个句点和甘休数字,示例:

 关键字in 的前面依次为发端数字,几个句点和得了数字,示例:

其次行代码是在<#基础教程2nd,循环和调节结构。NSString *format,
…#>所出口的音讯,在日记中取得的新闻为:OC 中的日志新闻.

if条件语句(If Condition Statement)

If条件为真假值,要么为true,要么为false。

// 条件只有index值为3,结果才为true,才会打印。
if index == 3 {
  print("3")
}/* hovertree.top */

  

var loopCount :Int=0
for loopCount in 1...10 {
print ("#\(loopCount)")
}
var loopCount :Int=0
for loopCount in 1...10 {
print ("#\(loopCount)")
}

objective-c中在打字与印刷日志里扩充参数,打字与印刷参数的音信:

guide语句(Guide Condition Statement)

guide语法与if分化,假使基准为真,则不进入else分支,不然进入。guide语义是守护的情趣,也正是说,只要满意条件,什么事都未有,不然就会进来else分支。

// 在函数内部,判断必传参数为空时,直接退出函数,这种用法很常用。
guard let name = dict["name"] else {
    return
}// 何问起 hovertree.com

  

 2 变种语法

 2 变种语法

NSLog(@"OC 中的日志信息 %d",num);NSLog(@"%d + %d = %d",one,tow,equalTo);

switch语句(Switch Statement)

swift中的Switch分支与Objective-C中的switch有为数不少两样的地点:

  • swift中不需求为各样case手动写break
  • swift中case协助区间相配
  • swift中的case补助元组
  • swift中的case辅助值绑定
  • swift中的case扶助where条件过滤
  • swift中的case可以停放七个值

不用手写break,也不会隐式贯穿:

var value = 1
switch value {
case 1:
  print("only print 1")
case 2:
  print("only print 2")
default:
  print("on matched value")
}
// "only print 1\n"
// 何问起 hovertree.com

  协理相称区间:

let approximateCount = 62
let countedThings = "moons orbiting Saturn"
var naturalCount: String
switch approximateCount {
case 0:
    naturalCount = "no"
case 1..<5:
    naturalCount = "a few"
case 5..<12:
    naturalCount = "several"
case 12..<100:
    naturalCount = "dozens of"
case 100..<1000:
    naturalCount = "hundreds of"
default:
    naturalCount = "many"
}
print("There are \(naturalCount) \(countedThings).")
// 输出 "There are dozens of moons orbiting Saturn."
// 何问起 hovertree.com

  援助元组,对于不需求获得的值,能够用_过滤:

let httpError = (404, "Http Not Found")
switch httpError {
case let (code, _) where code == 404:
  print(httpError.1)
case let (code, msg) where code == 502:
  print(msg)

default:
  print("default")
}// 何问起 hovertree.com

  帮忙值绑定:

let anotherPoint = (2, 0)
switch anotherPoint {
case (let x, 0):
    print("on the x-axis with an x value of \(x)")
case (0, let y):
    print("on the y-axis with a y value of \(y)")
case let (x, y):
    print("somewhere else at (\(x), \(y))")
}
// 输出 "on the x-axis with an x value of 2"
// 何问起 hovertree.com

  协理where过滤条件:

let point = (1, 3)
switch point {
case let (x, y) where x > y:
  print("x > y")
case let (x, _) where x > 2:
  print("x > 2")
case let (1, y) where y > 4:
  print("y > 4 and x == 1")
case let (x, y) where x >= 1 && y <= 10:
  print("ok")// ok
default:
  print("error")
}// 何问起 hovertree.com

  援助1个case八个值:

let numberSymbol: Character = "三"  // 简体中文里的数字 3
var possibleIntegerValue: Int?
switch numberSymbol {
case "1", "١", "一", "๑":
    possibleIntegerValue = 1
case "2", "٢", "二", "๒":
    possibleIntegerValue = 2
case "3", "٣", "三", "๓":
    possibleIntegerValue = 3
case "4", "٤", "四", "๔":
    possibleIntegerValue = 4
default:
    break
}// 何问起 hovertree.com

  

for loopCount in 1..<10 {
//print 
}
for loopCount in 1..<10 {
//print 
}

率先行代码中的%d是占位符而num是变量的名称,打字与印刷的新闻是:OC
中的日志消息num变量中所积攒的值.

调节转移语句(Control Transfer Statements)

swift有多样调节转移语句:

  • continue:跳过这次巡回,直接进去下1循环
  • break:中断目前的循环只怕暂停有个别标签(下一小节认证)
  • fallthrough:用于switch分支贯穿分支
  • return:用于函数重返
  • throw:用于抛出万分

continue跳过不满足条件的:

let puzzleInput = "great minds think alike"
var puzzleOutput = ""
for character in puzzleInput.characters {
    switch character {
    case "a", "e", "i", "o", "u", " ":
        continue
    default:
        puzzleOutput.append(character)
    }
}
print(puzzleOutput)
// 输出 "grtmndsthnklk"
// 何问起 hovertree.com

  用break退出循环:

for index in 1...5 {
  if index >= 3 {
    break
  }
}

// 在swift中用break,就会直接退出该swift语句
index = 10
for index in 20..<100 {
    switch index {
        case let x where x < 40:
        print(x)
    case let x where x > 100:
        break
    default:
        break
}/* hwq2.com */

  用fallthrough贯穿swift的case:

let integerToDescribe = 5
var description = "The number \(integerToDescribe) is"
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
    description += " a prime number, and also"
    fallthrough
default:
    description += " an integer."
}
print(description)
// 输出 "The number 5 is a prime number, and also an integer."
/* hwq2.com */

  

 3 老式for循环

 3 老式for循环

其次行代码打字与印刷的是one+tow=equalTo这八个变量的值和标记而不是进展计算.

标签语句

譬如偶尔需求在满意有个别条件的时候就跳去试行某段代码,那么此时候用标签语句就很好用:

语法如下:

label name: while condition {
    statements
}/* hwq2.com */

  官方的二个例子:

gameLoop: while square != finalSquare {
    if ++diceRoll == 7 { diceRoll = 1 }
    switch square + diceRoll {
    case finalSquare:
        // 到达最后一个方块,游戏结束
        break gameLoop
    case let newSquare where newSquare > finalSquare:
        // 超出最后一个方块,再掷一次骰子
        continue gameLoop
    default:
        // 本次移动有效
        square += diceRoll
        square += board[square]
    }
}
print("Game over!")
/* hovertree.top */

  

for loopCount=0;loopCount<10;loopCount++) {
//do something
}
for loopCount=0;loopCount<10;loopCount++) {
//do something
}

** swift语言的日志打字与印刷代码:**

检查API可用性

语法如下:

if #available(iOS 9, OSX 10.10, *) {
    // 在 iOS 使用 iOS 9 的 API, 在 OS X 使用 OS X v10.10 的 API
} else {
    // 使用先前版本的 iOS 和 OS X 的 API
}/* hovertree.top */

  

详尽如何运用,请阅读文章:Swift检查实验API可用性

 伊始应用playground

澳门葡京备用网址, 开端运用playground

println();println("swift 中的日志信息");

写在最终

本篇博文是小编在就学斯威夫特二.一的长河中记录下来的,恐怕有点翻译不完了,还请建议。其余,全体例子都以笔者演习写的,若有不客观之处,还望建议。

学习一门语言最棒的方法不是看万遍书,而是入手操作、动手演练。尽管我们喜爱,能够关注哦,尽量二-3天整治壹篇Swift二.一的篇章。那里所写的是基础知识,要是你已经是大神,还请绕路!

推荐:

澳门葡京备用网址 1

澳门葡京备用网址 2

先是行代码是swift的打印函数.次之行为打字与印刷的具体内容输出日志音信为:(swift
中的日志音信).

流程序调控制正是决定

流程调整正是仲裁

swift中在打字与印刷日志里增添参数,打字与印刷参数的新闻:

if (true /false ) {
//do sth
}else
{
//do other thing
}
if (true /false ) {
//do sth
}else
{
//do other thing
}
println("呵呵",num,"哈哈");println("a的值为",a,"b的值为",b);

 swift 比较运算符

 swift 比较运算符

首先行代码中bum为变量的名目,与OC中差异的是不再需求占位符而是间接用,号隔断就足以打印,打印结果为:(呵呵,num的值,哈哈).

==, != ,> , < , >= ,<=
==, != ,> , < , >= ,<=

第壹行代码a,b都以变量,打印的值为 (a的值为,a变量的值,b的值为,b变量的值).

 

 

** 在objective-c中的常量:**

if  true /false {
//do sth1
}else if true /false {
//do sth2
}else if true /false {
//do sth3
}else {
//do oter thing
}
if  true /false {
//do sth1
}else if true /false {
//do sth2
}else if true /false {
//do sth3
}else {
//do oter thing
}
NSString * const name = @"jack";

 switch case default 类似C,不过不限于整形数字和enum,仍可以够用于String,
其余switch-case 在swift中不须求利用break

 switch case default 类似C,可是不限于整形数字和enum,仍是能够用于String,
其它switch-case 在swift中不需求采纳break

那行代码代表着三个誉为name的常量
指向了多个内部存款和储蓄器区域储存了一个字符串jack,并且这一个针对的区域不得以改造,相当于说不可能在赋值新的字段给那么些常量了.

for three in threeArray {
  switch three {
    case "Cak" :
      print ("Furniture")
    case "Pecan":
      print ("Pie")
     case "Maple":
       print ("Syrup")
    default:
       print ("Wood")
 }
}
for three in threeArray {
  switch three {
    case "Cak" :
      print ("Furniture")
    case "Pecan":
      print ("Pie")
     case "Maple":
       print ("Syrup")
    default:
       print ("Wood")
 }
}

** 在objective-c中的变量:**

while 循环

while 循环

NSString * name = @"jack"name = @"Anthony"
while someCondition {
//do sth
}


repeat {
//do sth
} while someCondition
while someCondition {
//do sth
}


repeat {
//do sth
} while someCondition

率先行代码代表着七个叫做name的变量,指向了多个内部存款和储蓄器区域积攒了叁个字符串jack.在其次行代码中校1个新的字段Anthony的坐标赋值给了name,那样变量name所蕴藏的值发生了改观,并且在注明objective-c的变量与常量中必须钦定数量类型.

 跳出循环利用break

 跳出循环利用break

** 在swift中的常量:**

//Todo。swift中怎么未有continue呢,假使只有退出当前轮回呢?

//Todo。swift中怎么未有continue呢,假若仅仅退出当前巡回呢?

let b = 2;

 

 

常量在宣称的时候必须赋值 并且不得不赋值2遍,常量赋值时要用 let 做前缀.

在swift中的变量:

var b;

变量在证明的时候能够不赋值,并且能够赋值覆盖多次,swift不管是常量还是变量在宣称的时候能够不内定数据类型,编辑器会自动补上.

在swift中数据类型的宣示:

var b:Double = 66.66;

数量常量变量类型 变量名称 :数据类型 = 值;var = 变量,常量的梳洗符b =
变量名称;: = 钦点数据类型的梳洗符Double = 数据类型“=” = 赋值符6陆.66 =
值;以上就是3个变量并且钦赐表明数据类型的格式;

在objective-c中if与else的使用:

objective-c是一门弱语法,在选拔if与else中我们能够写出以下代码:

  • 1

NSString *str = @"jack";if{ str = @"杰克"; }
  • 2

int a =3;int b =3;if{ a = 4;}

在第3个代码中大家率先成立了一个字符串并把字符串放进if的推断语句中,那时if判断目标不为nil,度量准则成功,推行if代码块中的语句.

在第二个代码中,设置了2个变量,在if的判别语句中做减法,在宗旨数据类型中,假设在if推断语句的结果不为0就都为真,假若是0就为假,所以第2个代码段中的if语句不施行

在swift中if与else的使用:

var a =3;var b =3;if{ a = 4;}

在swift中if中所填写的代码必须是3个布尔表明式,不得以和objective-c那样放三个变量看是否为0或是不是为nil

在objective-c中switch,case,default的使用:

 int i = 0; switch  { case 1:{ int b = 3; } break; default: NSLog; break; }

在objective-c中switch是足以运用整数型和枚举型来展开流程分支的垄断当得到13分的case值时,试行case后的代码段,要注意的是只要case代码段前边未有break那么case会继续实行下去,直到蒙受break,default能够不写,急需留意的是借使在swich的case代码中定义变量那么要加{}来将代码扩起来.

在swift中switch,case,default的使用:

 let name = "jack" switch name { case "jack": let print = "hehe"; println; case "David": let print = "heihei"; println; default: let print = " houhou"; println; }

在swift中switch要比objective-c能够使用越多的数据类型来举办流程序调节制,并且在case中不须要在进入break要是实施一个case会自动的弹出不会进行此外的状态,在case中得以一贯定义变量,在swift中尽管case不能够包罗全部可产生的场合就务须有default.

fallthrough 贯穿 where

fallthrough 在case最终加等价于在此以前的OC不写breakwhere 在case后
能够做额外的尺码判别

在objective-c中for循环的行使:

 for (int i = 0 ; i <3 ; i++) { NSLog;}

for (NSString * str in arr) { NSLog(@"%@",str);}

在objective-c中的2种循环:

率先各类西子行第一个表达式,然后实践括号中的代码,在试行第三个表明式,遵照真假,借使是真就实行第陆个表明式,然后继续继续执行代码,固然为假的情状下跳出循环.

其次种,将arr中的全数因素挨个赋值给str 并实践代码段.

在swift中for循环的运用:

for var index = 0 ; index < 7 ; ++index{ println("传统for \;}

与理念的objective-c差异不大唯1变化的是var表明情势,和 ()能够省略

for index in 1...3{ println;}

将 一…3 包涵3的数字 依次赋值给index 每赋值一次实践一回代码段

在objective-c中while,do…while的使用:

while  { }

do{ }while;

objective-c二月其余语言未有太大的分别,while是先判定{}内的表明式,然后实施代码段,而do…while是先进行种种代码段在认清表明式.

swift中while,do…while的使用::

 var i = 0; while i < 7{ i+=1 } do{ i-=1; }while i < 0 ;

swift中while,do…while与objective-c基本没什么分裂.

2.0 将do – while改版

repeat{ print}while;

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website