接上一篇: Swift语言基础笔记(一)介绍了整形、浮点型、布尔类型,这篇接着介绍下字符、字符串、元组、可选型等类型。

字符和字符串的使用

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"
//以字符形式打印
for c in str.characters{print(c)
}//初始化空字符串
var emptyStr = "";
var anotherEmptyStr = String();str.uppercaseString;
str.lowercaseString;
str.capitalizedString;
str.containsString("Hello");
str.hasPrefix("He");
str.hasSuffix("und");
let s = "one third is \(1.0/3.0)";
//NSString的使用,它不是产unicode码,如中文处理不好。
//保留两位小数,占位符的使用,并转换为String
let s2: String = NSString(format: "one third is %0.2f", 1.0/3.0) as String;let s3: NSString = "one third is 0.33";
//从第几个开始,前闭后开
s3.substringFromIndex(2);
//从0开始到指定值前一个
s3.substringToIndex(5);
s3.substringWithRange(NSMakeRange(4, 5));let dog: Character = "

元组的使用

//元组 Tuple,多种基本类型的组合。
var point = (5, 9);
var httpResponse = (404, "Not find");
var point2:(Int, Int, Float) = (2, 4, 8.0);
var httpResponse2:(Int, String) = (200, "OK");var (statusCode, statusMessage) = httpResponse;
statusCode = 200;
statusMessage;point.0;
point.1;
point2.2;let point3 = (first: 3, second: "hello");
point3.first;
point3.secondlet point4: (ff: Int, ee:Int) = (4, 9);
point4.ee;
point4.ff;let loginResult = (false, "deng");
let (isLoginSuccess, _) = loginResult;
if isLoginSuccess{print("Login success");
}else{print("Login failed");
}print(point4.ff, point4.ee, isLoginSuccess , "swift", separator:", ", terminator:"?");
print("hello");
print("\(point4.ff) * \(point4.ee) = \(point4.ff * point4.ee)");

可选型
可选型中有一个不得不提的关键字nil,它代表一种类型,也是空的意思,只有显式声明为可选型时才能赋值为nil,可选型的声明是类型后加一个?号,或加!号声明隐式可选型。

optional是Swift新加入的类型,其它语言也没有这种类型,可简单理解为:有值时就是?前面的类型,无值时就是nil。

//: Playground - noun: a place where people can playimport UIKit
//可选型
var errorCode: Int? = 404;
errorCode = 0;
errorCode = nil;var color:UIColor? = nil;let imInt = 405;
errorCode = imInt;print(errorCode);var error:String? = "405";
print(error);//可选型的解包
"The errorCode is " + error!;if error != nil{"The errorCode is " + error!;
}else{"No error";
}if let unWrappedErrorCode = error{"The errorCode is " + unWrappedErrorCode;
}//解包可以几条命令放一起,用逗号分开
var errorMessage:String? = "Not found";
if let error = error,errorMessage = errorMessage{"The errorCode is " + error + "\n The errorMessage is " + errorMessage;
}if let error = error,errorMessage = errorMessage where error == "405"{print("Page not found");
}

可选型的应用

//: Playground - noun: a place where people can playimport UIKit
//可选型的应用
var errorMessage:String? = "Not Found";
if let errorMessage = errorMessage{errorMessage.uppercaseString;
}//先判断errorMessage是否为nil,如果不是就执行后面的方法
errorMessage?.uppercaseString;//errorMessage!.uppercaseString;var uppercaseErrorMessage = errorMessage?.uppercaseString;if let errorMessage = errorMessage?.uppercaseString{errorMessage;
}var error: String? = nil;
var error2: String? = "407";
let message: String;
if let error = error{message = error;
}else{message = "No error";
}let message2 = error2 == nil ? "No error" : error2;let message3 = error ?? "No error";

可选型在元组中的应用

//: Playground - noun: a place where people can playimport UIKit
//可选型在元组中的应用
var error: (errorCode: Int, errorMessage: String?) = (404, "No Found");
error.errorMessage = nil;
error;
//error = nil;var error2: (errorCode: Int, errorMessage: String)? = (404, "No Found");//error2.errorCode = 48;
error2 = nil;var error3: (errorCode: Int, errorMessage: String?)? = (404, "No Found");//可选型的实际应用
var ageInput: String = "dzt";
var age = Int(ageInput);var a: String = "16";
var aa = Int(a);
if let aa = Int(a) where aa < 20{print("You're a teenager")
}var greetings = "Hello"
greetings.rangeOfString("ll")
greetings.rangeOfString("oo")//隐式可选型
//在类型后加!是定义隐式可选型,不需要解包也可以使用
var error1: String! = nil
error1 = "Not Found"
"The message " + error1

隐式可选型的应用

