Code Monkey home page Code Monkey logo

the-swift-programming-language-in-chinese's Introduction

《The Swift Programming Language》in Chinese

中文版 Apple 官方 Swift 教程《The Swift Programming Language》

英文原版在线版

在线阅读

使用 GitBook 制作,可以在 GitBook 网站阅读。

当前阶段

  • 更新到 Swift 5.7,2022-06-06
  • 更新到 Swift 5.6,2022-03-14
  • 更新到 Swift 5.5,2021-06-07
  • 更新到 Swift 5.4,2021-04-26
  • 更新到 Swift 5.3,2020-09-16
  • 更新到 Swift 5.2,2020-02-15
  • 更新到 Swift 5.1,2019-11-11
  • 更新到 Swift 5.0,2019-04-05
  • 更新到 Swift 4.5,2019-03-16
  • 更新到 Swift 4.2,2019-01-29
  • 更新到 Swift 4.1,2018-04-12,感谢 @Mylittleswift
  • 更新到 Swift 3.0,2016-09-23

贡献力量

如果想做出贡献的话,你可以:

  • 参与翻译
  • 帮忙校对,挑错别字、病句等等
  • 提出修改建议
  • 提出术语翻译建议

翻译建议

如果你有兴趣参与项目,请仔细阅读说明:

排版格式和流程说明:

原版文档差异比较:

在翻译时可以通过 Calibre 软件对 document 目录下 不同版本的文档进行 diff,检查待更新部分。

diff 操作如下:

将最新文档加入到 Calibre 中,点击 Edit Book,然后在编辑界面选择 File -> Compare to other book 检查各模块的更新内容,详见 链接

其他说明:

  • 相关术语请严格按照术语表来翻译,如果有问题可以发 Issue 大家一起讨论
  • 使用 Markdown 进行翻译,文件名必须使用英文
  • 翻译后的文档请放到 source 文件夹下的对应章节中,然后 Pull Request 即可,我们会用 GitBook 编译成网页
  • 有其他任何问题都欢迎发 Issue

术语表

翻译术语的时候请参考这个对照表:

