Swift 基本语法1

时间:2022-03-23 02:43:37

一、Swift简介

2010年的夏天,苹果公司的开发人员Chris Lattne接到了一个特别的任务,为OS X 和iOS平台开发下一代的编程语言,也就是Swift。

苹果公司于2014年WWDC(苹果开发者大会)发布的新开发语言Swift,可与Objective-C共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。
2015年的WWDC开发者大会上,苹果公司推出了Swift2.0版本,并且Swfit完全开源。

自从Swift发布以来,在http://www.tiobe.com中的排行一直处于上升的状态。

二、声明变量和常量

在Swift中使用“let”修饰一个常量,使用“var”修饰一个变量;

let修饰常量的值是不可以更改的;

var修饰的变量的值是可以更改的;

在声明常量和变量的时候可以使用表情符号、中文等命名常量名和变量名。

Swift里不会自动给常量变量赋初始值,也就是说常量变量不会有默认值,所以定义常量的时候一定要给定初始值

Swift定义变量或者常量的时候,需要标识出变量或者常量的类型,如果不标识,会根据初始值自动推断。

因为swift是强类型语言,所以不同类型的变量不能相加,如果想要相加,可以强制类型转换

1、声明常量变量

 // MARK: - 定义常量变量:变量类型的隐式转换

 // 在Swift中如果不给定变量常量的类型,该常量变量的类型就是其初始值的类型
var name = "Jack" // 隐式转换为String类型 var name1 : String = "Rose" // 给定name1的类型为String,不能赋值其他类型 var age : Int = // 整型变量 var age1 : Int? // ?表示age1的类型为可选类型,其值可以为空
print(age1) var gender : Character = "f" // 字符变量,字符用""括起来,""中只能写一个字符 var flag : Bool = true // Bool类型,其值只有true 和 false

2、定义字符串,以及常用到的函数

1. String是有序的字符集合,例如“Hello World”
2. Swift中的字符串通过String类型表示,当然也可以看成Character字符类型的集合

 // MARK: - 字符串
// 1、创建一个空的字符串
var str_empty = ""
var str2_empty = String() // 2、判断字符串是否为空
if str_empty.isEmpty {
print("空")
} else {
print("非空")
} // 3、字符串的拼接
var url : String = "http://"
var str : String = "www.baidu.com"
// 方式1:
//url.appendContentsOf(str)
// 方式2:
var newUrl = url + str
// 方式3:字符串插值 -- \(变量名)
var newURL = "百度网址:\(newUrl)" print(newURL) // 4、获取字符串长度
var str1 : String = "abcdef"
print(str1.characters.count) // 5、字符串的比较
var str2 : String = "MBBoy"
var str3 : String = "GBLW"
if str2 == str3 {
print("\(str2)和\(str3)相等")
} else if str2 > str3 {
print("\(str2)大于\(str3)")
} else {
print("\(str3)大于\(str2)")
}

3、Float 和 Double

 // MARK: - float与double
var num1 = 3.14 // 不指定类型,默认是double类型
// 如果想定义float类型的变量,必须要指定类型
var num2 : Float = 2.14
// 因为swift是强类型语言,所以不同类型的变量不能相加,如果想要相加,可以强制类型转换
//var sum = num1 + num2 // 报错
var sum = num1 + Double(num2) // 不会报错
print("和是\(sum)")

4、小结

  • 常量或者变量的类型必须和你赋给它们的值的类型一样;
  • 声明时类型是可选的,声明的同时赋值的话,编译器会自动推断类型;
  • 如果初始值没有提供足够的信息(或者没有初始值),那你需要在变量后面声明类型,用冒号分割;
  • 使用let来声明常量,使用var来声明变量;
  • 常量只能赋值一次,使用的时候可以直接获取到这个值;
  • 数据只能进行显示类型转换;

三、声明一个数组、字典

在Swift中使用“let”或者“var”声明一个数组或者字典;
数组必须指定数据类型,如果没有指定类型则会根据数组的初值去推断数据类型;
字典所有的key值必须是同一数据类型;
字典所有的value必须是同一数据类型。

1、数组

 // MARK: - 数组
// Swift中数组的元素类型必须相同,如果想存放不同类型的元素,用OC // 定义一个数组
var nameArray = ["yuanyuan", "GBLW", "WYW"]
print(nameArray) // 指定数组元素类型
var ageArray : Array<Int> = [, , ]
print(ageArray) // 定义一个空数组
// 方式1:
var carArray = Array<String>()
// 方式2:
var carArray1 = [Int]()
print(carArray) // 访问数组元素
print(nameArray[]) // 给数组添加元素
carArray.append("bb")
print(carArray) // 使用运算符添加数组元素,可以添加多个
carArray += ["cc", "dd"]
print(carArray) // 插入元素到具体位置
carArray.insert("aa", atIndex: )
print(carArray) // 移除某个元素
carArray.removeAtIndex()
print(carArray) // 移除所有元素
carArray.removeAll()
print(carArray) // 数组排序
print(nameArray)
nameArray.sortInPlace()
print(nameArray)

