[IOS]《A Swift Tour》翻译(一)
以下翻译内容为原创,转载请注明:
来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3768936.html
碎碎念。。。
Swift是苹果在WWDC刚发布的新语言,本人也没学过,现在看苹果官方文档一边翻译一边学习,再加上英语水平和对编程理解很有限,有错误的地方请大家指出,翻译只供参考,建议阅读苹果Swift官方的文档
Swift 之旅
按照传统,在开始学习一门新的语言时写的第一个程序应该是在屏幕上打印“Hello, World”,这个可以用一行来完成:
print(“Hello, world”)
如果你有写过C或者Objective-C的经验,这个语法你应该会感觉很熟悉——在Swift中,这行代码就是一个完整的程序。你不需要像输入输出流或者字符串处理等那样去导入另外的具有功能性的库。在全局范围编写的代码即是程序的入口点,所以你不需要一个main方法。你也不需要在每个语句后面写上分号。
这个旅程会带给你足够的信息让你用Swift来完成各种编程任务。不用担心你是否懂得一些编程——这本书对各个方面都进行来详细的介绍。
基本数据
使用let来表示一个常量,使用var来表示一个变量。常量的值不需要在编译时期被知道,但是你必须且只能一次分配一个值给它。这表示你一旦给这个常量分配了一个值,你就能在很多地方使用它了。
var myVariable = 42;
myVariable = 50;
let myConstant = 42;
一个常量或者变量的类型必须要跟你分配给它的值的类型一致。然而,你一般不需要精确的写明它的类型。当你创建了一个常量或者变量,并赋值后,编译器会自动推断出它的类型。比如在上面的例子中,编译器会推断出myVariable是一个integer,因为它的初始值就是一个integer。
如果初始值不能提供足够的信息(或者它根本没有初始值),可以在这个变量后面加上冒号,然后写上指定类型。
let implicitInteger = 70
let implicitDouble = 70.0
let explicitDouble: Double = 70
值不会隐式地被转换成另一种类型。如果你需要转换成一个不同类型的值,显示地生成一个期望类型的实例。
let label = “The width is ”
let width = 94
let widthLabel = label + String(width)
还有一个更简单的方法,在字符串中包含变量值:写一对括号里面写一个变量值,然后在括号前面写一个反斜杠,举个例子:
let apples = 3
let oranges = 5
let appleSummary = “I have \(apples) apples.”
let fruitSummary = “I have \(apples + oranges) pieces of fruit.”
使用中括号([])来创建一个数组或者字典,使用index(索引)或者key(键)访问他们的某一项。
var shoppingList = [“catfish”, “water”, “tulips”, “blue paint”]
shoppingList[1] = “bottle of water”
var occupations = [
“Malcolm”: “Captain”,
“Kaylee”: “Mechanic”,
]
occupations[“Jayne”] = “Public Relations”
使用初始化器的语法来创建一个空的数组或者字典。
let emptyArray = String[]()
let emptyDictionary = Dictionary<String, Float>()
如果类型信息是可推断的,你可以使用[]创建一个空的数组,使用[:]来创建一个空的字典,举个例子,当你设置一个新的值或者往方法中传入一个变量作为参数
shoppingList = []
控制语句
使用if和switch来创建一个条件,使用for-in,for,while和do-while来创建一个循环。
条件和循环变量上的括号是可选的。if后面大括号和循环体的大括号是必须的。
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores{
if score > 50{
teamScore += 3
}else{
teamScore += 1
}
}
teamScore
在一个if语句中,条件必须是一个布尔类型的表达式——这表示像if score { … }这样的代码是错误的,这个score并不是隐式地去跟0比较。
你可以在值可能为空的时候同时使用if和let。这些值就被表示为可选地。一个可选的值可能包含一个值或者包含一个nil,nil表示这个值是空。在这个值的类型后面写上一个疑问符号(?)可以把这个值标记为可选的。
var optionalString: String? = “Hello”
optionalString == nil
var optionalName: String? = “John Appleseed”
var greeting = “Hello!”
if let name = optionalName{
greeting = “Hello, \(name)”
}
如果可选值是nil,那么这个条件就为false,大括号中代码就会跳过。否则,可选值执行后面代码块中的代码并分配给let后面的常数。
Switches支持各种数据和各种各样的比较操作——它们不局限于integers和相等式的比较。
let vegetable = “red pepper”
switch vegetable{
case “celery”:
let vegetableComment = “Add some raisins and make ants on a log.”
case “cucumber”, “watercress”:
let vegetableComment = “That would make a good tea sandwich.”
case let x where x.hasSuffix(“pepper”):
let vegetableComment = “Is it a spicy \(x)?”
default:
let vegetableComment = “Everything tastes good in soup.”
}
在匹配的case中执行完代码后,程序退出switch语句。执行不会在下一个case中继续,所以不需要显示的在每个cases中的最后依次写上跳出该switch的break语句。
你可以使用for-in语句来迭代键值对形式的字典中的所有items。
let interestingNumbers = [
“Prime”: [2, 3, 5, 7, 11, 13],
“Fibonacci”: [1, 1, 2, 3, 5, 8],
“Square”: [1, 4, 9, 16, 25],
]
var largest = 0
for(kind, numbers) in interestingNumbers{
for number in numbers{
if number > largest{
largest = number
}
}
}
largest
使用while来重复代码块中的代码,直到条件改变。循环条件也可以放在最后,可以确保这个循环至少执行一次。
var n = 2
while n < 100{
n = n * 2
}
n
var m = 2
do{
m = m * 2
} while m < 100
m
你可以在循环中保持一个索引index——通过使用..来限定一个索引范围或者指明初始值,条件和增量。下面两个结果一样的循环:
var firstForLoop = 0
for i in 0..3{
firstForLoop += i
}
firstForLoop
var secondForLoop = 0
for var i = 0; i < 3; ++i{
secondForLoop += 1
}
secondForLoop
使用..来限定范围会省略范围的上限值,使用...来限定范围会包含所有限定值。(译者注:..是左闭右开整数区间,…是左闭右闭整数区间)
[IOS]《A Swift Tour》翻译(一)的更多相关文章
- 1.Swift教程翻译系列——关于Swift
英文版PDF下载地址http://download.csdn.net/detail/tsingheng/7480427 我本来是做JAVA的.可是有一颗折腾的心,苹果公布Swift以后就下载了苹果的开 ...
- iOS、swift、React Native学习常用的社区、论坛
<!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...
- iOS开发Swift篇—(一)简单介绍
iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...
- iOS开发Swift篇—(二)变量和常量
iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...
- iOS开发Swift篇—(三)字符串和数据类型
iOS开发Swift篇—(三)字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容 let website = "http://www ...
- iOS开发Swift篇—(四)运算符
iOS开发Swift篇—(四)运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运算符: ...
- iOS开发Swift篇—(五)元组类型
iOS开发Swift篇—(五)元组类型 一.元组类型介绍 1.什么是元组类型 元组类型由 N个 任意类型的数据组成(N >= 0),组成元组类型的数据可以称为“元素” 示例: let posit ...
- iOS开发Swift篇—(六)流程控制
iOS开发Swift篇—(六)流程控制 一.swift中的流程控制 Swift支持的流程结构如下: 循环结构:for.for-in.while.do-while 选择结构:if.switch 注意:这 ...
- iOS开发Swift篇—(七)函数(1)
iOS开发Swift篇—(七)函数 一.函数的定义 (1)函数的定义格式 func 函数名(形参列表) -> 返回值类型 { // 函数体... } (2)形参列表的格式 形参名1: 形参类型1 ...
- iOS开发Swift篇—(八)函数(2)
iOS开发Swift篇—(八)函数(2) 一.函数类型 函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是 (形参类型列表) -> 返回值类型 func sum(num1: Int ...
随机推荐
- HTML Inspector – 帮助你编写高质量的 HTML 代码
HTML Inspector 是一款代码质量检测工具,帮助你编写更优秀的 HTML 代码.HTML Inspector 使用 JavaScript 编写,运行在浏览器中,是最好的 HTML 代码检测工 ...
- js每天进步一点点4
输入数字的验证
- Elasticsearch增删改查 之 —— Delete删除
删除文档也算是常用的操作了...如果把Elasticsearch当做一款普通的数据库,那么删除操作自然就很常用了.如果仅仅是全文检索,可能就不会太常用到删除. Delete API 删除API,可以根 ...
- ClojureScript魔法堂:搭建开发环境
一.前言 当看到Lisp等函数式编程语言的语法是 (say (concat "hello" "world")) 这样的时候,我就有种深入学习的冲动,因为它的语法 ...
- Android Studio快捷键每日一练(1)
原文地址:http://www.developerphil.com/android-studio-tips-of-the-day-roundup-1/ 1.高亮显示相同的字符串 苹果:Cmd+shif ...
- Log4net 日志使用介绍
概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信 ...
- 【转载】HttpWebRequest开启gzip压缩简介
在用HttpWebRequest对象时,一般我们都没有开启gzip压缩,如果服务端返回的数据比较大,这是我们需要开启gzip压缩,怎么开启呢? 1.给HttpWebRequest对象,添加如下Head ...
- gitlab web hook
https://pypi.python.org/pypi/glhooks/0.1.0 https://filippo.io/a-python-github-push-webhook-handler/ ...
- display---我的第一篇博客
display:block显示为块级元素,换行 display:inline-block显示为块级内联元素,不换行,但是可以改变其宽度高度 display:inline显示为内联元素,不换行但是也不能 ...
- 如何使用 HTML5 Canvas 制作水波纹效果
今天,我们继续分享 JavaScript 实现的效果例子,这篇文章会介绍使用 JavaScript 实现水波纹效果.水波效果以图片为背景,点击图片任意位置都会触发.有时候,我们使用普通的 Javasc ...