术语 备选翻译
result builder 结果构造器
property wrapper 属性包装器(翻译相关讨论
projected value 被呈现值
wrapped value 被包装值
argument 实参
parameter 形参
variadic parameters 可变参数
associated type 关联类型
range 区间
type property 类型属性
unary operator 一元运算符
binary operator 二元运算符
ternary operator 三元运算符
labeled statement 具名语句
conform protocol 遵循协议
availability-condition 可用性条件
fallthrough 贯穿
branch statement 分支语句
control transfer statement 控制传递语句
type annotation 类型注解
type identifier 类型标识符
metatype type 元类型
protocol composition type 复合协议类型
associated value 关联值
raw value 原始值
computed property 计算属性
stored property 存储属性
operator 运算符
playground 不翻译
array 数组
dictionary 字典
list 列表
statement 语句
expression 表达式
optional 可选
implicitly unwrapped optional 隐式解包可选值
optional binding 可选绑定
optional chaining 可选链
collection 集合
convention 约定
iterate 迭代
nest 嵌套
inheritance 继承
override 重写
base class 基类
designated initializer 指定构造器
convenience initializer 便利构造器
automatic reference counting 自动引用计数
type inference 类型推断
type casting 类型转换
unwrapped 解包
wrapped 包装
note 注意
closure 闭包
tuple 元组
first-class 一等
deinitializer 析构器
initializer 构造器
initialization 构造过程
deinitialization 析构过程
getter 不翻译
setter 不翻译
subscript 下标
property 属性
attribute 特性或者属性,根据上下文
method 方法
enumeration 枚举
structure 结构体
protocol 协议
extension 扩展
generic 泛型
literal value 字面量
alias 别名
assertion 断言
conditional compilation 条件编译
opaque type 不透明类型
function 函数
runtime 运行时

贡献者

贡献者列表,感谢大家!

协议

苹果官方文档 协议一致:Creative Commons Attribution 4.0 International (CC BY 4.0) License

the-swift-programming-language-in-chinese's People

Contributors

949478479 avatar bignerdcoding avatar bqlin avatar chenmingjia avatar coverxit avatar dabing1022 avatar futantan avatar geek5nan avatar hawstein avatar honghaoz avatar jaysurplus avatar kemchenj avatar lyuka avatar nemocdz avatar numbbbbb avatar overtrue avatar ray16897188 avatar realank avatar shanksyang avatar sketchk avatar stanzhai avatar sunsetwan avatar thelittleboy avatar timothyye avatar twlkyao avatar vincent4j avatar wamaker avatar wh1100717 avatar xielingwang avatar yulingtianxia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

the-swift-programming-language-in-chinese's Issues

“Swift 初见”中“对象和类”部分最后少了一段代码。

处理变量的可选值时,你可以在操作(比如方法、属性和子脚本)之前加?。如果?之前的值是nil,?后面的东西都会被忽略,并且整个表达式返回nil。否则,?之后的东西都会被运行。在这两种情况下,整个表达式的值也是一个可选值。

这段之后应该有一小段代码的。

/chapter1/02_a_swift_tour.html 有段描述是错误的

原文:

You can refer to parameters by number instead of by name—this approach is especially useful in very short closures. A closure passed as the last argument to a function can appear immediately after the parentheses.

sort([1, 5, 3, 12, 2]) { $0 > $1 }

译文:

你可以获取参数的数量——这个方法在非常短的闭包中很有用。一个被作为最后一个参数传入函数的时候可以直接出现在括号后面。

sort([1, 5, 3, 12, 2]) { $0 > $1 }

关于原文我理解的也不透彻,但是应该不是译文中描述的那样。

这个语法应该是用 $参数下表 替代参数名称,实际上闭包"{ $0 > $1 }",应该是sort的最后一个参数,返回的是排序好的数组或者一个最值?

中文字体太细,影响阅读

字体的设置应该是针对英文的,在 OSX 系统下中文显示非常细,颜色浅一点就难以看清,建议添加『微软雅黑』

2.6 错别字

在Swift中,使用函数类型就像使用其他类型一样。例如,你可以定义一个常量或变量,它的类型是函数,并且可以幅值为一个函数:

『赋值』。。。

请大家加一下QQ群,方便交流

GitHub的沟通是一个大问题,翻译部分还勉强可以维持,但是校对部分需要进行讨论决定校对方案,所以我建了一个QQ群,请大家加一下,这样交流起来就方便多了。

群号:364279588

谢谢!

2.6 错别字

注意:
对变量参数所进行的修改在函数调用结束后变消息了,并且对于函数体外是不可见的。变量参数仅仅存在于函数调用的生命周期中。

"变消息了"应为"便消失了",才对

[疑问和建议] 语法高亮

如果我理解的没错的话,由于github现在还不支持markdown文件swift的语法高亮,导致了gitbook生成网页的时候也无法对语法高亮(因为没有生成相应的class)。正常的话对于code(比如js)会自动生成<code class="lang-js">。不知道大家有没有什么办法可以实现这个功能。或者可以参考这个项目的解决办法
PS:对于gitbook不熟悉,纯属个人猜测,或者gitbook有更好的解决方案。

怎么理解swift中的可选变量赋值

来个与翻译无关的问题 😸

var optionalString: String? = "Hello"

这种 ?= 赋值适用于什么场景? 是swift独有的语法还是object-c传承下来的哦?

附属脚本

附属脚本(Subscripts)应该翻译为下标,目录中有错误

Swift初见函数和闭包里少了一行代码

有很多种创建闭包的方法。如果一个闭包的类型已知,比如作为一个回调函数,你可以忽略参数的类型和返回值。单个语句闭包会把它语句的值当做结果返回。这句后面少了一句代码

numbers.map({ number in 3 * number})

2.3节中的几个小问题

引言部分 “hello, world“” 多了引号

String Interpolation中的Note:

您插值字符串中写在括号中的表达式不能包含非转义双引号 (") 和反斜杠 (),并且不能包含回车或换行符。

把“您”去掉语句会通顺。

还有Swift原文是这样的:

let wiseWords = ""Imagination is more important than knowledge" - Einstein"
// "Imagination is more important than knowledge" - Einstein

但是这一块在翻译的时候就完全顺着引言部分的“albatross”成为了“我是要成为海贼王的男人”。

翻译是按照原文来还是无所谓?希望所有的各章节能够统一一下。

还有关于各种emoji符号的对应也可以统一一下,有的页面是方框而有的页面翻译了。

还是要感谢所有参与翻译的人员,文档质量还是很高的~

【胜利在望】校对任务认领中!

经过大家不懈努力,翻译阶段终于接近尾声!

目前除了 2-14 构造过程 和 3-6 声明,其他章节全部翻译完毕!

这两篇的作者我会单独联系他们,保证今天完成。

现在开始进入校对阶段,请仔细阅读校对要求:

  • 要参与校对请在此issue回复,我会根据回复顺序分配章节,一人一篇文章
  • 校对规则请参考:#69 务必严格按照过程来做!有疑问请在群里提问,QQ群:364279588
  • 校对完成后,直接通过QQ把md文件发给我,出于安全考虑,请不要push到你的库或者pr到我的库,明天发布前我会统一push上来
  • 请在今晚完成校对

章节列表:

  • 欢迎使用 Swift
    • 关于 Swift 【yeahdongcn】
    • Swift 初见 【shinyzhu】
  • Swift 教程
    • 基础部分 【lslxdx】
    • 基本操作符 【Evilcome】
    • 字符串和字符 【Hawstein】
    • 集合类型 【shinyzhu】
    • 控制流 【coverxit】
    • 函数 【LunaticM】
    • 闭包 【lyuka】
    • 枚举 【shinyzhu】
    • 类和结构体 【sg552】
    • 属性 【pp-prog】
    • 方法 【地】
    • 附属脚本 【zq54zquan】
    • 继承 【menlongsheng】
    • 构造过程 | 未完成
    • 析构过程 【fd5788】
    • 自动引用计数 【Hawstein】
    • 可选链 【numbbbbb】
    • 类型检查 【happyming】
    • 嵌套类型 【shinyzhu】
    • 扩展 【Hawstein】
    • 协议 【dabing1022 】
    • 泛型 【lifedim】
    • 高级操作符 【lifedim】
  • 语言参考
    • 关于语言参考
    • 词法结构
    • 类型
    • 表达式
    • 语句
    • 声明 | 未完成
    • 特性
    • 模式
    • 泛型参数 【yankuangshi】
    • 语法总结 【xielingwang】

谢谢!

关于图片

原作中的图片,翻译的时候应该怎么办?我们是不是得找一个公共的地方,把插图都存放起来,markdown里面直接引用这些图片?

校对参考规则

要参与校对的朋友请加QQ群:364279588,方便进行讨论。

下面列出校对时候需要注意的地方,大家进行校对的时候请逐条确认。

校对质量直接决定整个翻译结果的质量,每个人的校对工作都关系到整个项目的成败,请大家一定要逐条进行确认!谢谢。

1、将术语按照术语表翻译,并在术语之后附上术语的英文原文,例如:附属脚本(subscript),中文括号。

2、每篇文章的大标题下面添加分割线,也就是说每篇文章的文章标题下添加分割线,例如:

    # 基本运算符
    -----------------

3、原文中的experimentnote统一成经验注意,格式如下:

>注意:
扩展可以添加新的计算属性,但是不可以添加存储属性,也不可以向已有属性添加属性观测器(property observers)。

注意两点:冒号是中文冒号;第一行和下面的内容之间不要有空行,否则格式会出错。

4、每篇文章的开头都添加一个目录,内容为本页的一级标题,比如扩展这篇的开头如下:

#扩展(Extensions)

----

本页包含内容:

-   [扩展语法(Extension Syntax)](#xxxxxxxx)
-   [计算属性(Computed Properties)](#yyyyyyy)
-   构造器(Initializers)
-   方法(Methods)
-   下标(Subscripts)
-   嵌套类型(Nested Types)

*扩展*就是向一个已有的类(以下省略)

每条内容之后是否要添加英文原文请自行决定,常见的比如结构体这样不影响理解的可以忽略英文原文。理解起来有困难的比如附属脚本可选类型等等请添加原文。

每条内容请添加链接,方便读者直接点击定位。添加链接的方式参考第8条。

5、校对时候注意变量名、数字是否与原文一致,这些容易打错

6、校对时注意是否有错别字

7、如果文中有中英文混杂的情况,中文和英文之间要添加一个空格,如果英文和符号相连则不添加空格,如果英文被包裹在行内代码格式中也不用添加,看例子:

这个 getter 的作用是    ←注意这里两边都要添加空格
所以要使用 getter。     ←注意这里只有左边添加了空格
这个变量名是`test`       ←注意两边都不需要加空格

8、关于章节跳转的问题,由于markdown是可以内嵌HTML的,所以可以这样处理:
首先,在每个小节前面加一个锚记:

<a name="break_statement"></a>
### Break 语句

然后,如果是在本页内,需要跳转的话:

请参考[Break 语句](#break_statement)

对于跳转到其他章节,则需要配上相对URL:

请参考[语法总结](../chapter3/09_Summary_of_the_Grammar.html)一章的[模式(Pattern)](../chapter3/09_Summary_of_the_Grammar.html#label4)

锚记的name采用目标标题的英文名,空格用下划线代替,并转换成小写。

9、除了代码中的标点,文中其他标点符号一律使用中文标点。

10、请将代码注释翻译成中文

再次感谢!

【自由校对】2.9章节格式错误

文中:
结构体类型的成员逐一初始化器
//Memberwise Initializers for structure Types

此处因为括号,且注意structure大写开头。


文中大多数括号,应统一改为中文括号。


的确有不少细节上的格式问题,我在追加一些不容易发现的,以作记录。

文中:
var names = ["Mohsen", "Hilary", "Justyn", "Amy", "Rich", "Graham", "Vic"] var copiedNames = names.copy

这段代码中names.copy应该为names.copy()


如何校对?

我没有在 提交的文件中看到英文原文, 如果我们要校对的话,是不是不太方便呢?

建议在最终校对完毕之前,为文章加上英文原文

2.6 输入输出参数(In-Out Parameters)部分

译文“ 注意:输入输出参数不能有默认值,而且变量参数不能用 inout 标记。如果你用 inout 标记一个参数,这个参数不能别 var 或者 let 标记。”

1.已经实际测试过,“变量参数”应该被翻译为“可变参数”
2.有个错别字“不能别 var 或者 let 标记”---->"不能被"

感谢翻译组

swift初见一节 函数和闭包 可变数量的参数

译文:
函数的参数数量是可变的,用一个数组来获取它们:

func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
sumOf()
sumOf(42, 597, 12)

——————————————————————————————————
“用一个数组来获取它们”,这个翻译欠妥,因为这个数组是传入的参数,并不是返回值,比较正确的翻译应该是“可以用数组来传递这种参数”

swift初见一节 函数和闭包 关于in的作用

译文:
函数实际上是一种特殊的闭包,你可以使用{}来创建一个匿名闭包。使用in来分割参数并返回类型。

numbers.map({
(number: Int) -> Int in
let result = 3 * number
return result
})

————————————————————————————————
这句话 in 的作用不是分割参数并返回类型吧, 因为参数和返回值都是在in的左边,应该是在将参数和返回值从函数体分离出来

【术语表】请大家提出建议

下面是我收集的术语表及其备选翻译,大家可以进行补充或者提出合适的翻译,这个表将被用于校对。

带“*”号的是争议比较大的,请大家重点关注。

术语 备选翻译
associatedtype 关联类型
range 区间
type property 类型属性
Unary operator 一元运算符
Binary operator 二元运算符
Ternary operator 三元运算符
Labeled Statement 具名语句
conform Protocol 遵循协议
availability-condition 可用性条件
fallthrough 贯穿
Branch Statement 分支语句
Control Transfer Statement 控制传递语句
Type Annotation 类型标注
Type Identifier 类型标识符
Metatype Type 元类型
Protocol Composition Type 复合协议类型
associated value 关联值
raw value 原始值
computed property 演算属性
stored property 寄存属性
calculate property 演算属性
operator 运算符
playground 代码预览
array 数组
dictionary 字典
list 列表
statement 语句
expression 表达式
* optional 可选
* Implicitly Unwrapped optional 隐式解析可选
* Optional Binding 可选绑定
* optional chaining 可选链
collection 集合
convention 约定
iterate 迭代
nest 嵌套
Inheritance 继承
override 重写
base class 基类
* Designated Initializer 指定构造器
* Convenience Initializer 便利构造器
Automatic Reference Counting 自动引用计数
type inference 类型推断
* Type Casting 类型检查
* unwrapped 解析
* wrapped 未解析
* note 注意
closure 闭包
tuple 元组
first-class 一等
* deinitializer 析构器
* Initializer 构造器
* initialization 构造过程
* deinitialization 析构过程
* getter 不翻译
* setter 不翻译
* subscript 下标脚本或下标
property 属性
attribute 如果指以@开头的语法,翻译为特性,其他情况翻译为属性
method 方法
Enumeration 枚举
Structure 结构体
Protocol 协议
Extension 扩展
Generic 泛型
* literal value 字面量
alias 别名
Assertion 断言

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.