Index

Symbols

@objc keyword, 112

? (question mark), 44

optional chaining, 58-61

postfixed question marks, 57

A

abort() function, 128

access control, 159

access-level modifiers, 185-186

adopting protocols, 104-112

algebraic data types, 157-158

aliases, type aliases, 78

alternatives to try? operator, 149-151

Apple Developer Forums, 9

Apple Swift blog, 9

applications, 4

terminating

abort() function, 128

assertions, 126-127

fatalError() function, 126

preconditions, 127-128

arguments. See also parameters

format specifiers, 19-20

positional arguments, 75-76

separator, 13

shorthand argument names, 74-76

tuple arguments, 74

arrays

comparing with tuples, 73

multi-index array subscripting, 84, 194-195

safe indexing, 193-194

slices, 195-196

typed arrays, 84

as operator, 47

ASCII WWDC, 9

Ash, Mike, 33, 128

assertions, 126-127

associated types, 118

collating, 119-120

autoclosures, 87-91

B

Ballard, Kevin, 197

basic enumerations, 159-160

beautification, 117

best practices

for protocols, 124

Swift error handling, 130-137

annotating with throws keyword, 134

avoid nil sentinels, 131-132

consuming errors, 135

error types with visible access, 133

throwing errors, 132-133

binding cascades, 48-49

blogs, Apple Swift blog, 9

bracket overload, 117

branching, 166-167

breaks, 167

building

convenience initializers, 181

convolution libraries, 92-93

custom mirrors, 31-34

enumerations, 175-176

errors, 137-139

functions, 65-72

parameters, 69

generic types, 113-114

header documentation, 35-36

option sets, 176

protocols, 109

with default implementations, 110-111

built-in Quick Look types, 27-28

C

callbacks, 94-95

capture lists, 85-86

capturing values

capture lists, 85-86

unowned references, 86-87

chat rooms, 9

classes, 177-184

initializers, 178-184

convenience initializers, 179

deinitializers, 183-184

designated initializers, 179

failable initializers, 181-183

optimization, 178

subclassing, 178

closures, 65

autoclosures, 87-91

capturing values

capture lists, 85-86

unowned references, 86-87

default values, adding, 90-91

inferred closure types, 76-77

initializers, rules, 179-181

no-escape closures, 88-90

passing as function parameters, 97-99

shorthand argument names, 74-76

trailing closures, 77

tuples

arguments, 74

return types, 82-83

types, 73-74

coalescing, 55

Cocoa coding guidelines, 68

collating associated types, 119-120

collections, protocol-based, 121

commenting

Quick Help, 35-40

adding images to header documentation, 40

building header documentation, 35-36

keywords, 37-39

markdown support, 36-37

method/function annotations, 40

Comparable protocol, 160

comparing

arrays and tuples, 73

nil and error handling, 43

compiling, conditional compilation, 20-21

complex cases, 169

conditional binding, 46

type casts, 46-48

unmanaged wrappers, 62-64

conditional compilation, 20-21

conformance requirements, 115

conforming to the protocol, 102

constraints

conformance requirements, 115

same-type requirements, 115-117

constructors, 67

referencing, 68

constructs, 158

consuming errors, 135

control flow, 189

statement labels, 189-190

controlling line feeds, 14-15

convenience initializers, 179

building, 181

converting

Swift code to modern syntax, 2-4

tuples to structs, 82

convolution libraries, building, 92-93

convolution operations, 91

copy-and-write-back, 156-157

cost of currying, 94

Curry, Haskell, 91

currying, 91-97

callbacks, 94-95

convolution libraries, building, 92-93

cost of, 94

partial application, 93

reasons for using, 92

custom destinations, printing to, 15-18

custom mirrors, building, 31-34

CustomDebugStringConvertible protocol, 22

CustomStringConvertible protocol, 22, 177

D

De Franceschi, Davide, 160

debugPrint() function, 21-23

fallback cascade, 22

declaring

operators, 191-192

protocols, 105-106

member declarations, 107-108

Self requirements, 122

default parameters, 70-71

default values, adding to closures, 90-91

defer statement, 151-153

deinitializers, 183-184

designated initializers, 179

dictionaries, ? (question mark), 44

didSet, 185

documentation, Quick Help, 35-40

adding images to header documentation, 40

building header documentation, 35-36

keywords, 37-39

markdown support, 36-37

