Swift基础学习(一)基本语法
Swift 简介(赞美一番,收集了多篇 关于Swift 学习教程的语言简介
一直以为英语和汉语混写的时候只是英语字母结尾的地方打空格,原来是英语字母的开头和结尾都要加一个空格,英语字母后面是标点符号的时候不加空格):
Swift 是一种新的编程语言,用于编写 iOS,macOS,watchOS 和 tvOS 的应用程序。Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。Swift 采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣。Swift 是基于成熟而且倍受喜爱的 Cocoa 和 Cocoa Touch 框架,它的降临将重新定义软件开发。
Swift 的开发从很久之前就开始了。为了给 Swift 打好基础,苹果公司改进了编译器,调试器和框架结构。我们使用自动引用计数(Automatic Reference Counting, ARC)来简化内存管理。我们在 Foundation 和 Cocoa 的基础上构建框架栈使其完全现代化和标准化。 Objective-C 本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语言技术。正是得益于这些基础工作,我们现在才能发布这样一个用于未来苹果软件开发的新语言。
Objective-C 开发者对 Swift 并不会感到陌生。它采用了 Objective-C 的命名参数以及动态对象模型,可以无缝对接到现有的 Cocoa 框架,并且可以兼容 Objective-C 代码。在此基础之上,Swift 还有许多新特性并且支持过程式编程和面向对象编程。
Swift 对于初学者来说也很友好。它是第一个既满足工业标准又像脚本语言一样充满表现力和趣味的系统编程语言。它支持代码预览(playgrounds),这个革命性的特性可以允许程序员在不编译和运行应用程序的前提下运行 Swift 代码并实时查看结果。Playground 会随着我们编写代码实时为我们完成编译,并自动为我们显示每一行代码的执行结果,无论是简单语句,循环,甚至是各种UI,Playground 都可以完美胜任,是我们理解 Swift 中各种语言特性的利器。我们的学习过程的编码基本都在 playgrounds 下进行,大大提高的我们学习的效率,所写即所见。
Swift 将现代编程语言的精华和苹果工程师文化的智慧结合了起来。编译器对性能进行了优化,编程语言对开发进行了优化,两者互不干扰,鱼与熊掌兼得。Swift 既可以用于开发 “hello, world” 这样的小程序,也可以用于开发一套完整的操作系统。所有的这些特性让 Swift 对于开发者和苹果来说都是一项值得的投资。
Swift 是编写 iOS,macOS,watchOS 和 tvOS 应用的极佳手段,并将伴随着新的特性和功能持续演进。
Swift 提供了 C 和 Objective-C 的所有基础数据类型,包含整数 Int,浮点数 Double、Float,布尔值 Bool 以及 String 字符串(String 类型已经不再是字符数组,在 Swift 里面 String 不是集合类型,在 Swift 里面字符串做了很大的优化)。同时 Swift 也提供了两种强大的集合数据类型,包括 Array(数组)和Dictionary(字典)。除了熟悉的类型,Swift 介绍了 Objective-C 中无法实现的高级类型。这些包括元组,从而能够创建和传递值分组。元组可以从一个函数作为一个单一的复合值返回多个值。
和 C 一样,Swift 使用变量来储存和访问数值。Swift也支持数值不能改变的变量,这在C中我们称为常量,但在 Swift 中常量将会更加强大。当变量值不需要改变的时候,可以使用常量,这会使得代码更加安全和简洁。
另外,Swift引入了在Objective-C中没有的一些高级数据类型,例如tuples(元组),可以使你创建和传递一组数值。
Swift 还引入了可选项类型(Optionals),用于处理变量值不存在的情况。可选项的意思有两种:一是变量是存在的,例如等于 X,二是变量值根本不存在。Optionals 类似于 Objective-C 中指向 nil 的指针,但是适用于所有的数据类型,而非仅仅局限于类,Optionals 相比于 Objective-C 中 nil 指针更加安全和简明,并且也是 Swift 诸多最强大功能的核心。
Swift 是一门类型安全的语言,Optionals 就是代表。Swift 能帮助你在类型安全的环境下工作,如果你的代码中需要使用 String 类型,Swift 的安全机制能阻止你错误的将 Int 值传递过来,这使你在开发阶段就能及时发现并修正问题。
Hello, world!
在屏幕上打印"Hello, world!",在 Swift 里面可以用一行代码实现:
1 print("Hello, world!")
1 NSLog("Hello, world!")
写过 C 和 OC 代码的打印"Hello, world!",对这种形式应该特别熟悉,在 Swift 中,这行代码就是一个完整的程序。不需要为了输入输出或者字符串处理导入一个单独的库,全局作用域中的代码会被自动当做程序的入口点,所以也不需要 main()
函数。
Swift:分号的使用
swift 中每一行独立代码的末尾都不再需要加分号,如果是多个语句在同一行内书写时要用分号把它们隔开。
1 // 第一个语句是定义一个变量 Str,并赋初始值是"Hello, playground",后面是四个打印语句,中间用分号隔开(此时在最后一个 NSLog 后面加分号不加分号都可以) 2 var str = "Hello, playground"; print(str); print(str); NSLog(str); NSLog("xxx\(str)")
Swift:引入
使用 import 语句来引入任何的 Objective-C 框架(或 C 库)到 Swift 程序中。例如 import cocoa 语句导入了使用了 Cocoa 库和 API,我们可以在 Swift 程序中使用他们。
Cocoa 本身由 Objective-C 语言写成,Objective-C 又是 C 语言的严格超集,所以在 Swift 应用中我们可以很简单的混入 C 语言代码,甚至是 C++ 代码。
1 import UIKit // 引入UIKit 框架 2 import Foundation // 引入Foundation 框架 3 import ImageIO // 引入ImageIO
Swift:注释
两个反斜杠开头是单行注释,OC 和 Swift 保持不变:
1 // 这是单行注释
三个反斜杠是标记注释写法之一,OC 和 Swift 保持不变:
1 /// 标记注释
1 /// 测试标记注释 2 /// 3 /// - Parameter person: 人数 4 /// - Returns: HML 5 func test(person: Int) -> String { 6 print(person) 7 return "HML" 8 }
标记注释用法如下:
另外一种标记注释的写法是,以/** 开头以*/ 结尾,中间包裹标记注释的内容,标记注释多用来标记函数的用途,以及属性的所代表的含义。
1 /** 2 标记注释的内容 3 */
多行注释以 /* 开头以 */ 结尾,中间包裹注释的内容:
1 /* 2 这是一个多行注释 3 */
与 OC 不同的是,Swift 可以在多行注释里面嵌套其它多行注释,OC 是直接报错的。写法是在一个多行注释块内插入另一个多行注释,第二个注释块封闭时,后面仍然接着第一个注释块。
1 /* 2 第一个多行注释开头 3 /* 4 第二个多行注释在里面嵌套 5 */ 6 第二个多行注释结尾 7 */
Swift:标识符
和其它语言一样,标识符就是给变量、常量、方法、函数、枚举、结构体、类、协议、闭包等命名的名字,构成标识符的字符串有一定的规则,在Swift 里面规则如下:
1.字母区分大小写,如 "str" 和 "Str" 是两个不同的标识符。
2.标识符的首个字符可以是字母或者下划线,且只能以字母或者下划线开头。
3.标识符里面只能有字母、数字、下划线组成,不能包含符号,如"~!@#$%^&*()..." 都不能出现
注意: Swift 里面的字符都是采用的Unicode 编码,Unicode 叫做统一编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符,还包含emoji 表情,所以变量我们甚至可以用汉字和emoji 表情来命名。如果一定要使用关键字作为标识符,可以在关键字前后添加重音符号(')。
1 var 汉字 = "HML" 2 print("\(汉字)") 3 4 var 👨👩👧👧 = "family" 5 print("\(👨👩👧👧)")
Swift:关键字
关键字是类似于标识符命名规则的系统保留的字符序列,即关键字是对编译器具有特殊意义的预定义保留标识符。
例如:
与声明有关的关键字:class、func、let、public、typealias、deinit、import、operator、static、var、enum、init、private、struct、extension、internal、protocol、subscript
与语句有关的关键字:break、do、if、where、case、else、in、while、continue、fallthrough、return、default、for、switch
表达式和类型关键字:as、nil、true、_LINE_、dynamicType、self、_COLUMN_、false、Self、_FILE_、is、super、_FUNCTION_
在特定上下文中使用的关键字:associativity、final、lazy、nonmutating、precedence、right、weak、convenience、get、left、optional、prefix、set、willSet、dynamic、infix、mutating、override、Protocol、Type、didSet、inout、none、postfix、required、unowned
Swift:空格
Swift 对空格的使用有一定的要求。
1.运算符不能直接跟在变量或者常量的后面。
a 与 = 连在一起的时候:
1 与 + 连在一起的时候:
提示让在加号后面插入一个分隔符,这是因为Swift 以为1+ 这个语句结束了,而 2 是下一个语句,所以中间要插入一个分隔符号。
1 let b = 1 + 2 // 这是规范推荐使用的写法 2 let c = 3+4 // 这样也是可以的
Swift:字面量
字面量,就是指特定的数字、字符串或者布尔值这样,能够直接了当的指出自己的类型并为变量进行赋值的值。
1 42 // 整形字面量 2 3.1415926 // 浮点型字面量 3 "Hello, worle!" // 字符串字面量 4 true // 布尔型字面量
好了,基本语法先写这么多,后面用到的时候再一步一步的详细学习。
参考链接:https://www.boxueio.com/category/swift
http://blog.csdn.net/column/details/swiftmaster.html
http://www.runoob.com/swift/swift-basic-syntax.html
http://c.biancheng.net/cpp/html/2424.html
http://www.yiibai.com/swift/swift_quick_guide.html
http://blog.csdn.net/woaifen3344/article/details/49509095
http://www.swift51.com/swift3.0/chapter1/01_swift.html
END