Swift 了解
本篇仅于个人小记,记录个人不熟悉的知识点儿。如若要了解更全,请前往如下网址:http://www.runoob.com/swift/swift-arrays.html
1.Swift 标记
- 分号:Swift不要求在每行语句的结尾使用分号(;), 但同一行书写多条语句时,必须用分号隔开;
- 标识符:给变量、常量、方法、函数、枚举、结构体、类、协议等制定的名字。命名规则如下:
- 区分大小写、
- 标识符的首字符可以以下划线(_)或者字母开始,但是不能数字
- 标识符其他字符可以是下划线(_)、字母或者数字
- 变量名也可以用中文名来命名
注意:Swift中的字母采用的是Unicode编码[1]。Unicode叫做统一编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符,甚至是我们在聊天工具中使用的表情符号。如果一定要使用关键字作为标识符,可以在关键字前后添加重音符号(`)。
- Swift空格:Swift对空格的使用有一定的要求,运算符不能直接跟在变量或者常量的后面,推荐的写法如下:
let a = 1 + 2; // 编码规范推荐使用这种写法
- Swift 字面量:特定的数字、字符串、布尔值,能够直接了当地指出自己的类型并为变量进行赋值
42 // 整型字面量
3.14159 // 浮点型字面量
"Hello, world!" // 字符串型字面量
true // 布尔型字面量
- 类型别名:typealias
- Swift 可选(Optionals)类型:用于处理值确实的情况;用“ ?”作为命名类型Optional的简写
- 整型字面量:整型字面量可以是一个十进制、二进制(0b)、八进制(0o)或者16进制(0x)。
let decimalInteger = 17 // 17 - 十进制表示
let binaryInteger = 0b10001 // 17 - 二进制表示
let octalInteger = 0o21 // 17 - 八进制表示
let hexadecimalInteger = 0x11 // 17 - 十六进制表示
- 闭区间运算符:1...5区间值为:1 2 3 4 5 ; 1..<5区间值:1 2 3 4;
2.语法
- 字符串中插入值:字符串插值是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。插入的字符串字面量的每一项都在以 反斜线为前缀的圆括号中: var stringA = "\(varA) 乘于 \(constA) 等于 \(varC * 100)"
- 字符串的链接:字符串可以通过 + 号 来连接,如下: var stringA = constA + constB
- 字符:是一个单一的字符字符串字面量,数据类型为 Character(如果给赋连个字符就会出错);同时也不能赋值 空字符变量
- 数组:Swift数组会强制检测元素的类型,如果类型不同则会报错;应该遵循像Array<Element>这样的形式,即这个数组中只能允许存在唯一一种数据类型。可以通过apped()方法或者赋值运算符 += 在数组末尾添加元素。如果我们同时需要每个数据项的值和索引值,可以使用 String 的 enumerate() 方法来进行数组遍历。如下代码:
var someStrs = [String]() someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("Runoob")
someStrs += ["Google"] for (index, item) in someStrs.enumerated() {
print("在 index = \(index) 位置上的值为 \(item)")
} --------》运行结果
在 index = 0 位置上的值为 Apple
在 index = 1 位置上的值为 Amazon
在 index = 2 位置上的值为 Runoob
在 index = 3 位置上的值为 Google
通过只能可读属性 isEmpty 来判断数组是否为空
- 字段:用来存储无序的相同类型的数据集合,与数组相似,会强制检测元素的类型。如果元素的类型不同,会报错。定义格式如下:
var someDict = [KeyType: ValueType]() --》例如: var someDict = [keyType : ValueType]()
创建一个新的字典,如下:var someDict:[Int : String] = [1:"One",2:"Two",3:"Three"]
使用updateValue(forKey:)增加或更新字典的内容。如果key不存在,则添加值,如果存在则修改key对应的值。
使用removeValueForKey() 或者通过指定健的值为nil来移除key-value对。
使用 for-in 循环来遍历某个字典中的键值对
3.Swift函数
swift函数包含了参数类型及返回值类型, swift定义函数使用关键字 func; 可以指定一个或者多个输入参数和一个返回值类型
语法如下:
func funcname(形参) -> returntype
{
Statement1
Statement2
……
Statement N
return parameters
}
元组作为函数返回值, 其中函数返回值类型可以是字符串、整型、浮点型等。元组与数组蕾丝,不同的是,元组的元素可以是任意类型,使用的时候是用 圆括号 , 去数据的时候,用点语法来取值。如下代码:
func minMax(array: [Int]) -> (min: Int, max: Int) {
var currentMin = array[0]
var currentMax = array[0]
for value in array[1..<array.count] {
if value < currentMin {
currentMin = value
} else if value > currentMax {
currentMax = value
}
}
return (currentMin, currentMax)
} let bounds = minMax(array: [8, -6, 2, 109, 3, 71])
print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)")
注意:可选元组类型如(Int, Int)? 与元组包含可选类型如(Int?, Int?)是不同的,可选的元组类型,整个元组是可选的,不是元组中的每个元素值可选。
一般默认在函数中定义的参数都是常量参数,即这个参数你只可以查询使用,不能改变它的值。如果想要声明一个变量参数,可以在参数定义前加 inout 关键字,这样就可以改变这个参数的值。
如果不输入 inout这个参数,那_a 和 _b 不能重新赋值了。
同时,可以将函数作为参数传递给另外一个参数。
4. Swift 闭包
闭包 是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。
语法如下:
{(parameters) -> return type in
statements
}
实例:
let divide = {(val1: Int, val2: Int) -> Int in
return val1 / val2
}
let result = divide(200, 20)
print (result)
Swift 了解的更多相关文章
- iOS代码规范(OC和Swift)
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- 算法与数据结构(十七) 基数排序(Swift 3.0版)
前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关.今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比 ...
- 算法与数据结构(十五) 归并排序(Swift 3.0版)
上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...
- Swift enum(枚举)使用范例
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...
- swift开发新项目总结
新项目用swift3.0开发,现在基本一个月,来总结一下遇到的问题及解决方案 1,在确定新项目用swift后,第一个考虑的问题是用纯swift呢?还是用swift跟OC混编 考虑到新项目 ...
- swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明
关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...
- 【swift】BlockOperation和GCD实用代码块
//BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...
- iOS开发系列--Swift 3.0
概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行 ...
随机推荐
- Mac上面不能安装Homebrew
这个stackoverflow的答案解决了我的问题: http://stackoverflow.com/questions/18039029/mac-can-t-install-homebrew 问题 ...
- 如何在Ubuntu里安装Helm
Helm是什么?在战网上玩过暗黑破坏神2代的程序员们应该还记得,Helm是国度的意思. 而在计算机领域,Helm是什么? Helm是Kubernetes的一个包管理工具,有点像nodejs的npm,U ...
- 你的项目刚刚启动?是时候考虑Globalization了!
今天继续由SAP成都研究院非典型程序猿, 菜园子小哥王聪给大家带来分享. 关于这个很长的定语的由来,请参考这篇文章,里面有王聪的背景介绍,包括他种菜的特长:当我用UI5诊断工具时我用些什么. 秋天到了 ...
- 【Android】ListView中EditText焦点问题
一.描述: 近期一个项目中需要开发一种类似表格的界面来显示和配置参数,Android并无直接类似表格的控件支持,我采用了ListView中布局EditText和TextView来实现,其中TextVi ...
- CocosCreator工程内的命名
命名结构总体的命名结构遵循以下格式 前缀-内容-尾缀 - 前缀:用来定义node的属性- 内容:node的名字- 尾缀:序列或状态1231. 前缀说明:在开始的时候定义/声明这个节点的属性前缀可以是一 ...
- ES6 export default 和 export 的区别
export default 和 export 区别: 1.export与export default均可用于导出常量.函数.文件.模块等 2.你可以在其它文件或模块中通过import+(常量 | 函 ...
- STL || Gym 101653U Top 25
一组字符串给出两种排列方式, 求最小分成多少组 如 A A B C C D D B E E 则分成3组 A B C D E 即为1 3 1 #include < ...
- 在虚拟机linux环境下编译windows版adb fastboot
原文出自:http://blog.chinaunix.net/uid-20546441-id-1746200.html 我根据虚拟机编译遇到的问题进行一些添加 [前提条件] Linux Android ...
- 在实现栈中原来功能的基础上,获得一个栈中最小值,要求时间复杂度 bigO(1)
思路: 准备两个栈 stackData stackMin package my_basic; import java.util.Stack; public class GetMinStack { St ...
- [模板] 动态ST表
ST表本身是不可修改的. 如果考虑增加一个数,可以把ST表反过来写,即f[i][j]表示i往前1<<j个数,一个数最多影响logn个数,常数非常小. #include<iostrea ...