Kotlin 就像Swift ?看看 Kotlin 与 Swift
一位国外的程序员认为 Swift 的语法与 Kotlin 相似,并整理了一些 Swift 和 Kotlin 的对比,下面是一些例子,大家不妨也看看。 BASICS Hello World Swift
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 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 ????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 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、数据库、运维等。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |