Swift-1-基本概念
// Playground - noun: a place where people can play
// 通过代码快速了解swift常用知识,需要一定object-c基础 import UIKit // 声明常量
let maximumNumberOfAttemps = // 声明变量
var currentLoginAttempt = // 同时声明多个常量/变量
var x = 0.0, y = 1.0, z = 2.0
let a = 0.0, b = 1.0, c = 2.0 // 注意: 如果一个值不应该被改变,应该声明为let。如果一个值可以被改变,必须声明为var // 类型标注 type annotations
var welcomMessage : String // 声明一次类型为String的变量welcomeMessage println("\(x) is in line : \(__LINE__) \nfile: \(__FILE__)") // 整型与浮点型转换
let three =
let pointOneFourOneFive = 0.1415
let pi = Double(three) + pointOneFourOneFive
let pb = three + Int(pointOneFourOneFive) // typealias
typealias CustomInt16 = Int16
var ci : CustomInt16 = // boolean
let rightIsRight = true
if rightIsRight {
println("right thing")
} let i =
if i { // Error: Type 'Int' does not conform to protocol 'BooleanType'
// 不能使用非Bool值作为判断依据
} // Tuples 元组
let http404Error = (, "Not Found") // (Int, String)类型的元组 // 分解元组[读取元组中的值]
// 方式1
let (statusCode, statusMessage) = http404Error
println("the status code is \(statusCode), And the statusMessage is \(statusMessage)")
// 忽略读取某些内容,忽略的部分用 _ 代替
let (statusCode2, _) = http404Error
println("the status code 2 is \(statusCode2)") // 方式2 : 直接通过索引来读取
let statusCode3 = http404Error.
println("the status code 3 is \(statusCode3)") // 方式3 : 为元组中元素命名,通过元素名称直接获取
let http404Error2 = (code : , message : "Not Found")
let statusCode4 = http404Error2.code
println("the status code is \(statusCode4)") // 注意:元组在临时将多个值组织到一起时很有用,但是不适合用来创建复杂的数据结构。如果你的数据结构不是临时使用,应该使用类或者结构体 // 可选值 optional : 使用可选来表示值可能为空的情况.
// nil : 只能赋值给可选类型。如果一个常量或者变量在特定的情况下需要表示值缺失,那么它必须声明为可选值
var serverResponseCode: Int? = // 如果没有初始值404,则该变量默认初始值为nil
serverResponseCode = nil // OC中nil是一个指向不存在对象的指针,swift中nil表示一个已确定类型的变量值缺失,任何可选值都可以被设为nil。 // optional解包:使用!对optional值进行强制解包,如果optional值为nil,则会发生错误,所以强制解包前一定要确保optional值不为nil
if serverResponseCode != nil {
println("serverResponseCode contains some non-nil value")
} // 可选绑定[optional binding]
if let code = serverResponseCode { // if serverResponseCode != nil, let code = serverResponseCode!
println("serverResponseCode contains some non-nil value of \(code)")
} else {
println("serverResponseCode is nil")
} // 隐式解析可选值 : 与普通 ? 可选值 区别在于可以直接访问,不用进行强制解析。但是被设置隐式解析的变量在每次访问时必须有值(非nil),否则会出现运行时错误
let possibleString : String? = "a possible string"
let forcedString = possibleString! // 必须加 !进行强制解析 let assumingString : String! = "an implicitly unwrapped optional string."
let implicitString = assumingString // 不需要 ! 进行强制解析
// 注意:如果一个变量可能为nil,那么应该始终设置成可选,而不是隐式解析的可选值。 // 断言 assert (与OC中NSAssert一致)
let age = -
assert(age >= , "A person's age connot be less than zero") // 会自动打印出 file line
Swift-1-基本概念的更多相关文章
- CS193P - 2016年秋 第三讲 Swift 语言及 Foundation 框架
这一讲介绍一些 Swift 的重点概念.特别是一些有别于其它语言的地方.但本质上还都是语法糖. 想充分理解这一讲的内容,最好的方式就是 打开 playgound,亲自动手来实验. 1,Optional ...
- Swift 05.Block
Swift的函数用法还真是灵活.但是个人感觉更灵活的还是闭包. swift闭包的概念大抵相当于OC的block的概念.如果对于block的理解很透彻的话,闭包的原理性的东西还是很好理解的. 剩下的就是 ...
- 理解 OpenStack Swift (2):架构、原理及功能 [Architecture, Implementation and Features]
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...
- 【面试必备】Swift 面试题及其答案
原文:Swift Interview Questions and Answers 原作者:Antonio Bello 原作者介绍: Antonio 拥有丰富的编程经验.他开始编程的时候,内存单位还是 ...
- 行走于Swift的世界中(转)
从Swift正式公布到现在,我基本一直在关注和摸索Swift.对于一门新语言来说,开荒阶段的探索自然是激动人心的,但是很多时候,资料的缺失和细节的隐藏也让人着实苦恼.最近几天的感受是,Swift 并不 ...
- Swift 学习笔记 (属性)
属性可以将值与特定的类 结构体 或者枚举联系起来. 存储属性会存储常量或者变量作为实例的一部分.反之计算属性会计算(而不是存储值)值. 计算属性可以由类 结构体 和枚举定义.存储属性只能由类和结构体定 ...
- Swift:UIKit中Demo(一)
关于Swift的基本概念及语法知识.我在前面的章节中已经介绍了非常多.这一节和下一节主要有针对性的解说Swift在实际UIKit开发中的使用场景及注意点.先来看看Demo的终于效果图. Demo分析: ...
- Swift3.0P1 语法指南——属性
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- 从零开始--系统深入学习IOS(使用Swift---带链接)
这是一篇面向IOS新手的文档.同时提供一些系统知识的链接,让你系统学习IOS.它提供一些信息帮助你采用技术和编程接口来开发苹果软件产品,本人不保证会在将来更新.学习它,需要你掌握一些基本的编程知识 1 ...
- 在Ubuntu 12.10 上安装部署Openstack
OpenStack系统有几个关键的项目,它们能够独立地安装但是能够在你的云计算中共同工作.这些项目包括:OpenStack Compute,OpenStack Object Storage,OpenS ...
随机推荐
- C# 乘法口诀表的实现方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 乘法运算 ...
- 获取枚举的title
public class StringValue : System.Attribute { private readonly string _value; public StringValue(str ...
- 淘宝:OceanBase分布式系统负载均衡案例分享
Heroku因"随机调度+Rails单线程处理导致延迟增加的负载均衡失败"的案例之后,我们在思考:在负载均衡测试时发现问题并妥善解决的成功经验有没有?于是,挖掘出"淘宝在 ...
- Dapper多表查询(列名重复,类字段重复)映射方案
1. 一个主名,一个别名,设计时候属性和字段命名不同. 这样主名和别名都可以用的,在主名与别人重复时候用别名(别名可以设计的明确一点长一点,比如类名和字段结合) 2. 或者找一个字段多的直接继承出一个 ...
- C 简易基础开发框架 - simple c
引言 一个为 简单高效而生的 简易跨平台的 纯C开发框架. githup上源码 https://github.com/wangzhione/sconsole_project 请容我细说 s ...
- servlet中的cookie
cookie的机制是:从客户端(浏览器)发送请求到服务器,然后服务器把接受的信息回写到客户端,这个信息在客户端跟服务器之间进行交互. 下面是一个创建cookie的小案例 //如何创建cookie pa ...
- 应聘复习基础笔记1:网络编程之TCP与UDP的优缺点,TCP三次握手、四次挥手、传输窗口控制、存在问题
重要性:必考 一.TCP与UDP的优缺点 ①TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据.TCP提供 ...
- Linux内核学习笔记——VFS
概念: ①硬链接:若一个 inode 号对应多个文件名,则称这些文件为硬链接.即硬链接就是同一个文件使用了多个别名.硬链接可由命令 link 或 ln 创建. 其特性: 文件有相同的 inode 及 ...
- SQL Server基本操作积累
一.基本操作 1.将数据绑定到DataGridVirw控件上显示的数据列标题将会是数据库中的字段名称,可以在使用select语句时使用AS关键字将转化为列名的别名 select name AS 姓名 ...
- struts2传递参数值的3中方式
在使用struts2的时候,当要传递的参数不多的时候,我们会选择使用属性来传参,而当要传递的参数很多的时候,或者多个action会有共用的参数时,我们会使用另外两种传参方式. 注意:使用Model D ...