Chapter3-Attributes 新增 5.3 缺失内容 (#1159)

* chore: 更新方法名与 propertyWrapper 中对于本地变量的描述

* chore: 翻译 resultBuilder 与 Result-Building Methods

* feat: 新增结果构造器翻译

* chore: 修改结果构造方法的翻译

* chore: 修改结果转换的翻译

* chore: 修改不合适的翻译

* feat: 新增 main 节

Co-authored-by: WAMaker <wamaker@WAMakerdeMacBook-Pro-2.local>
This commit is contained in:
Zhou Fang
2021-07-21 00:48:31 +08:00
committed by GitHub
parent deff7fe8b9
commit e97a29d09f

View File

@ -24,6 +24,8 @@
- `iOSApplicationExtension`
- `macOS`
- `macOSApplicationExtension`
- `macCatalyst`
- `macCatalystApplicationExtension`
- `watchOS`
- `watchOSApplicationExtension`
- `tvOS`
@ -257,6 +259,29 @@ print(wrapper.x)
该特性不能用于嵌套在函数内的声明,也不能用于 `fileprivate``private` 访问级别的声明。在内联函数内定义的函数和闭包都是隐式内联的,即使他们不能标记该特性。
### `main` {#main}
将该特性用于结构体、类,或枚举的声明,表示它包含了程序流的顶级入口。类型必须提供一个不接收任何参数,且返回值为 `Void``main` 类型函数。如下所示:
```swift
@main
struct MyTopLevel {
static func main() {
// 顶级代码从这里开始
}
}
```
换一个说法,应用了 `main` 特性的类型所必须满足的条件,与遵循下面这个假想的协议一样:
```swift
protocol ProvidesMain {
static func main() throws
}
```
编译生成可执行程序的 Swift 代码最多只能拥有一个顶级代码入口,请参阅[顶级代码](../03_language_reference/06_Declarations.md#top-level-code)。
### `nonobjc` {#nonobjc}
针对方法、属性、下标、或构造器的声明使用该特性将覆盖隐式的 `objc` 特性。`nonobjc` 特性告诉编译器该声明不能在 Objective-C 代码中使用,即便它能在 Objective-C 中表示。
@ -278,6 +303,8 @@ import AppKit
NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)
```
编译生成可执行程序的 Swift 代码最多只能拥有一个顶级代码入口,请参阅[顶级代码](../03_language_reference/06_Declarations.md#top-level-code)。
### `NSCopying` {#nscopying}
该特性用于修饰一个类的存储型变量属性。该特性将使属性的设值方法使用传入值的`副本`进行赋值,这个值由传入值的 `copyWithZone(_:)` 方法返回,而不是传入值本身。该属性的类型必需符合 `NSCopying` 协议。
@ -656,6 +683,8 @@ struct ArrayBuilder {
如果你不想使用这个特性,可以提供一个 `main.swift` 文件,并在代码顶层调用 `UIApplicationMain(_:_:_:_:)` 函数。比如,如果你的应用程序使用一个继承于 `UIApplication` 的自定义子类作为主要类,你可以调用 `UIApplicationMain(_:_:_:_:)` 函数而不是使用该特性。
编译生成可执行程序的 Swift 代码最多只能拥有一个顶级代码入口,请参阅[顶级代码](../03_language_reference/06_Declarations.md#top-level-code)。
### `usableFromInline` {#usablefrominline}
该特性用于函数、方法、计算属性、下标、构造器或析构器的声明,以在同一模块中允许该符号用于内联代码的声明。声明必须具有 `internal` 访问级别修饰符。被标记为 `usableFromInline` 的结构体或类它们属性的类型只能是被标记为 public 或者 `usableFromInline` 的类型。被标记为 `usableFromInline` 的枚举,它 case 的真实值或者关联类型只能是被标记为 public 或者 `usableFromInline` 的类型。