Swifit基本数据类型(二)

//
//  main.swift
//  Swifit基本数据类型(二)
//
//  Created by Goddog on 15/6/21.
//  Copyright (c) 2015年 Goddog. All rights reserved.
//

import Foundation

//MARK: - 元组
//使用圆括号把多个值组合成一个复合值,元组内的值可使用任意类型;
//定义元组
//1.定义元组变量并赋值
var health = (123,234.3,"OK")
//2.先定义类型,后赋值
var score : (Int,Int,String,Double)
score = (23,43,"及格",23.2)

//3.元组的成员可以再次是元组
var test : (Int,(Int,String))
test = (20,(12,"OKS"))

println("元组的值\(health)")
println(score)
println(test)

//获取元组中的元素值
//根据索引访问元组的元素
println("health的身高元素为:\(health.0)")
println("元组的第二个元素的第一个元素为:\(test.1.0)")

//将元组的元素拆分成单个的常量和变量
//将元组拆分成多个变量
var (height,weight,status) = health
println("身高:\(height)","体重:\(weight)","状态:\(status)")
//分解的时候可以用下划线(_)作为被忽略的部分
//忽略第四个元素
let (swift,oc,java,_) = score
println("swift成绩:\(swift), OC成绩:\(oc), Java成绩:\(java)")

//为元组中的元素命名
var heal = (height:120,  体重:78, status:"优秀")
//使用元组类型来定义元组变量
var scores : (swift:Int, oc:Int, java:String, php:Double)
scores = (oc:100, swift:234, java:"良好", php:98.1)
println(heal.height)
println(scores.swift)


//Swift的函数支持多个返回值,这多个返回值也是以元组的形式返回


//MARK: - 可选类型
//可选和nil
var str = "swift"
//str转换成Int有可能失败,所以num有可能没有值
//所以不能用Int 来声明num的类型
//var num : Int = str.toInt()
var num : Int? = str.toInt()
//注意,在OC中nil代表一个并不存在的指针,在Swift中代表缺失值,如Int?、Double?都可以接受nil值。

//var age : Int = nil  //错误
var age : Int? = nil
//定义myName变量,声明其类型为String?,该变量自动设置成nil
var myName : String?
println(myName)

//强制解析
//Int?类型与Int类型
//程序不能直接把Int?类型的变量或常量当作Int类型的变了或常量使用
//为了获取可选类型的变量或常量,可在变量或常量后添加英文感叹号!
var str1 : String? = "crazySwift"
//str1是String?类型的,不能赋值给String类型的值,所以下面一行错误
//var s : String = str1
//如果在str1后面加上!,就可以获取String?类型变量的实际存储的值
//该值是String类型,因此可以赋值给String类型的s变量
var s : String = str1!
var n1 : Int? = 10
var n2 : Int? = 30

//因为n1和n2是Int?类型,不能参与加法运算
//let sum = n1 + n2
//如果在变量后面加!,就可以强制转换成可选类型的值
let sum = n1! + n2!

//Swift的强制解析是有前提的,必须是可选类型的变量和常量确实有值才能解析
//所以用if来判断
var str3 : String? = "Swift"
if str3 != nil
{
    var ss : String = str3!
}else{
    println("不能强制解析")
}

if n1 != nil && n2 != nil
{
    let num = n1! + n2!
}
else
{
    println("不能强制解析")
}


//可选绑定
//可选绑定:用于判断可选类型的变量和常量是否有值,如果有值就赋值给另一个常量和变量
var str4 : String! = "Swift-ok"
//如果有值就赋值给tmm变量
if var tem = str4
{
    println("该值为\(tem)")
}
else
{
    println("str4的值为nil,不可解析")
}

//MARK: - 注意啦
/**
    Int?和Int! 的区别是:当程序需要获取Int?类型的变量和常量时,程序必须要在变量名或常量名之后添加!后缀强制执行解析
                       当程序需要获取Int!类型的变量和常量时,程序无需要在变量名活常量名之后添加!后缀强制执行解析
*/
var s11 : String? = "Swift"
//对于String?可选类型,必须要用感叹号执行强制解析
var temp11 : String = s11!
var s2 : String! = "Java"
//对于String!可选类型,无需要用感叹号执行强制解析
var temp2 : String = s2
println("temp1的值是:\(temp11),temp2的值是:\(temp2)")

//使用可选绑定来解析隐式可选类型的变量和常量的值
var names : String!
println("name的值是:\(names)")
names = "huxu"
if names != nil
{
    var te = names
    println("\(te)")
}

if let te1 = names
{
    println("\(te1)")
}

//MARK: - 类型别名
//类型别名类似于C语言中的typedef的作用,而Swift用typealias来定义类型别名
//typealias 类型别名 = 已有类型
typealias counter = UInt16
var i, j : counter






println("Hello, World!")

Swift技术学习 https://www.itkc8.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值