method/function annotations, 40

DoubleInitializable protocol, 109

dump() function, 30

E

embedding values by type, 172-174

enumerations, 139, 159-166

associated values, 164-165

basic enumerations, 159-160

building, 175-176

indirect values, 165-166

raw value enumerations, 162-163

Equatable protocol, 101-102

error handling, 54, 125

adding context to errors, 141-142

building errors, 137-139

calling throwing functions, 145-149

error propagation, 147

try operator, 145-146

try! operator, 148

try? operator, 148-149

contextualizing strings, 142-143

contextualizing throwing types, 143-144

defer statement, 151-153

enumerations, 139

ErrorType protocol, 129-130

good errors, 138

guard statements, 151-153

naming errors, 138-139

versus nil, 43

versus optionals, 130

simplifying context, 144-145

string descriptions, adding, 139-141

extending strings, 140-141

reasons for errors, supplying, 139

simplifying output, 140

type-specific errors, 141

Swift rules, 130-137

annotating with throws keyword, 134

avoid nil sentinels, 131-132

consuming errors, 135

error types with visible access, 133

terminate threaded error chains, 135-137

throwing errors, 132-133

ErrorType protocol, 129-130

establishing

generic types, 114

protocols, 105

evaluating operator trade-offs, 192-193

explicit typing, 75

extending generic types, 120-121

extensions, 159, 186-187

F

failable initializers, 52-53, 163, 181-183

fallthroughs, 167-168

fatalError() function, 126

flatmap() function, 62

FloatLiteralConvertible protocol, 109

forced unwrapping, 45-46

format specifiers, 19

limitations, 19-20

Foundation interoperability with Swift, 203

frameworks, 5-6

functions

abort(), 128

annotations in Quick Help, 40

assert(), 126-127

building, 65-72

parameters, 69

currying, 91-97

callbacks, 94-95

convolution libraries, building, 92-93

cost of, 94

partial application, 93, 95-97

reasons for using, 92

debugPrint(), 21-23

fallback cascade, 22

dump(), 30

fatalError(), 126

flatmap(), 62

map(), 61-62

naming conventions, 68-69

nested functions, 79-80

parameters

default values, 70-71

labels, 66

let keyword, 71-72

modifying, 72

passing closures as, 97-99

type inference, 77-78

var keyword, 71-72

variadic parameters, 83-84

print, 11-15

controlling line feeds, 14-15

fallback cascade, 22

item separators, 13

parameters, 12-13

terminator parameter, 14

tuples

arguments, 74

return types, 82-83

types, 73-74

G

generics, 101-102. See also types

associated types, collating, 119-120

beautification, 117

building, 113-114

constraints

conformance requirements, 115

same-type requirements, 115-117

extending, 120-121

legal tokens, 117-118

parameters, 113-114

requirements, 114-120

getters, 185-186

good errors, 138

guard statements, 50, 151-153

failable initializers, 52-53

H-I

hash values, 160-162

Hashable protocol, 114

header documentation, building, 35-36

IEEE printf specification, 18

if statements, 14

images, adding to header documentation, 40

implicitly unwrapped optionals, 51-52

indices, wrapping, 195

inferred closure types, 76-77

inheritance, multiple inheritance, 103

initializers, 158, 178-184

convenience initializers, 179

building, 181

deinitializers, 183-184

designated initializers, 179

failable initializers, 181-183

rules, 179-181

initializing, strings, 19

inout parameters, 16

interpolation, 13-14

IRC (Internet Relay Chat), 9

item separators, 13

J-K

joinWithSeparator function, 203

kernels, 91

Keychain Services, 62

keywords

@objc keyword, 112

inout, 72

let, 71-72, 169-170

override, 186-187

protocol, 106

Quick Help, 37-39

label terms, 39

static, 107

throws, 134

var, 71-72, 169-170

L

label terms (Quick Help), 39

labels, 66

conventions, 66-68

statement labels, 189-190

for tuples, 80-81

Lattner, Chris, 1

lazy evaluation

lazy properties, 188

lazy sequences, 187-188

learning Swift, 8-9

let keyword, 71-72, 169-170

libraries, 5-6

convolution libraries, building, 92-93

visualization libraries, 29

limitations, of format specifiers, 19-20

line feeds, controlling, 14-15

logging, mirroring, 30

building custom mirrors, 31-34

protocol extensions, 34

