前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift学习笔记(一)

Swift学习笔记(一)

作者头像
Originalee
发布2018-08-30 10:38:09
4420
发布2018-08-30 10:38:09
举报
文章被收录于专栏:编程之旅编程之旅

简单记录学习Swift的笔记

简单值

  • 使用let来声明常量,使用var来声明变量。
  • 常量或者变量的类型,必须和你赋给它们的值一样。然而,不用明确地声明类型,声明的同时赋值的话,编译器会自动推断类型。
  • 如果初始值没有提供足够的信息(或者没有初始值),那你需要在变量后面声明类型,用冒号分割。
  • 值永远不会被隐式转换为其他类型。如果你需要把一个值转换成其他类型,请显式转换。

例如

代码语言:javascript
复制
let label = "The width is"
let width = 94
let widthLabel = label + String(width)
  • 有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号之前写一个反斜杠。
代码语言:javascript
复制
let firstWord = "Lin"
let secondWord = "i love \(firstWord)"
  • 使用方括号[]来创建数组和字典,并使用下标或者键(key)来访问元素。最后一个元素后面允许有个逗号。
代码语言:javascript
复制
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1]

var occupations = [
    "Malcolm": "Captain",
    "Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"
  • 要创建一个空数组或者字典,使用初始化语法。
代码语言:javascript
复制
let emptyArray = [String]()
let emptyDictionary = [String: String]()
  • 如果类型信息可以被推断出来,你可以用[][:]来创建空数组和空字典——就像你声明变量或者给函数传参数的时候一样。
代码语言:javascript
复制
shoppingList = []
occupations = [:]

控制流

  • 使用ifswitch来进行条件操作,使用for-inforwhilerepeat-while来进行循环。
  • 包裹条件和循环变量括号可以省略,但是语句体的大括号是必须的。
代码语言:javascript
复制
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
    if score > 50 {
        teamScore += 3
    } else {
        teamScore += 1
    }
}
print(teamScore)
  • if语句中,条件必须是一个布尔表达式
  • 你可以一起使用iflet来处理值缺失的情况。这些值可由可选值来代表。一个可选的值是一个具体的值或者是nil以表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。
代码语言:javascript
复制
var optionalString: String? = "Hello"
print(optionalString == nil)

var optionalName: String? = "Lin"
var greeting = "Hello!"

optionalName = nil
if optionalName == nil {
   greeting = "Lix love Lin ?"
}else{
    let name = optionalName
    greeting = "\(name) love Lix ?"
}
  • 如果变量的可选值是nil,条件会判断为false,大括号中的代码会被跳过。如果不是nil,会将值赋给let后面的常量,这样代码块中就可以使用这个值了。
  • 另一种处理可选值的方法是通过使用??操作符来提供一个默认值。如果可选值缺失的话,可以使用默认值来代替。
代码语言:javascript
复制
let nickName: String? = "球球 ?"
let fullName: String? = "LinHong"
let informalGreeting = "Hi \(nickName ?? fullName)"
  • switch支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。
代码语言:javascript
复制
let sport = "basketball"
switch sport {
case "football":
    print("this is the first sport")
    
case "running":
    print("Lin was running everyday")
    
case let x where x.hasSuffix("ball"):
    print("Lix play \(sport) everyday")
    
default:
    print("keep moving")
}
  • 运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break
  • 你可以使用for-in来遍历字典,需要两个变量来表示每个键值对。字典是一个无序的集合,所以他们的键和值以任意顺序迭代结束。
代码语言:javascript
复制
let interestingNumbers = [
    "Prime": [2,3,5,7,11],
    "Fibonacci": [1,1,2,3,5,8,13],
    "Square": [1,4,9,16]
]

var largest = 0
var numberClass = "number"
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            numberClass = kind
        }
    }
}

print(largest)
print(numberClass)
  • 使用while来重复运行一段代码直到不满足条件。循环条件也可以在结尾,保证能至少循环一次。
代码语言:javascript
复制
var n = 2
while n < 100 {
    n = n * 2
}
print(n)

var m = 2
repeat {
 m = m * 2
} while m < 100     //循环条件可以在结尾,至少保证循环一次
print(m)
  • 你可以在循环中使用..<来表示范围。
代码语言:javascript
复制
var total = 0
for i in 0..<4 {
    total += i
}
print(total)
  • 使用..<创建的范围不包含上界,如果想包含的话需要使用...
代码语言:javascript
复制
var total = 0
for i in 0...100 {
    total += i
}
print(total)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.06.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单值
  • 控制流
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档