1.声明变量 常量

声明变量:var age = 10

声明常量:let age = 10 (不加分号,除非多条语句写在同一行)

二进制前缀:0b(必须小写)

八进制前缀:0o

十六进制前缀:0x

2. 基本数据类型:

Int Float Double Bool  Character String Array Dictionary Tuple(元组类型) Optional(可选类型)

Swift中的中包括有符号整型和无符号整型

字符串:@"abc\(x)"  x为一个整型数据或其他:在Swift中没有stringWithFormat的用法  用\()代替

1> 定义一个指定类型的变量/ 常量,如下格式:

let age: Int = 10

2> Swift中的小数默认为Double型,需要自行设置为Float

3> Swift强调语法安全:不同类型的两个变量 不能相加

4> 浮点数可以用十进制和十六进制表示

十进制表示浮点数:eN:10的N次方

// 没有指数时
let d1 = 12.5
// 有指数
let d2 = 0.125e2

十六进制表示浮点数:pN:2的N次方   d3 = (8/16 + 12) * 1 = 12.5

let d3 = 0xC.8p0
// d3 = 0xC.8 * 2的0次方 = 12.5

3. Swift运算符:

1> 赋值=:

Swift可进行多个赋值:

基本的逻辑运算都一些样 强调赋值运算符:

= OC中的赋值运算符有返回值if(x = y)为永真

Swift中这种写法属于语法错误,Swift中=没有具体返回值

2> 取余运算%:

Swift可以对浮点型数据进行取余运算

a % b 结果所得余数的正负和a的符号一致

3>比较运算符:

Swift中的if语句必须是Bool型   true为真 false为假  没有C语言中非0为真的说法

三目运算符中的条件也必须是Bool型的  比较运算符和逻辑运算符的返回值为true 和 false两种(不是1 0)

4> 范围运算符(Swift新增)

a...b:范围是:[a, b]

a..<b: 范围是:[a, b)

Swift中的for循环:

for i in ... {
// 执行6次 :0 1 2 3 4 5
}

5> 溢出运算符:

&+ &- &/ &* &%

上溢出:最大值+1结果为0  下溢出:最小值-1结果为最大值

4. Swift新增的特殊数据类型:

1> 元组类型Tuple:

定义:有N个任意类型的数据组成

let po = (x : 12.6, y : 18 ) -----> x y是元素

例:

var point = (x : 10.3, y : )
/**
*获取元组类型中的元素:
*point.x point.y
* point.0(获取x) point.1(获取y)
**/

用let定义一个元组之后,不可以改变其中元素的值

下面语句错误:指定元素类型之后 不能加上元素的名称:

var person:(Int ,String) = (age : , name : "ha")

元组中:下划线可以忽略某个元素的值,以便取出其他的元素值

6. 分支语句 循环语句:

for ,while ,do while ,if都与OC中一样

注:这些语句后面必须加{}

1> for in:

for i in ... {
// 如果不使用i 可以用下划线_替换i
}

2> switch:

在Swift中:switch case后面不需要加break

每一个case与语句后面必须加内容,不能为空的

1》switch多条件匹配:

case0, 1, 2:(满足三个条件中的一个 用逗号分割即可      C语言中多条件表示:case 0: case 1: case 2:  --> 比较麻烦 )

2》switch范围匹配:

case 0...3:      case 4...10:etc

3》switch匹配元组:

例:一个中心在原点:边长为4的正方形:判断一个点是否在这个矩形框中:

let point = (, )
switch point {
case (, ):
// x可以为任意值:x轴点
case (_, ):
// 在矩形框中:
case (-..., -...):
}

4》case数值绑定:

可以将switch中的值绑定给一个特定的常量或者变量,以便在case里面的语句中使用这个值

注:fallthrough后面的case语句不能定义变量和常量:例如case let (x, y) where x == y

let point = (, )
switch point {
// 只要某个点的y值满足为0 就可以走下面的语句,然后获取x的值 可以进行其他的操作
case (let x, ):
// 任意一个点都会走
case let (x, y):
}

5》switch中添加where语句:

case let (x, y) where x == y :

6》fallthrough:

作用:执行完当前的case语句,会接着执行fallthrough后面的case或者default语句(相当于C语言中没有加break语句)

7. 加标签:

out : for _ in ... {
for _ in .. {
print("ha")
// break原本只能跳出内层循环 可以通过加标签 跳出外层循环
break out
}
print("kk")
}

8. 函数:

1> 函数定义:

func 函数名(形参列表) -> 返回值类型 {

函数体

}

形参列表:形参名1: 形参类型1, 形参名2:,  形参类型2

无返回值:

func 函数名(形参列表) -> ()

func 函数名(形参列表) -> Void

func 函数名(形参列表)

2> 外部参数名:

使用外部参数名的目的:就是在分不清每个形参的意义时 可以通过外部参数名提示

如下:Age   Number就是外部参数名

格式:外部参数名写在形参名前面 用空格隔开

func HA(Age age : Int, Number num : Int) {

}

// 调用方法:

HA(Age: , Number: )

3> 默认参数值:

