Swift介绍

Swift这门编程言语首要用于iOS和MacOS的开发,能够说是非常盛行的一门编程言语,我只想说,假如你会Kotlin,那么你学习Swift会非常简单,反之亦然。下载XCode,然后你就能够创立Playground练习Swift语法了。

Kotlin和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有大量的实践。仍是那句话,编程言语仅仅工具,你的编程思维的高度才是决议你水平的重要目标。所以我给新入行互联网的同学的建议是,你能够先学习面向对象的编程思想,不必局限于一门言语,能够多了解下其他的编程言语,挑选你更喜欢的方向。挑选好后,再深耕一门技能。每个人的道不一样,或许你就更适合某一个方向。