recursive reflection, 32-33

M

Mandelbrot sets, 7

map() function, 61-62

markdown support, Quick Help, 36-37

member declarations, 107-108

raw value members, 163-164

members, 158

Memory Management Programming Guide for Core Foundation, 64

methods

annotations in Quick Help, 40

naming conventions, 68-69

tuple return types, 82-83

migrating code, 2-4

mirroring, 30

building custom mirrors, 31-34

protocol extensions, 34

recursive reflection, 32-33

modifying parameters, 72

multi-index array subscripting, 84, 194-195

multiple inheritance, 103

mutating requirements, 108

N

naming

functions, 68-69

methods, 68-69

nested functions, 79-80

nil, 43-45

coalescing, 55

versus error handling, 43

no-escape closures, 88-90

NS_OPTIONS, 174-175

NSLog, 18

O

Objective-C

NS_OPTIONS, 174-175

optional protocol requirements, 111-112

objects, protocol objects, 123

observers, 184-186

operators, 190-193

as, 47

conforming with, 192

declaring, 191-192

evaluating trade-offs, 192-193

postfix printing operators, 23

try, 145-146

try!, 148

try?, 149-151

type casting, 46-48

option sets, 174-177

building, 176

building enumerations, 175-176

viewing options, 176-177

optional chaining, 58-61

selector testing, 59-60

subscripts, 60-61

optional mapping, 61-62

optional patterns, 56-58

optional protocol requirements

Objective-C, 111-112

Swift, 112

optionals, 43-45

? (question mark), 44

versus error handling, 130

sentinel values, 53-55

unwrapping, 45-58, 171-172

conditional binding, 46

failable initializers, 52-53

forced unwrapping, 45-46

guard statements, 50

implicitly unwrapped optionals, 51-52

out of date code, upgrading, 4

OutputStreamType protocol, 15

printing to strings, 16-17

over-chaining, 58

override keyword, 186-187

P

parameter keyword, 37

parameter-less subscripting, 197-198

parameters

default values, 70-71

labels, 66

conventions, 66-68

let keyword, 71-72

modifying, 72

NSLog, 19

passing closures as, 97-99

print function, 12-13

terminator parameter, 14

Swift conventions, 69

type inference, 77-78

type parameters, 113-114, 118

var keyword, 71-72

variadic parameters, 83-84

partial application, 93, 95-97

passing closures as function parameters, 97-99

pattern matching, optional patterns, 56-58

Permutation Generator, 203-205

playgrounds, 7

Quick Looks, 26-27

Point struct, 22

positional arguments, 75-76

postfix printing, 23

postfixed question marks, 57

preconditions, 127-128

print function, 11-15

controlling line feeds, 14-15

fallback cascade, 22-21

item separators, 13

parameters, 12-13

terminator parameter, 14

printing, 11-15

to custom destinations, 15-18

to custom output streams, 17-18

debugPrint() function, 21-23

dump() function, 30

option sets, 177

postfix printing, 23

string interpolation, 13-14

to strings, 16-17

product types, 158

property observers, 184-186

getters/setters, 179-181

protocol extensions, 34

protocol-based collections, 121

protocols, 101-103, 118. See also types

adopting, 104-112

alias defaults, 119

best practices, 124

building, 109

with default implementations, 110-111

Comparable, 160

CustomDebugStringConvertible, 22

CustomStringConvertible, 22, 177

declaring, 105-106

Self requirements, 122

DoubleInitializable, 109

Equatable, 101-102

ErrorType, 129-130

FloatLiteralConvertible, 109

Hashable, 114

implementation, 103

member declarations, 107-108

multiple inheritance, 103

mutating requirements, 108

objects, 123

optional requirements

Objective-C, 111-112

Swift, 112

Self requirements, 108

static keyword, 107

as types, 121-123

pyramids of doom, 48

Q

Quick Help, 35-40

adding images to header documentation, 40

building header documentation, 35-36

keywords, 37-39

label terms, 39

markdown support, 36-37

method/function annotations, 40

Quick Looks, 24-29

built-in Quick Look types, 27-28

Custom Types, 24-25

playground Quick Looks, 26-27

third-party rendering, 28-29

R

radix initializer, 198-199

ranges, 199-201

raw value enumerations, 162-163

raw value members, 163-164

recipes

adding context to errors, 141-142

adding index safety to arrays, 193-194

