[绍棠_swift] swift的简单学习(字符串、4元组、类型转换及运算)
来源:互联网 发布:garageband知乎 编辑:程序博客网 时间:2024/05/21 02:48
func swiftLearn1() {
// 一、字符串
var string1 ="hello"
string1 +="you"
var string2 =" there"
let r1:Character ="!"
var r2:Character ="?"
var stringPlusCharacter = string1+"\(r1)"
let str_1 ="heallo"
let str_2 ="you"
let str_3 ="\(str_1)"+" "+"\(str_2)"
print(str_3)
let name ="小明"
let age = 10
let result ="\(name)的年龄是\(age)岁!"
print(result);
// 字符串可以通过传递一个值类型为Character的数组作为自变量来初始化:
let catCharacters: [Character] = ["C", "a", "t", "!"]
let catString = String(catCharacters)
print(catString)
let string4 = "hello"
let string5 = " there"
var welcome = string4 + string5
// welcome 现在等于 "hello there"
// 您也可以通过加法赋值运算符 (+=) 将一个字符串添加到一个已经存在字符串变量上:
var instruction = "look over"
instruction += string5
// instruction 现在等于 "look over there"
// 您可以用append()方法将一个字符附加到一个字符串变量的尾部:
let exclamationMark: Character = "!"
welcome.append(exclamationMark)
// welcome 现在等于 "hello there!"
// 二、4元组
let tup1 = (age:21, name:"Coco", gender:18, hight:1.68) //带元数名称
let tup2 = (21,"Tom", 18, 1.68) // 省略元素名称
var tup3:(Int,String) = (1,"hello") //指定类型。(指定类型后就不能再写元素名称了)
var (t1, t2) = tup3 //两个变量接收元组
var (_, t3) = tup3 //只接收一个
/*
当元组中的值可以比较时,你也可以使用这些运算符来比较它们的大小。例如,因为 Int和 String类型的值可以比较,所以类型为 (Int, String)的元组也可以被比较。相反,Bool不能被比较,也意味着存有布尔类型的元组不能被比较。
比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。例如:
(1, "zebra") < (2, "apple") // true,因为 1小于 2
(3, "apple") < (3, "bird") // true,因为 3等于 3,但是 apple小于 bird
(4, "dog") == (4, "dog") // true,因为 4等于 4,dog等于 dog
*/
// 三、可选(要么返回该值,要么为nil)
var possibleNumber ="123"
var convertedNumber:Int? =Int(possibleNumber) //转换可能失败(在类型后面加?表示可选)
var possibleStr:Int = 1
var convertedString:String? =String(possibleStr)
var convertedFloat:CGFloat =CGFloat(possibleStr)
if convertedNumber !=nil {
print("convertedNumber的值为\(convertedNumber!)")
}
iflet my = convertedNumber {
print("这是可选绑定!\(my)")
}
/// OC中nil指向一个不存在的对象,而swift中nil不是指针,而是一个缺省值
// possibleNumber = nil // 普通的变量是不能赋值为nil
// convertedNumber = nil //可选类型能赋值为nil,当没有值时,自动赋值为nil
// 四、类型转换
// 1 类型转换
let e1 = 1
let e2 = 0.12
// let e3 = e1 + e2 // 错误,类型不同不能直接相加
let e3 =Double(e1) + e2
print("e3的值为\(e3)")
// 2 类型别名 typealias,类型别名就相当于C中的typedef
typealias BYInt =Int
let testInt:BYInt = 10
// 五、范围运算符 ..<...
for index1in 1...10 { // 表示闭包[1 10]
print("index1的\(index1)")
}
for index2in 1..<10 { //表示半闭包[1 10)
print("index2的值\(index2)")
if index2 == 4 {
break
}
}
// 六、switch语句
/*
1)与c语言中的不同.不必每个case下写break,自动break
2)每个case后面必须有可执行语句,否则会报错
3)每个case都可以匹配多个条件,也可以填写一个范围
4)switch要保证处理所有的情况,一定加上default.
5)case还可以匹配元祖
*/
let score = 10
switch score {
case 0...3:
print("差")
case 4,5,6,7:
print("良")
case 8...10:
print("优")
default:
print("开挂了")
}
// 七、溢出运算符
// 1溢出运算符(处理数据溢出的情况)
// &+溢出加 &-溢出减
let f1 =uint.max
// let f2 = f1+1 // 这样写会上溢
let f2 = f1 &+ 1 //溢出加,值为0,变为溢出后的最小值
print("f2的值\(f2)")
// 八、一元负号运算符(数值的正负号可以使用前缀 -(即一元负号)来切换:)
let three = 2
let minusThree = -three // -2
let pluseThree = -minusThree // 2
// Warning:- 一元负号(-)写在操作数之前,中间没有空格
// 九、一元正号运算符(一元正号(+)不做任何改变地返回操作数的值)
let minusSix = -6
let alsoMinusSix = +minusSix // alsoMinusSix = -6
/// 比较运算符(Swift也提供恒等(===)和不恒等(!==))
// 十、三目运算符与空合运算符
// 三目运算符
let contentHeight = 40
let hasHeader =true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// 空合运算符
/*
空合运算符(a ?? b)将对可选类型 a进行空判断,如果 a包含一个值就进行解封,否则就返回一个默认值 b。表达式 a必须是 Optional类型。默认值 b的类型必须要和 a存储值的类型保持一致。
空合运算符是对以下代码的简短表达方法:
a != nil ? a! : b
上述代码使用了三目运算符。当可选类型 a的值不为空时,进行强制解封(a!),访问 a中的值;反之返回默认值 b。
*/
let defaultColorName ="red"
var userDefinedColorName:String? //默认值为 nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName的值为空,所以 colorNameToUse的值为 "red"
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName非空,因此 colorNameToUse的值为 "green"
}
func swiftLearn1() {
// 一、字符串
var string1 ="hello"
string1 +="you"
var string2 =" there"
let r1:Character ="!"
var r2:Character ="?"
var stringPlusCharacter = string1+"\(r1)"
let str_1 ="heallo"
let str_2 ="you"
let str_3 ="\(str_1)"+" "+"\(str_2)"
print(str_3)
let name ="小明"
let age = 10
let result ="\(name)的年龄是\(age)岁!"
print(result);
// 字符串可以通过传递一个值类型为Character的数组作为自变量来初始化:
let catCharacters: [Character] = ["C", "a", "t", "!"]
let catString = String(catCharacters)
print(catString)
let string4 = "hello"
let string5 = " there"
var welcome = string4 + string5
// welcome 现在等于 "hello there"
// 您也可以通过加法赋值运算符 (+=) 将一个字符串添加到一个已经存在字符串变量上:
var instruction = "look over"
instruction += string5
// instruction 现在等于 "look over there"
// 您可以用append()方法将一个字符附加到一个字符串变量的尾部:
let exclamationMark: Character = "!"
welcome.append(exclamationMark)
// welcome 现在等于 "hello there!"
// 二、4元组
let tup1 = (age:21, name:"Coco", gender:18, hight:1.68) //带元数名称
let tup2 = (21,"Tom", 18, 1.68) // 省略元素名称
var tup3:(Int,String) = (1,"hello") //指定类型。(指定类型后就不能再写元素名称了)
var (t1, t2) = tup3 //两个变量接收元组
var (_, t3) = tup3 //只接收一个
/*
当元组中的值可以比较时,你也可以使用这些运算符来比较它们的大小。例如,因为 Int和 String类型的值可以比较,所以类型为 (Int, String)的元组也可以被比较。相反,Bool不能被比较,也意味着存有布尔类型的元组不能被比较。
比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。例如:
(1, "zebra") < (2, "apple") // true,因为 1小于 2
(3, "apple") < (3, "bird") // true,因为 3等于 3,但是 apple小于 bird
(4, "dog") == (4, "dog") // true,因为 4等于 4,dog等于 dog
*/
// 三、可选(要么返回该值,要么为nil)
var possibleNumber ="123"
var convertedNumber:Int? =Int(possibleNumber) //转换可能失败(在类型后面加?表示可选)
var possibleStr:Int = 1
var convertedString:String? =String(possibleStr)
var convertedFloat:CGFloat =CGFloat(possibleStr)
if convertedNumber !=nil {
print("convertedNumber的值为\(convertedNumber!)")
}
iflet my = convertedNumber {
print("这是可选绑定!\(my)")
}
/// OC中nil指向一个不存在的对象,而swift中nil不是指针,而是一个缺省值
// possibleNumber = nil // 普通的变量是不能赋值为nil
// convertedNumber = nil //可选类型能赋值为nil,当没有值时,自动赋值为nil
// 四、类型转换
// 1 类型转换
let e1 = 1
let e2 = 0.12
// let e3 = e1 + e2 // 错误,类型不同不能直接相加
let e3 =Double(e1) + e2
print("e3的值为\(e3)")
// 2 类型别名 typealias,类型别名就相当于C中的typedef
typealias BYInt =Int
let testInt:BYInt = 10
// 五、范围运算符 ..<...
for index1in 1...10 { // 表示闭包[1 10]
print("index1的\(index1)")
}
for index2in 1..<10 { //表示半闭包[1 10)
print("index2的值\(index2)")
if index2 == 4 {
break
}
}
// 六、switch语句
/*
1)与c语言中的不同.不必每个case下写break,自动break
2)每个case后面必须有可执行语句,否则会报错
3)每个case都可以匹配多个条件,也可以填写一个范围
4)switch要保证处理所有的情况,一定加上default.
5)case还可以匹配元祖
*/
let score = 10
switch score {
case 0...3:
print("差")
case 4,5,6,7:
print("良")
case 8...10:
print("优")
default:
print("开挂了")
}
// 七、溢出运算符
// 1溢出运算符(处理数据溢出的情况)
// &+溢出加 &-溢出减
let f1 =uint.max
// let f2 = f1+1 // 这样写会上溢
let f2 = f1 &+ 1 //溢出加,值为0,变为溢出后的最小值
print("f2的值\(f2)")
// 八、一元负号运算符(数值的正负号可以使用前缀 -(即一元负号)来切换:)
let three = 2
let minusThree = -three // -2
let pluseThree = -minusThree // 2
// Warning:- 一元负号(-)写在操作数之前,中间没有空格
// 九、一元正号运算符(一元正号(+)不做任何改变地返回操作数的值)
let minusSix = -6
let alsoMinusSix = +minusSix // alsoMinusSix = -6
/// 比较运算符(Swift也提供恒等(===)和不恒等(!==))
// 十、三目运算符与空合运算符
// 三目运算符
let contentHeight = 40
let hasHeader =true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// 空合运算符
/*
空合运算符(a ?? b)将对可选类型 a进行空判断,如果 a包含一个值就进行解封,否则就返回一个默认值 b。表达式 a必须是 Optional类型。默认值 b的类型必须要和 a存储值的类型保持一致。
空合运算符是对以下代码的简短表达方法:
a != nil ? a! : b
上述代码使用了三目运算符。当可选类型 a的值不为空时,进行强制解封(a!),访问 a中的值;反之返回默认值 b。
*/
let defaultColorName ="red"
var userDefinedColorName:String? //默认值为 nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName的值为空,所以 colorNameToUse的值为 "red"
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName非空,因此 colorNameToUse的值为 "green"
}
- [绍棠_swift] swift的简单学习(字符串、4元组、类型转换及运算)
- Swift元组类型转字符串类型
- 赵雅智_Swift(1)_swift简介及类型
- [绍棠_Swift] Swift
- Swift学习Day03(元组 Tuples类型)
- swift基本知识、数据类型、运算符、元组类型
- swift元组类型
- swift元组类型
- c++学习笔记5:运算符重载、友元和类的类型转换
- swift学习笔记1-常量变量、运算符、类型转换
- [绍棠_Swift] Swift中的回调传值
- swift的数据类型、运算符和元组的简单使用
- swift-06-字符串,字符以及元组类型
- [绍棠_swift] Swift中assert(断言)的使用
- [绍棠_Swift] Swift中类和结构体的区别
- Swift 如何将数字型字符串转换成String类型 (toInt()方法) 及返回值未解包的原因
- Swift学习 OC字符串和Swift字符串的转换
- Swift 学习笔记01-字符串及运算符
- OpenAirInterface运行OAI eNB和OAI UE without S1 接口
- opencv3学习之Point类
- HTML转PDF的问题
- MySQL 5.7.19安装目录下创建my.ini文件
- 遗传算法入门(二)
- [绍棠_swift] swift的简单学习(字符串、4元组、类型转换及运算)
- Redis专题之快速入门实践(无需安装,在线学习)
- CodeForces 360 B.Levko and Array(二分+dp)
- MFC 程序从高分屏计算机迁移到低分辨率屏幕电脑上悲剧
- jedisLock—redis分布式锁实现
- VF01 开票拆分
- SQL注入中级
- js typeof 和instanceof的区别
- 海思3516A_D接口说明及技术参数