Swift

Swift

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

兼具脚本语言,入门更加简单的语言

更加偏向人性化(英文)的编程语言

从2010年開始由克里斯负责开发,前期以GCC编译器为主,后期採用LLVM 6.0

OC诞生于1983年


Swift特点:兼容C Objective-C语言,安全高效而且交互性好,学习曲线平缓

能够不显示指定类型而编译器能够通过赋值来推断变量的类型.可是不支持隐式类型转换,即两种不同类型的变量之间不能够进行运算/赋值


Swift语言中没有main函数,语句后没有分号

* 假设想在一行里面有多个语句,那么须要用”;”进行分隔

输出函数为 println 与 NSLog 一样    自带换行

也能够用不自带换行的 print 语句

变量用var标识,常量用let标识

Swift对于空格敏感

Swift输出变量写法为\(变量/常量名)


在Swift中,整形自己主动判断为Int,假设系统是32位系统,那么这个整形就是Int32,假设是64位系统,那么就是Int64

假设须要特定的整形数,则须要手动写上类型指定(如:Int8)


在Swift中浮点型默觉得double,假设想要float类型须要显示指定

在Swift中不支持隐式转换,假设想让两个不同类型的数据进行运算,那么须要显示的转换类型:类型名(常量/变量名)


变量名能够是汉字,符号等(仅仅要是Unicode字符都能够)

在Swift中变量/常量名差点儿支持全部的Unicode字符,除了数学符号,箭头和横线


字符串拼接能够直接用”+”

“+”相当于C++中的运算符重载


元组:(概念来自关系型数据库)

数据库中的一条记录相当于一个元组,元组中的数据能够是不同类型

与结构体类似,但不须要事先定义类型

如:var request404Error = (404,”Request Error Message”)

相当于定义了一个(Int, String)类型的元组


元组分解:能够用  .下标 来取

比如:request404Error.0


在元组定义中能够给出类型名称

如:var errorA = (errorCode:404 , errorMessage: “Request Error Message”)


元组分解:此时能够用  .名称   来取

比如:errorA.errorCode


在Swift中对数组与字典也进行了又一次定义

数组:Array是一个结构体

如:var names = [“张三”, “李四”, “王五”]

相当于:var names: String[] = [“张三”, “李四”, “王五”]

数组中的元素类型应该同样

加入�元素用  .append()

如:names.append(“赵六”)

*一次仅仅能加入�一个元素


也可用+ 将两个数组拼接到一起,类似于字符串拼接

如:names = names + name1


通过下标取数组元素

如:names[1] = “aaa”


通过 .removeAtIndex() 移除数组中的某个元素(按坐标)

如:names.removeAtIndex(0)


通过 .removeLast()  移除数组中的最后一个元素

如:names.removeLast()


通过 .removeAll()   移除数组中的全部元素

如:names.removeAll()


通过 .count  获取数组中元素的个数

如:names.count


不可变数组(用let修饰的)不能增删元素,但能够替换元素


tip:数组在定义时元素类型不一致,系统会默认该数组为NSArray


字典:

与OC不同,字典也用[]定义

如:var person = [“name”:”张三”, “sex”:”男”]

Swift规定全部的key为同一类型,全部的value为同一类型,key与value能够是不同类型

key的类型为可哈希的(即key的值不能同样)


取元素可用[key值]

如:person[“name”]


加入�一对键值可參照数组

如:person[“age”] = “5”


改动value跟加入�键值语法同样,与OC中的字典类似


更新字典中的key相应的value值也能够用 .updateValue(newValue, forKey:key)

如:person.updateValue(“张三三”, forKey:”name”)

该方法有返回值:ValueType? (被替换掉的旧值)

该方法也能够加入�一对键值,此时返回值为空


* 数组和字典的可变和不可变通过let和var判定,不可增删元素,可是数组能够改动已存在元素而字典不能够


数组的遍历用for 变量 in 数组名 {}

如:for name in names {

    

}

既想知道下标,又想知道下标相应的元素的值能够用

for (index, 变量) in enumerate(数组名) {


}


* in 前面的是一个元组


如:for (index, name) in enumerate(names) {

    

}


字典的遍历能够用

for (key, value) in 字典名 {


}


依旧用元组遍历


如: for (key, value) in person {

    

}


* 字典的打印是无序的


Swift中的Bool有两个值:true和false


分支语句:


Swift中的分支语句的条件仅仅能是Bool类型


如:

var isNumber: Bool = true

if isNumber {

    

}


或:

var aNumber = 3

if aNumber > 100 {

    

}


switch

语法:

switch 变量 {

case 条件:语句

default:语句

}


默认没有break,可是case中系统自带break

如:

switch i {

case 1:println(“lololololololo”)

default:println(“aaaaaaa”)

}


假设想要运行下个case语句,需加上fallthrough语句


进阶功能:

case语句的条件还能够是一个范围,而且范围能够交叉

用 值..值 或 值…值 来构建一个区间

where是一个二次推断语句,即在满足第一个条件的同一时候满足where之后的条件才干使整个条件为真

case的条件也能够是一个元组,即swith后面的变量/常量能够是一个元组

如:

var point = (3,4)


switch point {

case (0, 0):

    println(“原点”)

case (_, 0):

    println(“X轴”)

case (0, _):

    println(“Y轴”)

default:

    println(“象限内”)

}

 “_” 表示忽略元组里对应位置的元素

也能够将 “_”替换为变量/常量,就可以取出元组中相应位置的元素


假设同一时候满足多个case,除非case中含有fallthrough语句,否则仅仅运行第一条语句


循环语句:

语法:

for 初值; 条件; 增量 {

}


如:

for var i = 0 ; i < 10 ; i++ {

    

    }


也能够写成:

for 循环增量 in 范围 {

}


如:

for j in 0..9 {

    

}

包含左边的值,不包含右边的值

for j in 0…9 {

    

}

左右的值都包含


while语句

语法:

while 条件 {


}


如:

var i = 0

while i<10 {

    i++

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118291.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java开源报表工具 JasperReports

    Java开源报表工具 JasperReportsJasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。 授权协议:LGPL…

    2022年10月20日
    3
  • 怎么添加窗口小工具_vc可视化编程

    怎么添加窗口小工具_vc可视化编程原文地址:http://www.cnblogs.com/carekee/articles/1751805.html(转载者注)推荐在MFC中加入BCG,而不是适用BCG建立工程,因为BCG对中文的支持不是很好,到时候会很麻烦。本文以MDI应用程序为例说明如何在已有的VC++工程中使用BCG界面库,我的开发环境为VS2003(在VC6.0下同样适用)。  1,将BCG/BCGCB

    2022年10月8日
    1
  • 分治法-大整数乘法

    分治法-大整数乘法问题分析:在计算机上处理一些大数据相乘时,由于计算机硬件的限制,不能直接进行相乘得到想要的结果。可以将一个大的整数乘法分而治之,将大问题变成小问题,变成简单的小数乘法再进行合并,从而解决上述问题。当分解到只有一位数时,乘法就很简单了。算法设计:分解:首先将2个大整数a(n位)、b(m位)分解为两部分:ah和al、bh和blah表示大整数a的高位,al表示大整数a的…

    2022年6月2日
    29
  • 一个简单的WPF字体选择器实现

    很久没有写博客了。这是放暑假中的第一篇博客,以后会多多更新!!!这就是我写的一个字体选择器,界面如下:本程序用到的技术比较简单,仅仅是用了Font类的几个方法和数据绑定而已。首先建一个四行两列

    2021年12月27日
    39
  • C#的继承_继承关系中的被继承人

    C#的继承_继承关系中的被继承人继承详解:一.继承的概念:二.基类和派生类:三.继承的作用:四.继承的特点:五.举例说明:六.继承注意事项:一.继承的概念:继承:是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。当创建一个类时,不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类/父类,这个新的类被称为派生类/子类。二.基类和派生类:基类/父类:也可以理解成生活中的父亲

    2025年10月15日
    2
  • 怎么测试网站的稳定性_稳定性长期试验需进行多少个月试验

    怎么测试网站的稳定性_稳定性长期试验需进行多少个月试验今天面试遇到一个问题,如何进行网站的稳定性测试?因为之前从事的是电信行业,其稳定性测试是发送确定的traffic,运行72小时,观测系统的资源使用情况,traffic处理是否正常,有无内存泄漏,有无进程崩溃,其他资源使用是否正常等等。所以也给了一个类似的稳定性测试思路:按照系统设计容量的性能指标,模拟最大并发访问需求,运行72小时,看系统响应时间,监控资源利用的方法。回来查询发现,网易对这个问题也…

    2025年10月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号