加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Kotlin 就像Swift ?看看 Kotlin 与 Swift

发布时间:2020-12-14 05:13:54 所属栏目:百科 来源:网络整理
导读:文章转载自 开源中国社区? [http://www.oschina.net] 链接: www.oschina.net/news/85013/swift-is-like-kotlin (点击尾部阅读原文前往) 原文:http://nilhcem.com/swift-is-like-kotlin/ 一位国外的程序员认为 Swift 的语法与 Kotlin 相似,并整理了一些

文章转载自 开源中国社区?[http://www.oschina.net]

链接:www.oschina.net/news/85013/swift-is-like-kotlin(点击尾部阅读原文前往)

原文:http://nilhcem.com/swift-is-like-kotlin/


一位国外的程序员认为 Swift 的语法与 Kotlin 相似,并整理了一些 Swift 和 Kotlin 的对比,下面是一些例子,大家不妨也看看。

BASICS

Hello World

Swift


print("Hello,?world!")

Kotlin

println("Hello,?world!")?

变量和常量

var?myVariable?=?42

myVariable?=?50

let?myConstant?42

50

val?myConstant?显式类型

let?explicitDouble:?Double?=?70


val?explicitDouble:?Double?=?70.0

强制类型转换

let?label?=?"The?width?is?"

let?width?94

let?widthLabel?=?label?+?String(width)

val?label?"The?width?is?"

val?width?94

val?widthLabel?+?width

字符串插值

let?apples?3

let?oranges?5

let?fruitSummary?=?"I?have?(apples?+?oranges)?"?+

???????????????????"pieces?of?fruit."

val?apples?3

val?oranges?5

val?fruitSummary?"I?have?${apples?+?oranges}?"?范围操作符

let?names?=?["Anna",?"Alex""Brian""Jack"]

let?count?names.count

for?i?in?0..

val?names?=?arrayOf()

val?count?.count()

for?(i?in?0..count?-?1)?{

????println("Person?${i?+?1}?is?called?${names[i]}")

}

//?Person?1?is?called?Anna

//?Person?2?is?called?Alex

//?Person?3?is?called?Brian

//?Person?4?is?called?Jack

包罗广泛的范围操作符(Inclusive Range Operator)

for?index?in?1...5?{

????print"(index)?times?5?is?(index?*?5)"//?1?times?5?is?5

//?2?times?5?is?10

//?3?times?5?is?15

//?4?times?5?is?20

//?5?times?5?is?25

for?(index?in?1..5)?"$index?times?5?is?${index?*?5}"数组

var?shoppingList?"catfish""water"????"tulips""blue?paint"]

shoppingList[]?"bottle?of?water"

val?shoppingList?)

映射

var?occupations?[

????"Malcolm":?"Captain""Kaylee""Mechanic"]

occupations["Jayne""Public?Relations"

val?occupations?=?mutableMapOf(

????"Malcolm"?to?"Kaylee"?to?"Mechanic"

)

空集合

let?emptyArray?[String]()

let?emptyDictionary?=?[String:?Float]()

val?emptyArray?()

val?emptyMap?=?mapOf()

FUNCTIONS

函数

func?greet(_?name:?_?day)?->?String?{

????return?"Hello?(name),?today?is?(day)."

}

greet"Bob""Tuesday"

fun?greet()"Hello?$name,?today?is?$day."

元组返回

func?getGasPrices()?->?(Double{

????return?3.593.693.79}

data?class?GasPrices(val?aval?b?????val?cDouble)

fun?getGasPrices()?=?GasPrices参数的变量数目(Variable Number Of Arguments)

func?sumOfnumbersInt...)?Int?{

????var?sum?0

????for?number?in?numbers?{

????????sum?+=?number

????}

????return?sum

}

sumOf4259712

fun?sumOf(vararg?0

????for?(number?in?numbers)

?

//?sumOf()?can?also?be?written?in?a?shorter?way:

fun?sumOf(vararg?numbersInt)?.sum函数类型

func?makeIncrementerInt?{

????func?addOnenumber->?Int?{

????????return?1?+?number

????}

????return?addOne

}

let?increment?=?makeIncrementer()

increment7

fun?makeIncrementer():?{

????val?addOne?=?fun)}

val?increment?//?makeIncrementer?can?also?be?written?in?a?shorter?way:

fun?makeIncrementernumber

let?numbers?[2019712.map?{?3?*?$0?}

val?numbers?=?listOf*?it?排序

var?mutableArray?1532mutableArray.sort

listOf(1,?5,?3,?12,?2).sorted()

命名参数

func?areawidthheight{

????return?width?*?height

}

areawidth:?2height3

fun?area=?width?*?height

area(width?height?//?This?is?also?possible?with?named?arguments

area)

area(height?width?CLASSES

声明

class?Shape?var?numberOfSides?0

????func?simpleDescriptionString?{

????????return?"A?shape?with?(numberOfSides)?sides."

????}

0

????fun?simpleDescription=

????????"A?shape?with?$numberOfSides?sides."

用法

var?shape?=?Shape()

shape.numberOfSides?7

var?shapeDescription?.simpleDescription子类

class?NamedShape?var?numberOfSidesInt?0

????let?nameString

?

????init{

????????self.name?=?name

????}

?

????func?simpleDescription}

?

class?Square:?NamedShape?sideLengthDouble

?

????init.sideLength?=?sideLength

????????super.initname)

????????self4

????}

?

????func?areaDouble?{

????????return?sideLength?*?sideLength

????}

?

????override?func?simpleDescription"A?square?with?sides?of?length?"?+

???????sideLength?+?"."

????}

