Recipe: Printing to Custom Destinations
Printing to Custom Output Streams
Recipe: Printing and String Formats
Quick Looks for Custom Types in Playgrounds
Creating Custom Quick Looks for Playgrounds
Building Basic Mirror Descriptions Using Protocol Conformance
Conditional Binding and Type Casts
Implicitly Unwrapped Optionals
Guarding Failable Initializers
Selector Testing and Optional Chaining
Filtering nil
Values with flatMap
Constant and Variable Parameters
Using Shorthand Argument Names
Passing Closures as Function Parameters
Adding Protocol Default Implementations
Optional Protocol Requirements
Swift-Native Optional Protocol Requirements
Recipe: Same-Type Requirements
Protocol Objects and Self
Requirements
Choosing Between Optionals and Error Handling
Rule 1: Move Away from nil
Sentinels
Rule 2: Use throw
to Raise Errors
Rule 3: Use Error Types with Visible Access
Rule 4: Mark All Error-Participating Methods with throws
Rule 5: Use rethrows
Consistently
Rule 6: Consume Errors Where They Matter
Rule 7: Terminate Threaded Error Chains
Contextualizing Throwing Types
Implementing Alternatives to try?
Building a Printing Version of try?
Using Hash Values to Support Ranges
Raw Value Members and Sequences
Pattern Matching with Value Bindings
Unwrapping Optional Enumerations
Designated and Convenience Initializers
Building Convenience Initializers
Failable and Throwing Initializers
Getters/Setters and Access-Level Modifiers
3.142.123.87