Swift介绍
Swift这门编程语言主要用于iOS和MacOS的开发,可以说是非常流行的一门编程语言,我只想说,如果你会Kotlin,那么你学习Swift会非常容易,反之亦然。下载XCode,然后你就可以创建Playground练习Swift语法了。
playground这个名字起的好,翻译成中文就是操场,玩的地方,也就是说,你可以尽情的测试你的Swift代码。
声明变量和常量
Kotlin的写法:
var a: Int = 10
val b: Float = 20f
Swift的写法:
var a: Int = 10
let b: Float = 20.0
你会发现它俩声明变量的方式一模一样,而常量也只是关键字不一样,数据类型我们暂不考虑。
导包
Kotlin的写法:
import android.app.Activity
Swift的写法:
import SwiftUI
这里kotlin和swift的方式一模一样。
整形
Kotlin的写法:
val a: Byte = -10
val b: Short = 20
val c: Int = -30
val d: Long = 40
Swift的写法:
let a: Int8 = -10
let b: Int16 = 20
let c: Int32 = -30
let d: Int = -30
let e: Int64 = 40
let f: UInt8 = 10
let g: UInt16 = 20
let h: UInt32 = 30
let i: UInt = 30
let j: UInt64 = 40
Kotlin没有无符号整型,Swift中Int32等价于Int,UInt32等价于UInt。无符号类型代表是正数,所以没有符号。
基本运算符
Kotlin的写法:
val a: Int = 10
val b: Float = 20f
val c = a + b
Swift的写法:
let a: Int = 10
let b: Float = 20
let c = Float(a) + b
Swift中没有隐式转换,Float类型不用写f。这里Kotlin没那么严格。
逻辑分支
Kotlin的写法:
val a = 65
if (a > 60) {
}
val b = 1
when (b) {
1 -> print("b等于1")
2 -> print("b等于2")
else -> print("默认值")
}
Swift的写法:
let a = 65
if a > 60 {
}
let b = 1
switch b {
case 1:
print("b等于1")
case 2:
print("b等于2")
default:
print("默认值")
}
Swift可以省略if的括号,Kotlin不可以。switch的写法倒是有点像Java了。
循环语句
Kotlin的写法:
for (i in 0..9) {
}
Swift的写法:
for var i in 0...9 {
}
// 或
for var i in 0..<10 {
}
Kotlin还是不能省略括号。
字符串
Kotlin的写法:
val lang = "Kotlin"
val str = "Hello $lang"
Swift的写法:
let lang = "Swift"
let str = "Hello \(lang)"
字符串的声明方式一模一样,拼接方式略有不同。
数组
Kotlin的写法:
val arr = arrayOf("Hello", "JYM")
val arr2 = emptyArray<String>()
val arr3: Array<String>
Swift的写法:
let arr = ["Hello", "JYM"]
let arr2 = [String]()
let arr3: [String]
数组的写法稍微有点不同。
Map和Dictionary
Kotlin的写法:
val map = hashMapOf<String, Any>()
map["name"] = "张三"
map["age"] = 100
Swift的写法:
let dict: Dictionary<String, Any> = ["name": "张三", "age": 100]
Swift的字典声明时必须初始化。Map和Dictionary的本质都是哈希。
函数
Kotlin的写法:
fun print(param: String) : Unit {
}
Swift的写法:
func print(param: String) -> Void {
}
或
func print(param: String) -> () {
}
除了关键字和返回值分隔符不一样,其他几乎一模一样。
高阶函数和闭包
Kotlin的写法:
fun showDialog(build: BaseDialog.() -> Unit) {
}
Swift的写法:
func showDialog(build: (dialog: BaseDialog) -> ()) {
}
Kotlin的高阶函数和Swift的闭包是类似的概念,用于函数的参数也是一个函数的情况。
创建对象
Kotlin的写法:
val btn = Button(context)
Swift的写法:
let btn = UIButton()
这里kotlin和swift的方式一模一样。
类继承
Kotlin的写法:
class MainPresenter : BasePresenter {
}
Swift的写法:
class ViewController : UIViewController {
}
这里kotlin和swift的方式一模一样。
Swift有而Kotlin没有的语法
guard…else的语法,通常用于登录校验,条件不满足,就执行else的语句,条件满足,才执行guard外面的语句。
guard 条件表达式 else {
}
另外还有一个重要的语法就是元组。元祖在Kotlin中没有,但是在一些其他编程语言中是有的,比如Lua、Solidity。元组主要用于函数的返回值,可以返回一个元组合,这样就相当于函数可以返回多个返回值了。
Swift的元组:
let group = ("哆啦", 18, "全宇宙最强吹牛首席前台")
Lua的多返回值:
function group() return "a","b" end
Solidity的元组:
contract MyContract {
mapping(uint => string) public students;
function MyContract(){
students[0] = "默认姓名";
students[1] = "默认年龄";
students[2] = "默认介绍";
}
function printInfo() constant returns(string,uint,string){
return("哆啦", 18, "全宇宙最强吹牛首席前台");
}
}
总结
编程语言很多地方都是相通的,学会了面向对象编程,你学习其他编程语言就会非常容易。学习一门其他编程语言的语法是很快的,但是要熟练掌握,还需要对该编程语言的API有大量的实践。还是那句话,编程语言只是工具,你的编程思维的高度才是决定你水平的重要指标。所以我给新入行互联网的同学的建议是,你可以先学习面向对象的编程思想,不用局限于一门语言,可以多了解下其他的编程语言,选择你更喜欢的方向。选择好后,再深耕一门技术。每个人的道不一样,可能你就更适合某一个方向。