在形参前面加#相当于生成一个与当前形参同名的外部参数名

func add(name : String, age : Int = ){

}

// 存在默认参数的时候,Swift会自动给它生成一个跟形参名相同的外部形参名,  调用方法的时候需要将参数名写出

add("haha", age: )

在带有默认参数值的形参名前面写一个下划线:_  在方法调用的时候就不用写外部参数了

func add(name : String, _ age : Int = ){

}

// 存在默认参数的时候,Swift会自动给它生成一个跟形参名相同的外部形参名,  调用方法的时候需要将参数名写出

add("haha",  )

4> 常量参数和变量参数:
默认情况下,函数的参数都是常量参数, 不能在函数内部修改

如果需要在函数内部对参数进行修改,需定义为var

5> 输入输出函数:

swift中想要修改函数内部局部变量的值,利用输入输出函数

输入输出函数定义:

func swap (inout num1 : Int, inout num2 : Int)

注:不利用第三个变量的前提下,交换两个变量的值:一:异或运算   二:和 差

a. 传递实参的时候,必须在实参的前面加上&

b. 不能传入常量或者字面量(例:12)作为参数值,

c. 输入输出参数不能有默认值 不能使用let var修饰(inout和let var 不能共存)

Swift-MJ的更多相关文章

  1. 【Swift】Alamofile网络请求数据更新TableView的坑

    写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...

  2. Swift使用FMDB操作SQLite

    SQLite大家都懂的.本地数据库,在移动设备上使用广泛.IOS平台上自然也少不了它.最近自己折腾一个小App的时候需要使用sqlite本地数据库,上Github搜了下IOS下对SQLite的三方封装 ...

  3. swift学习:第一个swift程序

    原文:swift学习:第一个swift程序 最近swift有点火,赶紧跟上学习.于是,个人第一个swift程序诞生了... 新建项目

  4. iOS开发:一个无限滚动自动播放图片的Demo(Swift语言编码)

    很久以前就想写这么一个无限滚动的Demo了,最近学习了下Swift,手中没有可以用来练手的Demo,所以才将它实现了. Github地址(由于使用了UIView+AutoLayout第三方进行布局,所 ...

  5. swift学习:第一个swift ui程序

    最近swift有点火,赶紧跟上学习.于是,个人第一个swift程序诞生了... 新建项目

  6. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  9. 算法与数据结构(十七) 基数排序(Swift 3.0版)

    前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关.今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比 ...

  10. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

随机推荐

  1. UBUNTU 札记(53条经验)

    adobe_pdf 菜单栏 /etc/profile 是一个global config file,会影响系统全局用户,如果你只想对single user生效的话,可以修改vi ~/.bash_prof ...

  2. grunt个人理解

    最近在学习grunt的内容,也希望能将grunt使用在新的项目中,本文是对grunt的相关概念的个人理解,仅供与道友们交流和学习,如有疑义,欢迎道友们指点. 首先,grunt是基于nodejs的,那就 ...

  3. hdu 4742 Pinball Game 3D 分治+树状数组

    离散化x然后用树状数组解决,排序y然后分治解决,z在分治的时候排序解决. 具体:先对y排序,solve(l,r)分成solve(l,mid),solve(mid+1,r), 然后因为是按照y排序,所以 ...

  4. C#控件列表

      ID 类 控件 备注(+窗体 共64个控件) 公共控件 1   Form 属性   方法   事件 2   Button 属性   方法   事件 3   checkbox 属性   方法   事 ...

  5. PHP面向对象之旅:抽象类继承抽象类(转)

    可以理解为对抽象类的扩展 抽象类继承另外一个抽象类时,不用重写其中的抽象方法.抽象类中,不能重写抽象父类的抽象方法.这样的用法,可以理解为对抽象类的扩展. 下面的例子,演示了一个抽象类继承自另外一个抽 ...

  6. 自定义的插件如何加载到Qt Designer中(详细)

    要想在Qt Designer中使用自定义控件,必须要使Qt Designer能够知道我们的自定义控件的存在.有两种方法可以把新自定义控件的信息通知给Qt Designer:“升级(promotion) ...

  7. Android中你应该知道的设计模式

    建造者模式 建造者模式最明显的标志就是Build类,而在Android中最常用的就是Dialog的构建,Notification的构建也是标准的建造者模式. 建造者模式很好理解,如果一个类的构造需要很 ...

  8. Android手机开发者模式设置

    通用设置 情景1 开发者选项已经激活,并且在设置列表中能看到 设置-->开发者选项(开发者选项已经激活) 情景2 开发者选项还没有激活,并且在设置列表中能不能看到 如果没有看到开发者选项是因办手 ...

  9. 读取xml字符串

    string strXml = @"<MessageData><pm_id>10</pm_id><pm_title>这是公司或者产品的名称&l ...

  10. SQL Server 表字段值转换成字段名称(二)

    上次写了个比较简单的只有两个字段的例子,经要求在写个  3 个字段的示例 ,贴上来与大家共勉一下   如果你们有更好的方法,提供一下, 感激不尽. 示例如下: /*--drop table temp_ ...