专栏首页编程之旅Swift学习笔记(一)

Swift学习笔记(一)

简单记录学习Swift的笔记

简单值

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

例如

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

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

控制流

  • 使用ifswitch来进行条件操作,使用for-inforwhilerepeat-while来进行循环。
  • 包裹条件和循环变量括号可以省略,但是语句体的大括号是必须的。
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以表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。
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后面的常量,这样代码块中就可以使用这个值了。
  • 另一种处理可选值的方法是通过使用??操作符来提供一个默认值。如果可选值缺失的话,可以使用默认值来代替。
let nickName: String? = "球球 ?"
let fullName: String? = "LinHong"
let informalGreeting = "Hi \(nickName ?? fullName)"
  • switch支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。
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来遍历字典,需要两个变量来表示每个键值对。字典是一个无序的集合,所以他们的键和值以任意顺序迭代结束。
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来重复运行一段代码直到不满足条件。循环条件也可以在结尾,保证能至少循环一次。
var n = 2
while n < 100 {
    n = n * 2
}
print(n)

var m = 2
repeat {
 m = m * 2
} while m < 100     //循环条件可以在结尾,至少保证循环一次
print(m)
  • 你可以在循环中使用..<来表示范围。
var total = 0
for i in 0..<4 {
    total += i
}
print(total)
  • 使用..<创建的范围不包含上界,如果想包含的话需要使用...
var total = 0
for i in 0...100 {
    total += i
}
print(total)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS开发——带有暂停功能的计时器

    上篇博客我跟大家分享了如何在iOS系统中使用原生框架获取步数,又是大半个月过去了,运动模块的全部功能也总算完成了,也打算有始有终的把如何做一个跑步类App跟大家...

    Originalee
  • 数据结构——AVL树(C语言)

    AVL(Adelson-Velskii 和 Landis)树是带有平衡条件的二叉查找树。在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节...

    Originalee
  • iOS开发——步数获取

    最近半个月的开发工作,重点一直是类似于悦跑圈、咕咚这样的运动产品的功能,所以在处理iOS设备在运动中的表现也是积累了一些经验。

    Originalee
  • swift体验1

    一门新语言传统的入门方式是在屏幕上打印“Hello,wrold”。在Swift中你可以用下面一行 代码:

    用户3004328
  • 38.Swift学习之实用知识点

    Swift 中提供了很多实用的知识点,这些知识点极大提高了开发的效率。本章节主要罗列 Swift 中那些好用但未必人人都知道的知识点。

    YungFan
  • Swift基础---Integers

    用户3004328
  • 通过HTTP的HEADER完成各种骚操作

    作为一名专业的切图工程师,我从来不care网页的header,最多关心Status Code是不是200。但是HEADER真的很重要啊,客户端从服务器端获取内容...

    小美娜娜
  • swift基础1

    用户2554571
  • ES6- Set-2之去重—并集—交集—差集

    刚才是在常规的情况下,但是数组中出现了对象,这个去重可能就跪了 我们来看一下

    envoke
  • Combine-Foundation中的Publisher

    为了方便使用,Foundation 为 iOS 开发中的几个常见操作提供了直接获取 Publisher 的方式。

    YungFan

扫码关注云+社区

领取腾讯云代金券