swift3.0基础语法(2)
2.基础语法
变量/常量,元组声明
var aaa = 0;//声明变量aaa 首次赋值时自动解析为Int类型
var aaa:Int = 0;//声明Int类型变量aaa
let aaa = 0;//声明常量aaa 首次赋值时自动解析为Int类型,常量值不可被修改
let aaa:Int = 0;//声明Int类型常量aaa ,常量值不可被修改
在swift中 除了简单的数据类型外,还有高级的数据类型(类,函数,结构,元组等等),其中比较有趣儿的是元组类型,因为其在代码的可读性与自由度上都很舒适,下面进行简单的元组数据声明。
/*
*声明元组变量/常量
*/
var/let aaa = (值0,值1,值2,值3...);
aaa.0;//值0
aaa.1;//值1
aaa.2;//值2
var/let (a,b,c,d...) = (值0,值1,值2,值3...);//一一对应
a;//值0
b;//值1
c;//值2
类型别名
类型别名就是为了现有类型定义的替代名称。
typealias 类型别名 = 数据类型名称
typealias myInt = int;//声明myInt 赋值为int类型
var maxInt = myInt.max;//声明变量maxInt 和int.max等价
maxInt;// int.max
运算符
&:按位与
|:按位或
^:按位异或
~:取反
<<:左移
>>:右移
&+:溢出加法
&-:溢出减法
&*:溢出乘法
<:小于
<=:小等于
>:大于
>=:大等于
==:等于
!=:不等于
&&:逻辑与
||:逻辑或
!:逻辑非
*=:乘后赋值
/=:除后赋值
%=:取余后赋值
+=:加后赋值
-=:减后赋值
<<=:左位移后赋值
>>=:右位移后赋值
&=:按位与后赋值
^=:按位异或后赋值
|=:按位或后赋值
??:空和运算
?::三目运算
数据类型
1.数组
let/var intArray:[Int] = [];
2.字典
var/let dic = [key:value,key1:value1,key2:value2...];
3.集合
let/var letters:Set<Character> = ["A","B","C"];
注意:类型声明时,其可变或不可变使用var和let进行区分。使用let声明为不可变集合,其长度是不能被改变的,在字典中,不可变意味着不能替换已经存在的键的值,但和数组不可变有些不同,字典可以修改其值,数组值不可修改。
流程控制
1.if...else if...else...
var a:Int = 0;
var b:Int = 1;
if a==b{
print("a和b相同");
}else if b>a {
print("b大于a");
}else{
print("b小于a");
}
2.switch
var a:Int = 20;
switch (a){
case 5:
print("a==5");
case 20:
print("a==20");
default:
print("前面条件都不符合");
}
3.for...in...
var a = [1,2,3,4,5...];
for x in a{
print("\(x)");
}
4.repeat while...
repeat{
a/=10;
print("a is \(a)");
} while a!=0
函数和闭包
1.函数
//若想调用有参函数,想将参数名省略 可以在定义参数时前面加上"_"
func 函数名(_参数名1:数据类型 = 默认值1,参数名2:参数类型 = 默认值2...)->返回值类型/(返回值1:返回值类型1,返回值2:返回值类型2...){
//函数体
return 返回值类型参数/(返回值类型1参数,返回值类型2参数...)
} //可变参数函数
func 函数名1(numbers:Int...)->返回值类型{
//函数体
}
//可变参数调用
函数名1(1,2,3,4,5,6); //输入输出参数
var a:Int = 2;
func changeA(lastA:inout Int){
lastA = 4;
}
print("\(a)"); //a = 2
changA(lastA:&a);
print("\(a)"); //a = 4 //方法作为参数或返回值
func 函数名(参数名:(参数类型1,参数类型2...)->返回值类型)->(参数类型1,参数类型2...)->返回值类型{
//函数体
}
2.闭包
var/let v1 = {(参数1:参数类型,参数2:参数类型...)->返回值 in
return 返回值类型参数;
}
var/let v1 = {
//$0,$1,$2...来表示参数 省略
//N个参数的操作
}
下标脚本
subscript(变量:类型)->返回值类型{
return 返回值;
}
下标脚本一般应用于一些功能性的辅助,如方法下标 方法名(参数)[0] 这样的灵活性调用。
类型检查
1.is
实例 is 子类型
is关键字可以用来检查一个实例/对象的所属类型。
"i am superman" is String //true
2.as/as?
实例 as 类型
as/as? 就是用来强制转换形式的关键字,当转换一定成功时才可以使用强制转换形式的检查。
var lib = ["123",12];
for l in lib{
var a:Int = l as Int;
}
枚举
enum 枚举名称:枚举类型{
case 变量 = 值;
//枚举属性
var reNum:Int{
return 10;
}
static var reNum1:Int{
return 100;
}
func 方法名(参数)->返回值类型{
self;//self为当前枚举中的某一成员对象
return 返回值;
}
//.... }
枚举名称.变量.rawValue;//访问变量原始值
枚举名称.变量.reNum; //10
枚举名称.reNum1;//100
枚举名称.方法名();//执行 方法名 方法
枚举类型在程序的诸多设计中存在关键的逻辑作用,可以让代码更加的符合面向对象规则,是一种逻辑上理解的应用,但本人觉得,如果会用的会觉得枚举的重要及舒适,如果不会用的 程序依然会跑,但其设计和很多方面的逻辑灵活都不如前者。
枚举间可进行灵活的嵌套,如数组。
注: 当枚举类型为Int时,如未指定变量值,则第一个以0开始依次递增,如第一个指定值 之后的没有指定,则以第一个值开始,依次递增。
swift3.0基础语法(2)的更多相关文章
- swift3.0基础语法
swift 3.0 基础语法 目录 01-变量和常量 02-运算符 03-可选项 04-条件语句 05-循环 06-字符串 07-元组 08-数组 09-字典 10-对象和类 11-枚举 12-属性 ...
- Swift3.0基础语法学习<二>
对象和类: // // ViewController2.swift // SwiftBasicDemo // // Created by 思 彭 on 16/11/15. // Copyright © ...
- Swift3.0基础语法学习<一>
// // ViewController.swift // SwiftBasicDemo // // Created by 思 彭 on 16/11/15. // Copyright © 2016年 ...
- Swift3.0基础语法学习<五>
异常处理: // // ViewController5.swift // SwiftBasicDemo // // Created by 思 彭 on 16/11/16. // Copyright © ...
- Swift3.0基础语法学习<四>
协议和扩展: // // ViewController4.swift // SwiftBasicDemo // // Created by 思 彭 on 16/11/16. // Copyright ...
- Swift3.0基础语法学习<三>
枚举和结构体: // // ViewController3.swift // SwiftBasicDemo // // Created by 思 彭 on 16/11/16. // Copyright ...
- Swift3.0 基础学习梳理笔记(一)
本篇是我在学完一遍基础语法知识的时候,第一遍复习,我一遍梳理一遍记录的笔记.同时分享给像我一样在学习swift 的猿友们. 本篇可能过于冗长.所以所有的参考资料都分模块的写在palyground 里, ...
- ECMAScript 5.0 基础语法(上)
银子: 一般来说,一门编程语言的基础语法都是大同小异的.比如,python的基础语法,包括:数据类型,变量,作用域,运算符,流程控制(if...else...语句),循环,编码,数据类型的操作(增删改 ...
- ① Python3.0基础语法
稍微了解一下py2.0和py3.0的区别,Py3.0在设计的时候,为了不带入过多的累赘,没有考虑向下兼容低版本的Py2.0.而在低版本中Py2.6作为过渡版,基本使用Py2.x的语法和库,同时考虑Py ...
随机推荐
- 在struts2中整合ajax时出现Template /template/ajax/head.ftl not found错误时的处理方法
Struts2 Ajax出现错误“Template /template/ajax/head.ftl not found” 2013-02-08 18:26:27| 分类: 默认分类|字号 订阅 ...
- Android 调用系统通讯录
这个过程有三步:1)许可向你的应用程序的manifest中添加读取通讯录数据的许可 <uses-permission android:name="android.permission ...
- js监听input等表单输入框的变化事件oninput
js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变 ...
- C#学习日志 day7 --------------LINQ与Lamda语句的初步尝试以及XML的生成
LINQ是一种集成在计算机语言里的信息查询语句,是c#3.0中最惹人瞩目的功能. 在C#中,LINQ语句有两种写法. 第一种写法与SQL语句类似: IEnumerable<Customer> ...
- Probability theory
1.Probability mass functions (pmf) and Probability density functions (pdf) pmf 和 pdf 类似,但不同之处在于所适用的分 ...
- c++中vector与list的区别
c++标准库中,容器vector和list都可以用来存放一组类型相同的数据.而且二者不同于数组的一点是,支持动态增长.但它们还是有有几点不同 (1) vector是顺序表,表示的是一块连续的内存,元 ...
- 解决Oracle 11gR2 空闲连接过多,导致连接数满的问题
今天又遇到了11gR2连接数满的问题,以前也遇到过,因为应用那边没有深入检查,没有找到具体原因,暂且认为是这个版本Oracle的BUG吧. 上次的处理办法是用Shell脚本定时在系统中kill v$ ...
- 移动开发之fastclick 点击穿透
穿透(点穿)是在mobile各种浏览器上发生的常见的bug.可能是由click事件的延迟(300ms)或者事件冒泡导致 现象:在A页面中有个 btn1<或a标签>,在B页面中有个 btn2 ...
- oracle表设置主键自增长
create or replace table TBL_SYS_USER ( user_id NUMBER(19) not null, user_name ...
- JS学习笔记(三)函数
js中的方法名一般都是首字母小写,其余单词首字母大写的规范. 声明 function 函数名(参数列表) { // 函数体 return 返回值; } 调用 函数名(); (js中花括号喜欢用这种方式 ...