Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Swift学习笔记(一)

Swift学习笔记(一)

作者头像
Originalee
发布于 2018-08-30 02:38:09
发布于 2018-08-30 02:38:09
46900
代码可运行
举报
文章被收录于专栏:编程之旅编程之旅
运行总次数:0
代码可运行

简单记录学习Swift的笔记

简单值

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

例如

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

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

控制流

  • 使用ifswitch来进行条件操作,使用for-inforwhilerepeat-while来进行循环。
  • 包裹条件和循环变量括号可以省略,但是语句体的大括号是必须的。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
let nickName: String? = "球球 ?"
let fullName: String? = "LinHong"
let informalGreeting = "Hi \(nickName ?? fullName)"
  • switch支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
var n = 2
while n < 100 {
    n = n * 2
}
print(n)

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Swift体验2
使用if和switch做条件判断,使用for-in,for,while,do-while做循环 操作。括号中的条件或循环变量是可选的。括号的身体是必需的。
用户3004328
2018/09/06
3470
Swift 基础之控制流
Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的 for 和 while 循环,基于特定条件选择执行不同代码分支的 if 和 switch 语句,还有控制流程跳转到其他代码的 break 和 continue 语句。
网罗开发
2021/01/29
6470
IOS-swift5.1快速入门之旅
传统表明,新语言中的第一个程序应在屏幕上打印“Hello,world!”字样。在Swift中,这可以在一行中完成:
eadela
2019/09/29
2.1K0
Apple Swift编程语言入门教程
今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍《The Swift Programming Language》中摘录和提取而成。希望对各位的iOS&OSX开发有所帮助。
sanmutongzi
2020/03/04
2.1K0
Swift基础类型[通俗易懂]
假设初始值没有提供足够的信息(或者没有初始值),那你须要在变量后面声明类型,用冒号切割。
全栈程序员站长
2022/07/10
9570
Swift解读专题一——Swift2.2语言预览
        本系列专题是我通过阅读Swift2.2语言开发文档,翻译总结加上自己的理解整理而成。其中大部分结构和内容都来自开发文档,有疏漏和错误之处,还望更多朋友指出,共同交流进步,我的QQ:316045346。
珲少
2018/08/15
2.1K0
Swift基础 集合类型
翻译自:https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html
郭顺发
2023/07/17
1700
Swift基础 集合类型
Swift3.0 - 真的很简单
中文翻译文档 https://github.com/numbbbbb/the-swift-programming-language-in-chinese
酷走天涯
2018/09/14
8820
Swift3.0 - 真的很简单
Swift学习笔记(二)
函数和闭包 使用func来声明一个函数,使用名字和参数来调用函数。使用->来指定函数返回值的类型。 func greet(name: String, food: String) -> String { return "Hello \(name), let's eat some \(food)" } greet("Lin", food: "fruit") 使用元组来让一个函数返回多个值。该元组的元素可以用名称或数字来表示。 func calculateStatistics(scores: [Int]
Originalee
2018/08/30
4500
Swift基础语法(一)
Swift语言是苹果公司在Apple WWDC 2014上退出的,用来撰写MacOS和iOS应用程序。
拉维
2020/05/22
4.4K0
Swift学习总结
5、switch语法与objc差别很大,执行一个分支马上停止,不需要break语句跳出,反而想要穿透到下面分支还要用fallthrough语句。
SheltonWan
2019/06/06
3.1K0
Swift学习总结
Swift教程(四)--集合类型
Swift 提供了三种主要的集合类型(collection types),所谓的数组(arrays)、集合(sets)还有字典(dictionaries),用来储存值的集合。数组是有序的值的集合。集合是唯一值的无序集合。字典是无序的键值对集合。
roc
2019/07/31
1.2K0
Swift基础语法简化版
该网站是对Swift官方文档的翻译,但不是无脑翻译,而是结合作者的开发经验,在翻译的基础上,给出一些实用的建议。
拉维
2020/06/23
3.9K0
万字长文|Swift语法全面解析|附示例
Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。 swift 是一种安全,快速和互动的编程语言。 swift 支持代码预览(playgrounds),这个特性可以允许程序员在不编译和运行应用程序的前提下运行 Swift 代码并实时查看结果。
悟空聊架构
2020/07/30
3.8K0
Swift3.0 - 数据类型
// 插入操作 shoppingList.insert("Maple Syrup", at: 0)
酷走天涯
2018/09/14
6590
swift体验1
一门新语言传统的入门方式是在屏幕上打印“Hello,wrold”。在Swift中你可以用下面一行 代码:
用户3004328
2018/09/06
6340
Swift 是猴还是猿?
段义鹏
2017/11/03
4K0
Swift 是猴还是猿?
Swift基础 类型铸造
翻译自:https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html
郭顺发
2023/07/17
1070
Swift进阶四——流程控制
我们可以使用函数stride(from:, to:, by:)来跳过不想要的标记(开区间);闭区间也同样适用,使用stride(from:, through:, by:)函数即可。
拉维
2020/12/11
8660
Swift进阶四——流程控制
Swift3.0 - 流控制
需求二: 输入一个顶点 判断是否在X轴上,或者Y轴上,或者既不在x轴,也不再Y轴上
酷走天涯
2018/09/14
4680
相关推荐
Swift体验2
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验