//: Playground - noun: a place where people can playimport UIKit
//隐式可选型的应用
class City {let cityName: Stringunowned var country: Countryinit(cityName:String, country: Country){self.cityName = cityNameself.country = country}
}class Country {let countryName: Stringvar capitalCity: City!  //定义为隐式可选型,在初始化时赋值init(countryName: String, capitalCity: String){self.countryName = countryName;self.capitalCity = City(cityName: capitalCity, country: self)}func showInfo(){print("This is \(countryName)")print("The capital is \(capitalCity.cityName)")}
}let china = Country(countryName: "China", capitalCity: "Beijing")
china.showInfo()

Swift语言基础笔记(二)相关推荐

  1. Swift语言基础笔记(一)

    Swift是苹果公司2014年推出的全新编程语言,继承了C.Objective-C的特性,目前已经发布了Swift 3:它是一种现代的强类型的语言,具有兼容.开源.简洁的特点,也是一种安全的语言,苹果 ...

  2. c++语言自定义操作符,C++语言复习笔记二

    C++语言复习笔记二 零.OOP 特征:抽象-封装-继承-多态 一.自定义数据类型 1.类 class 类名 { private: 私有成员(本类) public: 公共成员(所有) protecte ...

  3. java语言基础笔记——语句,函数

    java语言基础笔记 语句 判断结构(重点) 三种格式: 第一种:   if(条件表达式){ 执行语句;         }   System.out.println();   举例:   int a ...

  4. pascal语言基础(二)

    该内容为学习 <PASCAL程序设计 第2版>郑启华编著  的笔记,部分与c语言对比学习,方便记忆. pascal语言基础(一) 函数与过程程序设计 函数 1. 定义: FUNCTION ...

  5. 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型

    一  .   常量和变量 Swift语言 对常量和变量的声明进行了明白的区分 Swift语言的常量类型比C 语言的constants类型更加强大,语义更加明白. 常量和变量的差别是常量在设置或初始化后 ...

  6. IOS开发入门之一——Swift语言基础

    需要iOS视频资料可以加我微信: 1914532832  验证信息请注明:IOS开发 很多新人对IOS开发很迷茫,不知道从何下手?看完本系列,你将会觉得IOS入门其实很简单.要学习IOS开发,当然是先 ...

  7. MATLAB 基础笔记(二):常用矩阵的生成

    笔记二是简单介绍常用矩阵的生成 目录 笔记二是简单介绍常用矩阵的生成 1.零矩阵的生成 2.单位矩阵的生成 3.全1矩阵的生成 4.随机整数向量生成 5.生成指定对角线元素矩阵 6.生成对角矩阵 7. ...

  8. C 语言学习笔记(二):编程基础

    目录 一.冯诺依曼模型 二.程序语言发展历史 三.进制 3.1 二进制 3.2 八进制 3.3 十六进制 3.4 进制转换:二进制.八进制.十六进制.十进制之间的转换 3.4.1 将二进制.八进制.十 ...

  9. 笔记整理2----Java语言基础(二)06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础

    06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础 第06天 java基础语法 今日内容介绍  Eclipse断点调试  基 ...

最新文章

  1. 区分BundleVersion和BundleShortVersionString
  2. IE Firefox通用DOM
  3. leetcode剑指 Offer 42. 连续子数组的最大和(动态规划)
  4. php 对接 北向数据接口 socket
  5. python 函数特殊属性
  6. Qt——P28 Stacked Widget控件
  7. 粒子群PSO算法实验及其代码解释
  8. vs2013 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”。是否缺少程序集引用?...
  9. HDU 2389(HK 最大二分匹配)
  10. 【构造】构造一个字符串满足k个子序列问题总结
  11. vue 音频文件打包后找不到文件
  12. Mac修改redis密码
  13. python安装pyserial模块_Python使用pip安装pySerial串口通讯模块
  14. Elasticsearch系列:番外篇-Fielddata
  15. matlab convexhull,使用convex_hull计算体积为0
  16. asp.net 获得根文件夹在服务器上物理路径,asp.net获取网站目录物理路径示例
  17. Android开发获取连接的WIFI名称
  18. 使用 HTML CSS 和 JavaScript 创建星级评分系统
  19. 环信IM SDK使用(一):集成环信SDK及注意事项
  20. iphone 快捷指令打开 行程码

热门文章

  1. matlab如何生成任意范围,任意行列数的随机矩阵
  2. GPS 入门 4 —— GPS NMEA-0183协议 [转]
  3. 游戏中集成unity admob视频广告中文教程
  4. 【AE】通过Element3D制作科技感物体动画
  5. 计算机网络双绞线特点,计算机网路·实验一--常见网络设备及双绞线的制作和连接(11页)-原创力文档...
  6. Python运行时打印汉语拼音表
  7. 如何用好 Google 搜索引擎解决你的问题
  8. vue+blob,文件流转word文档并实现下载功能
  9. 2016年中国云服务器产品十大品牌排行榜
  10. 如何将 wordfile 添加到 UltraEdit 或 UEStudio