2、字典

 // MARK: - 字典
// 定义一个字典类型的变量
var dic : Dictionary<String,Int> = ["a" : , "b" : , "c" : ]
print(dic) // 定义空字典
// 方式1
var dic_empty = Dictionary<String, Int>()
// 方式2
var dic_empty2 : Dictionary<String, Int> = [:] // 向字典中添加键值对
dic["d"] =
print(dic) // 修改字典中的值
dic["d"] =
print(dic["d"]) // 删除一个键值对
dic.removeValueForKey("a")
print(dic)

四、元组

元组是Swift里面独有的一种数据格式。
是一个可以返回多个值的数据格式。
在Swift里面声明的时候使用“()”声明。
元组可以通过下标去访问元素,也可以通过key值去访问元素;
整体的数据结构有点类似于C语言里面的结构体。

 // MARK: - 元组

 // 定义一个元组
// 方法1:直接初始化一个元组,使用Swift隐式转换
var tuples = ("水果",["香蕉", "苹果", "西瓜"])
// 方法2:初始化元组的时候给元组指定类型
var tuples1 : (String, Array) = ("动物", ["

Swift 基本语法1的更多相关文章

  1. Swift高级语法学习总结(转)

    Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参 ...

  2. Swift基础语法学习总结&lpar;转&rpar;

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

  3. Swift高级语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如 ...

  4. Swift基础语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...

  5. iOS开发——语法篇&amp&semi;swift经典语法总结

    swift经典语法总结 1:函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需 ...

  6. swift基本语法

    swift种语法着实怪异,实质干的事情还是一样的,一下将对此语法做简单介绍: 1.swift语法种已经剔除“:”这个结束符号,下面将演示入门操作的hello world import Foundati ...

  7. Swift基础语法

    简介 特点 (1)优于OC,快速,安全 (2)取消了预编译指令包括宏定义(OC用的太多了) (3)取消了OC指针和不安全访问的使用(看不到星星了) (4)舍弃 Objective-C 早期应用 Sma ...

  8. Begin :SWIFT 基本语法

    国内介绍IOS书籍大多是很陈旧的代码, 2014年Apple发布了Swift语言, 毫无疑问Swift是一个强大的语言, 但是纵观国内的IOS现状,大家大多已经习惯了了OC, OC能解决的问题谁会想到 ...

  9. Swift基础语法(三)

    Array数组在swift中Array相当于oc中的NSMutableArray(变长数组) //1.定义数组 var numarr:Int[] = [,,,,]; var strarr:String ...

  10. 【原】iOS学习之Swift之语法2&lpar;精简版&rpar;

    1.可选类型和强制解包(?和!) 1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 ...

随机推荐

  1. Javascript模块化编程(一):模块的写法

    Javascript模块化编程(一):模块的写法 作者: 阮一峰 原文链接:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html ...

  2. 《剑指offer》面试题11: 数值的整数次方

    面试题11: 数值的整数次方 剑指offer面试题11,题目如下 实现函数double power(double base,int exponent),求base的exponent次方, 不得使用库 ...

  3. zookeeper学习系列:三、利用zookeeper做选举和锁

    之前只理解zk可以做命名,配置服务,现在学习下他怎么用作选举和锁,进一步还可构建master-slave模式的分布式系统. 为什么叫Zoo?“因为要协调的分布式系统是一个动物园”. ZooKeeper ...

  4. IT人的自我导向型学习:开篇杂谈

    报考大学时,家人让我报的是计算机系,那个时候,普遍都认为读计算机专业的人将来不用愁找不到工作.为何得出这样的结论不得而知,但是在过去三十年中,的确有很多响当当赚了大钱的IT人在影响着我们. 顺利的考取 ...

  5. android&period;os&period;DeadObjectException memory near r0&colon; 异常处理 Consumer closed input channel or an error occurred&period; events&equals;0x9

    原地址:http://www.cnblogs.com/wanqieddy/p/3495338.html android.os.DeadObjectException memory near r0: 异 ...

  6. Django中的Model(操作表)

    Model 操作表 一.基本操作 # 增 models.Tb1.objects.create(c1='xx', c2='oo') #增加一条数据,可以接受字典类型数据 **kwargs obj = m ...

  7. 像素转换mm

    public static double MillimetersToPixelsWidth(double length) //length是毫米,1厘米=10毫米 { System.Windows.F ...

  8. Qt学习之路&lpar;49&rpar;&colon; 通用算法

    今天开始的部分是关于Qt提供的一些通用算法.这部分内容来自C++ GUI Programming with Qt 4, 2nd Edition.   <QtAlgorithms>提供了一系 ...

  9. log4j2

    转载自 Blog of 天外的星星: http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.html Log4j 2的好处就不和大家说了,如果你搜了2,说明你 ...

  10. Wireshark 过滤器语法

    wireshark有两种过滤器: 捕捉过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中. 显示过滤器(DisplayFilters):用于在捕捉结果中进行详细查找. 捕捉 ...