conditional binding from unmanaged wrappers, 63

currying and partial application, 95

establishing generic types, 114

mimicking try? with printing, 151

multi-index array subscripting, 84

multiple-array subscripting, 194-195

multiple-instance collection, 205

nested functions, 79-80

optional chaining, 59

postfix printing, 23

printable option sets, 177

printing and string formats, 18-21

conditional compilation, 20-21

format specifiers, 19

printing to custom destinations, 15-18

custom output streams, 17-18

strings, 16-17

same-type requirements, 115-117

scrambled collections, 204

striding indices with a Permutation Generator, 204-205

recognizers, 185

recursive reflection, 32-33

redirecting print output, 15-18

reference semantics, 178

reference types, 155-156

referencing constructs, 68

repeat initializers, 198

REPL (read eval print loop), 6-7

playgrounds, 7

returns keyword, 37

S

safe indexing, 193-194

same-type requirements, 115-117

Schönfinkel, Moses, 91

scripting, 6

selector testing, 59-60

Self requirements, 108, 122

sentinel values, 53-55

separator argument, 13

setters, 185-186

shebangs, 6

shorthand argument names, 74-76

Sinclair, Jared, 186

slices, 195-196

splitting strings, 201

statement labels, 189-190

static keyword, 107

strings

initializing, 19

interpolation, 13-14

printing to, 16-17

radix initializer, 198-199

ranges, 199-201

repeat initializers, 198

splitting, 201

subscripts, 201-202

structs, 82

Point, 22

subscripts, 60-61, 196-198

multi-index array subscripting, 84, 194-195

parameter-less, 197-198

wrapping, 195

sum types, 158

The Swift Programming Language, 8

Swift Standard Library Reference, 9

Swift version 2, 1-2

Swiftsub, 8

switches, 166-172

branching, 166-167

breaks, 167

complex cases, 169

fallthroughs, 167-168

pattern matching, 169-170

tuples, 169

unwrapping optional enumerations, 171-172

where clauses, 170-171

T

terminating applications

abort() function, 128

assertions, 126-127

fatalError() function, 126

preconditions, 127-128

third-party libraries, 28-29

throwing errors, 132-133

throwing functions

error propagation, 147

try operator, 145-146

try! operator, 148

try? operator, 148-149

throws keyword, 37, 134

tokens, 103-104, 117-118

trailing closures, 77

try operator, 145-146

try! operator, 148

try? operator, 148-149

alternatives to, 149-151

tuples, 80-83, 169

comparing with arrays, 73

converting to structs, 82

currying, 91-97

callbacks, 94-95

convolution libraries, building, 92-93

cost of, 94

partial application, 93, 95-97

reasons for using, 92

labels, 80-81

reflection, 81

return types, 82-83

type aliases, 78

type casts, 46-48

type constraints, 104

typed arrays, 84

types, 155

algebraic data types, 157-158

associated types, 118

collating, 119-120

classes, 177-184

initializers, 178-184

optimization, 178

subclassing, 178

copy-and-write-back, 156-157

enumerations

associated types, 164-165

basic enumerations, 159-160

indirect values, 165-166

raw value enumerations, 162-163

extending, 186-187

generic types

building, 113-114

extending, 120-121

overrides, 186-187

parameters, 113-114, 118

reference types, 155-156

strings

radix initializer, 198-199

ranges, 199-201

repeat initializers, 198

splitting, 201

subscripts, 201-202

value types, 155-156

U

uniq function, 117

unmanaged wrappers, 62-64

unowned references, 86-87

untyped closure assignment, 76-77

unwrapping optionals, 45-58, 171-172

conditional binding, 46

type casts, 46-48

failable initializers, 52-53

forced unwrapping, 45-46

guard statements, 50

implicitly unwrapped optionals, 51-52

updating Swift code to modern syntax, 2-4

upgrading out-of-date code, 4

Using Swift with Cocoa and Objective-C, 8

V

value types, 155-156

values

capturing

capture lists, 85-86

unowned references, 86-87

embedding by type, 172-174

var keyword, 71-72, 169-170

variadic parameters, 83-84

visualization libraries, 29

W

websites, Apple Developer Forums, 9

where clauses, 170-171

willSet, 184-185

wrapping indices, 195

X-Y-Z

Xcode

migrating code, 2-4

Quick Look for Custom Types, 24-25

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
13.59.180.145