Esse projeto tem como objetivo traduzir e disponibilizar gratuitamente em português o livro The Swift Programming Language (swift 5.3).
Cada item dessa lista terá uma Issue. Antes de pegar um desses items para traduzir, verifique a Issue e descubra se alguém já não está traduzindo. Quando alguém pegar uma dessas sessao/topico
para traduzir, terá o nome atribuído a Issue.
Para facilitar o processo de revisão e diminuir as inconsistências entre traduções, quem contribuir deverá seguir algumas convenções:
- Não traduzir palavras reservadas.
- Na dúvida entre traduzir ou não determinado termo, deixar o termo em inglês.
- Criar Branches no padrão
sessao/topico
e traduzir por Sessão e Tópico (textos mais internos dentro da Sessão). - Pull Requests devem ser feitos para
master
, marcando a Issue que resolvem.
A tradução deverá ser feita através de Forks, com branches nomeadas por sessão e tópico, com letras minúsculas, seguindo o seguinte padrão:
nome-da-sessao/nome-do-topico
Exemplo:
a-swift-tour/control-flow
Caso não existam tópicos para determinada sessão, a branch deve ter somente o nome da sessão:
nome-da-sessao
Os Pull Requests devem ser feitos diretamente para a branch master
, e marcar a Issue que está resolvendo. A revisão será feita avaliando a tradução em si, a coerência do texto da tradução, e a coerência com as traduções anteriores.
O livro em inglês está lentamente sendo migrado para o formato de Markdown antes de ser traduzido. A seguintes Sessões já estão em formato Markdown e já podem ser traduzidas através de Pull Requests:
- About Swift
- Version Compatibility
- A Swift Tour
- Language Guide
- The Basics
- Intro
- Constants and Variables
- Comments
- Semicolons
- Integers
- Floating-Point Numbers
- Type Safety and Type Inference
- Numeric Literals
- Numeric Type Conversion
- Assertions and Preconditions
- Basic Operators
- Strings And Characters
- Intro
- String Literals
- Initializing an Empty String
- String Mutability
- String Mutability
- Strings Are Value Types
- Working with Characters
- Concatenating Strings and Characters
- String Interpolation
- Unicode
- Counting Characters
- Accessing and Modifying a String
- Substrings
- Unicode
- Comparing Strings
- Unicode Representations of Strings
- Collection Types
- Intro
- Mutability of Collections
- Arrays
- Sets
- Performing Set Operations
- Dictionaries
- Control Flow
- Intro
- For-In Loops
- While Loops
- Conditional Statements
- Control Transfer Statements
- Early Exit
- Checking API Availability
- Functions
- Intro
- Defining and Calling Functions
- Function Parameters and Return Values
- Function Argument Labels and Parameter Names
- Function Types
- Nested Functions
- Closures
- Intro
- Closure Expressions
- Trailing Closures
- Capturing Values
- Closures Are Reference Types
- Escaping Closures
- Autoclosures
- Enumerations
- Intro
- Enumeration Syntax
- Matching Enumeration Values with a Switch Statement
- Iterating over Enumeration Cases
- Associated Values
- Raw Values
- Recursive Enumerations
- Structures and Classes
- Intro
- Comparing Structures and Classes
- Structures and Enumerations Are Value Types
- Classes Are Reference Types
- Properties
- Intro
- Stored Properties
- Computed Properties
- Property Observers
- Property Wrappers
- Global and Local Variables
- Type Properties
- Methods
- Intro
- Instance Methods
- Type Methods
- Subscripts
- Intro
- Subscript Syntax
- Subscript Usage
- Subscript Options
- Type Subscripts
- Inheritance
- Intro
- Defining a Base Class
- Subclassing
- Overriding
- Preventing Overrides
- Initialization
- Intro
- Setting Initial Values for Stored Properties
- Customizing Initialization
- Default Initializers
- Initializer Delegation for Value Types
- Class Inheritance and Initialization
- Failable Initializers
- Required Initializers
- Setting a Default Property Value with a Closure or Function
- Deinitialization
- Intro
- How Deinitialization Works
- Deinitializers in Action
- Optional Chaining
- Intro
- Optional Chaining as an Alternative to Forced Unwrapping
- Defining Model Classes for Optional Chaining
- Accessing Properties Through Optional Chaining
- Calling Methods Through Optional Chaining
- Accessing Subscripts Through Optional Chaining
- Linking Multiple Levels of Chaining
- Chaining on Methods with Optional Return Values
- Error Handling
- Intro
- Representing and Throwing Errors
- Handling Errors
- Specifying Cleanup Actions
- Type Casting
- Intro
- Defining a Class Hierarchy for Type Casting
- Checking Type
- Downcasting
- Type Casting for Any and AnyObject
- Downcasting
- Nested Types
- Intro
- Nested Types in Action
- Referring to Nested Types
- Extensions
- Intro
- Extension Syntax
- Computed Properties
- Initializers
- Methods
- Subscripts
- Nested Types
- Protocols
- Intro
- Protocol Syntax
- Property Requirements
- Method Requirements
- Mutating Method Requirements
- Initializer Requirements
- Protocols as Types
- Delegation
- Adding Protocol Conformance with an Extension
- Adopting a Protocol Using a Synthesized Implementation
- Collections of Protocol Types
- Protocol Inheritance
- Class-Only Protocols
- Protocol Composition
- Checking for Protocol Conformance
- Optional Protocol Requirements
- Protocol Extensions
- Generics
- Intro
- The Problem That Generics Solve
- Generic Functions
- Type Parameters
- Naming Type Parameters
- Generic Types
- Extending a Generic Type
- Type Constraints
- Associated Types
- Generic Where Clauses
- Extensions with a Generic Where Clause
- Contextual Where Clauses
- Associated Types with a Generic Where Clause
- Generic Subscripts
- Opaque Types
- Intro
- The Problem That Opaque Types Solve
- Returning an Opaque Type
- Differences Between Opaque Types and Protocol Types
- Automatic Reference Counting
- Intro
- How ARC Works
- ARC in Action
- Strong Reference Cycles Between Class Instances
- Resolving Strong Reference Cycles Between Class Instances
- Strong Reference Cycles for Closures
- Resolving Strong Reference Cycles for Closures
- Memory Safety
- Intro
- Understanding Conflicting Access to Memory
- Conflicting Access to In-Out Parameters
- Conflicting Access to self in Methods
- Conflicting Access to Properties
- Access Control
- Intro
- Modules and Source Files
- Access Levels
- Access Control Syntax
- Custom Types
- Subclassing
- Constants, Variables, Properties, and Subscripts
- Initializers
- Protocols
- Extensions
- Generics
- Type Aliases
- Advanced Operators
- Intro
- Bitwise Operators
- Overflow Operators
- Precedence and Associativity
- Operator Methods
- Custom Operators
- The Basics
- Reference Manual
- About The Language Reference
- Lexical Structure
- Intro
- Whitespace and Comments
- Identifiers
- Keywords and Punctuation
- Literals
- Operators
- Types
- Intro
- Type Annotation
- Type Identifier
- Tuple Type
- Function Type
- Array Type
- Dictionary Type
- Optional Type
- Implicitly Unwrapped Optional Type
- Protocol Composition Type
- Opaque Type
- Metatype Type
- Self Type
- Type Inheritance Clause
- Type Inference
- Expressions
- Intro
- Prefix Expressions
- Binary Expressions
- Primary Expressions
- Postfix Expressions
- Statements
- Intro
- Loop Statements
- Branch Statements
- Labeled Statement
- Control Transfer Statements
- Defer Statement
- Do Statement
- Compiler Control Statements
- Availability Condition
- Declarations
- Intro
- Top-Level Code
- Code Blocks
- Import Declaration
- Constant Declaration
- Variable Declaration
- Type Alias Declaration
- Function Declaration
- Enumeration Declaration
- Structure Declaration
- Class Declaration
- Protocol Declaration
- Initializer Declaration
- Deinitializer Declaration
- Extension Declaration
- Subscript Declaration
- Operator Declaration
- Precedence Group Declaration
- Declaration Modifiers
- Attributes
- Intro
- Declaration Attributes
- Type Attributes
- Switch Case Attributes
- Patterns
- Intro
- Wildcard Pattern
- Identifier Pattern
- Value-Binding Pattern
- Tuple Pattern
- Enumeration Case Pattern
- Optional Pattern
- Type-Casting Patterns
- Expression Pattern
- Generic Parameters and Arguments
- Intro
- Generic Parameter Clause
- Generic Argument Clause
Existe pouco ou nenhum material gratuito em português de Swift / Desenvolvimento iOS básico. Contribuindo com a tradução desse livro, você pode estar ajudando alguém que não tem $$$ para comprar material a estudar. Além disso, você mesmo estará estudando, revisando, e aprendendo recursos da linguagem que você talvez não conheça.
Com esforço coletivo, conseguiremos finalizar a tradução e facilitar o aprendizado de desenvolvimento iOS para quem não sabe inglês.