?

let?test?=?Square5.2"square"test.area

open?class?NamedShape0

?

????open?fun?simpleDescriptionclass?Square(BigDecimal:

????????NamedShape{

????init?{

????????numberOfSides?}

?

????fun?areasideLength.pow)

?

????override?fun?simpleDescription"A?square?with?sides?of?length?$sideLength."

}

?

val?test?(BigDecimal"5.2"),66); box-sizing: border-box !important; word-wrap: break-word !important;">类型检查

var?movieCount?0

var?songCount?0

?

for?item?in?library?{

????if?item?is?Movie?{

????????movieCount?+=?1

????}?else?if?item?is?Song?{

????????songCount?0

?

for?(item?in?library{

????if?(item?is?Movie{

????????++movieCount

????}?else?if?Song++songCount

????模式匹配

let?nb?42

switch?nb?{

????case?0...789:?print"single?digit")

????case?10"double?digits"11...99100...999"triple?digits")

????default"four?or?more?digits"

val?nb?42

when?nb{

????in?0..79?->?println)

????10?)

????in?11..99?100..999?)

????else?类型向下转换

for?current?in?someObjects?{

????if?let?movie?=?current?as??Movie?{

????????print"Movie:?'(movie.name)',?"?+

????????????"dir.?(movie.director)")

????(current?in?someObjects(current?is?{

????????println"Movie:?'${current.name}',224) !important;">????"dir.?${current.director}"协议

protocol?Nameable?{

????func?nameString

}

?

func?fxT"Name?is?"?x.name())

interface?Nameable?{

????fun?name()}

?

fun?f扩展

extension?Double?km{?return?self?*?1_000.0?}

????m{?return?self?cm/?100.0?mmft3.28084?}

let?oneInch?25.4.mm

print"One?inch?is?(oneInch)?meters")

//?prints?"One?inch?is?0.0254?meters"

let?threeFeet?3.ft

print"Three?feet?is?(threeFeet)?meters"//?prints?"Three?feet?is?0.914399970739201?meters"

val?.kmDouble?get=?this?*?1000

val?.Double?get=?this

val?=?this?100

val?3.28084

?

val?oneInch?25.4.mm

println"One?inch?is?$oneInch?meters"//?prints?"One?inch?is?0.0254?meters"

val?threeFeet?3.0.ft

println"Three?feet?is?$threeFeet?meters"

小贴士:返回上一级搜索Kotlin、“Swift”?获取更多相关文章。



●本文编号2384,以后想阅读这篇文章直接输入2384即可。

●输入m获取文章目录

推荐↓↓↓
?

安卓开发?

更多推荐15个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读