文法のまとめ


語彙の構造


空白の文法

whitespacewhitespace-item ­whitespace opt
­ whitespace-itemline-break
­ whitespace-itemcomment­
whitespace-itemmultiline-comment
whitespace-item → U+0000, U+0009, U+000B, U+000C, or U+0020

line-break → U+000A
line-break → U+000D
line-break → U+000D followed by U+000A

comment → // ­comment-text ­line-break
­ multiline-comment → /* multiline-comment-text */

­ comment-textcomment-text-item comment-text­ opt­
comment-text-item → Any Unicode scalar value except U+000A or U+000D

multiline-comment-textmultiline-comment-text-item­ multiline-comment-text opt
­ multiline-comment-text-itemmultiline-comment
­ multiline-comment-text-itemcomment-text-item
multiline-comment-text-item → Any Unicode scalar value except /*­ or */



識別子の文法

identifieridentifier-head­ identifier-characters­ ­opt­
identifier → ` identifier-head­ identifier-characters ­opt `
identifierimplicit-parameter-name­
identifier-listidentifieridentifier­ , ­identifier-list

identifier-headUpper- or lowercase letter A through Z
identifier-head → _
­ identifier-head → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA
identifier-head → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF
identifier-head → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF
identifier-head → U+1E00–U+1FFF
identifier-head → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F
identifier-head → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793
identifier-head → U+2C00–U+2DFF or U+2E80–U+2FFF
identifier-head → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF
identifier-head → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44
identifier-head → U+FE47–U+FFFD
identifier-head → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD
identifier-head → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD
identifier-head → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD
identifier-head → U+D0000–U+DFFFD or U+E0000–U+EFFFD

identifier-character → Digit 0 through 9
identifier-character → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F
identifier-characteridentifier-head
­ identifier-charactersidentifier-character ­identifier-characters ­opt
­
implicit-parameter-name$ ­decimal-digits­



リテラルの文法

literal numeric-literal | string-literal | boolean-literal | nil-literal
numeric-literal → - opt integer-literal- opt floating-point-literal
boolean-literal true­ | false­
nil-literal nil



­
整数リテラルの文法

integer-literalbinary-literal
integer-literaloctal-literal
­ integer-literaldecimal-literal
­ integer-literalhexadecimal-literal
­
binary-literal0b ­binary-digit ­binary-literal-characters ­opt
binary-digit → Digit 0 or 1
binary-literal-characterbinary-digit |­ _
­ binary-literal-charactersbinary-literal-character­ binary-literal-characters ­opt

octal-literal0o ­octal-digit ­octal-literal-characters ­opt
octal-digit → Digit 0 through 7
octal-literal-characteroctal-digit­ | _
­ octal-literal-charactersoctal-literal-character ­octal-literal-characters ­opt

decimal-literaldecimal-digit­ decimal-literal-characters ­opt
decimal-digit → Digit 0 through 9
decimal-digitsdecimal-digit ­decimal-digits ­opt
­ decimal-literal-characterdecimal-digit |­ _
­ decimal-literal-charactersdecimal-literal-character­ decimal-literal-characters ­opt

hexadecimal-literal0x ­hexadecimal-digit ­hexadecimal-literal-characters ­opt
­ hexadecimal-digit → Digit 0 through 9, a through f, or A through F
hexadecimal-literal-characterhexadecimal-digit |­ _
hexadecimal-literal-charactershexadecimal-literal-character ­hexadecimal-literal-characters ­opt



浮動小数点リテラルの文法

floating-point-literaldecimal-literal­ decimal-fraction ­opt ­decimal-exponent ­opt
floating-point-literalhexadecimal-literal ­hexadecimal-fraction ­opt ­hexadecimal-exponent

decimal-fraction. ­decimal-literal
decimal-exponentfloating-point-e ­sign­ ­opt ­decimal-literal

hexadecimal-fraction. ­hexadecimal-digit ­hexadecimal-literal-characters ­opt
hexadecimal-exponentfloating-point-p ­sign ­opt ­decimal-literal

floating-point-ee­ | E
­ floating-point-ppP
sign+-­



文字列リテラルの文法

string-literalstatic-string-literal | interpolated-string-literal

static-string-literal → " ­quoted-text­ opt ­"
static-string-literal → """­multiline-quoted-text ­opt"""­

quoted-textquoted-text-item ­quoted-text opt
quoted-text-itemescaped-character
­ quoted-text-item → Any Unicode scalar value except ", \­, U+000A, or U+000D

multiline-quoted-textmultiline-quoted-text-item ­multiline-quoted-text ­opt
multiline-quoted-text-itemescaped-character­
multiline-quoted-text-item → Any Unicode scalar value except \
multiline-quoted-text-itemescaped-newline

interpolated-string-literal → " ­interpolated-text­ opt "
interpolated-string-literal → """­ multiline-interpolated-text ­opt­"""

­ interpolated-textinterpolated-text-item ­interpolated-text ­opt
interpolated-text-item\(expression) | quoted-text-item

multiline-interpolated-textmultiline-interpolated-text-item ­multiline-interpolated-text ­opt­
multiline-interpolated-text-item\expression­)­ | multiline-quoted-text-item

escaped-character\0\\­ | \t ­| \n | \r | \"\'
­ escaped-character\u ­{ ­unicode-scalar-digits­}
unicode-scalar-digits → Between one and eight hexadecimal digits

escaped-newline\ ­whitespace ­opt ­line-break



演算子の文法

operatoroperator-head ­operator-characters ­opt
operatordot-operator-head ­dot-operator-characters ­opt

operator-head/=-+!* ­| % | >&|^~ | ­?
­ operator-head → U+00A1–U+00A7
operator-head → U+00A9 or U+00AB
operator-head → U+00AC or U+00AE
operator-head → U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7
operator-head → U+2016–U+2017 or U+2020–U+2027
operator-head → U+2030–U+203E
operator-head → U+2041–U+2053
operator-head → U+2055–U+205E
operator-head → U+2190–U+23FF
operator-head → U+2500–U+2775
operator-head → U+2794–U+2BFF
operator-head → U+2E00–U+2E7F
operator-head → U+3001–U+3003
operator-head → U+3008–U+3030

operator-characteroperator-head
operator-character → U+0300–U+036F
operator-character → U+1DC0–U+1DFF
operator-character → U+20D0–U+20FF
operator-character → U+FE00–U+FE0F
operator-character → U+FE20–U+FE2F
operator-character → U+E0100–U+E01EF
operator-charactersoperator-character ­operator-characters ­opt

dot-operator-head → .
­ dot-operator-character → .­ | operator-character
dot-operator-charactersdot-operator-character ­dot-operator-characters ­opt

binary-operatoroperator
prefix-operatoroperator
postfix-operatoroperator




型の文法

typearray-type
typedictionary-type
typefunction-type
typetype-identifier
type →­ tuple-type
typeoptional-type
typeimplicitly-unwrapped-optional-type
typeprotocol-composition-type
typemetatype-type­
typeAny
typeSelf
type → ( type )



型の注釈の文法

type-annotation: attributes ­opt inout ­opt ­type



型識別子の文法

type-identifiertype-name generic-argument-clause ­opt | type-name generic-argument-clause ­opt ­. ­type-identifier
type-nameidentifier



タプル型の文法

tuple-type → ( ) | ( tuple-type-element , ­tuple-type-element-list­ )
tuple-type-element-listtuple-type-element | tuple-type-element ­, ­tuple-type-element-list
tuple-type-elementelement-name ­type-annotation | type
element-nameidentifier




関数型の文法

function-typeattributes ­opt ­function-type-argument-clause ­throws ­opt ­-> ­type
function-typeattributes ­opt ­­function-type-argument-clause ­rethrows ­-> ­type

function-type-argument-clause → (­ )­
function-type-argument-clause → ( function-type-argument-list ­... ­opt )
­
function-type-argument-listfunction-type-argument | function-type-argument ­, function-type-argument-list
­ function-type-argumentattributes ­opt ­inout ­opt ­type | argument-label ­type-annotation­
argument-labelidentifier



配列型の文法

array-type → [ ­type ­]



辞書型の文法

dictionary-type → [ ­type­ : type ­]­



Optional の型の文法

optional-typetype ­?



暗黙に開封された optional の型の文法

implicitly-unwrapped-optional-typetype ­!

­

Protocol を構成する型の文法

protocol-composition-typetype-identifier & ­protocol-composition-continuation
protocol-composition-continuationtype-identifier ­| protocol-composition-type



メタタイプ型の文法

metatype-typetype ­. ­Typetype ­. ­Protocol



型の継承句の文法

type-inheritance-clause: ­type-inheritance-list
type-inheritance-listtype-identifiertype-identifier ­, ­type-inheritance-list
­



式の文法

expressiontry-operator opt ­prefix-expression ­binary-expressions ­opt
expression-listexpressionexpression ­, ­expression-list



接頭辞の式の文法

prefix-expressionprefix-operator ­opt ­postfix-expression
prefix-expressionin-out-expression
in-out-expression identifier



try 式の文法

try-operatortry | try ­? | try ­!



二項式の文法

binary-expressionbinary-operator prefix-expression
­ binary-expressionassignment-operator ­try-operator opt prefix-expression
­ binary-expressionconditional-operator ­try-operator opt ­ prefix-expression
­ binary-expressiontype-casting-operator
­ binary-expressionsbinary-expression ­binary-expressions opt



代入演算子の文法

assignment-operator=



条件演算子の文法

conditional-operator? try-operator ­opt ­expression ­:



型キャスト演算子の文法

type-casting-operatoris type
type-casting-operatoras type
type-casting-operatoras ­? type
type-casting-operatoras ­! type



一次式の文法

primary-expressionidentifier generic-argument-clause opt
primary-expressionliteral-expression
­ primary-expressionself-expression
primary-expressionsuperclass-expression
primary-expressionclosure-expression
primary-expressionparenthesized-expression
primary-expressiontuple-expression
primary-expressionimplicit-member-expression
primary-expressionwildcard-expression
primary-expressionkey-path-expression­
primary-expressionselector-expression­
primary-expressionkey-path-string-expression­



リテラル式の文法

literal-expressionliteral
literal-expressionarray-literaldictionary-literal­ | playground-literal
literal-expression#file­ | #line­ | #column | #function

array-literal[ ­array-literal-items opt ­]
array-literal-itemsarray-literal-item ­, opt­ | array-literal-item ­, ­array-literal-items
array-literal-itemexpression­

dictionary-literal[ ­dictionary-literal-items ­] | [­:­]
­ dictionary-literal-itemsdictionary-literal-item­ , optdictionary-literal-item ­, dictionary-literal-items
­ dictionary-literal-itemexpression­ ­: expression­

playground-literal#colorLiteral ( ­red ­: expression­ , ­green­ : ­expression­ ­, ­blue : expression­ ­,­ alpha ­:­ expression­­ )
playground-literal#fileLiteral ­( ­resourceName­ : ­expression­­­ )
playground-literal#imageLiteral ­( ­resourceName­ : ­expression­ )



Self 式の文法

self-expressionself | self-method-expression | self-subscript-expression | self-initializer-expression­
self-method-expressionself ­. identifier
self-subscript-expressionself ­[ function-call-argument-list ­]
­ self-initializer-expressionself ­. ­init



スーパークラス式の文法

superclass-expressionsuperclass-method-expressionsuperclass-subscript-expression­ | superclass-initializer-expression­

superclass-method-expressionsuper ­. ­identifier
­ superclass-subscript-expressionsuper ­[ function-call-argument-list ­]
­ superclass-initializer-expressionsuper ­. ­init



クロージャ式の文法

closure-expression{ ­closure-signature ­opt statements opt ­}

closure-signaturecapture-list opt closure-parameter-clause throws opt function-result ­opt ­in
closure-signaturecapture-list ­in

closure-parameter-clause(­) | (­closure-parameter-list­ | identifier-list
closure-parameter-listclosure-parameter | closure-parameter ­, closure-parameter-list
closure-parameterclosure-parameter-name­ type-annotation opt
closure-parameterclosure-parameter-name­ type-annotation ...­
closure-parameter-nameidentifier­

capture-list capture-list-items ­]
capture-list-itemscapture-list-item | capture-list-item ­, capture-list-items
­ capture-list-itemcapture-specifier ­opt ­ expression
capture-specifierweak­ | unowned | unowned(safe) | unowned(unsafe)



暗黙のメンバ式の文法

implicit-member-expression → . ­identifier



括弧で囲まれた式の文法

parenthesized-expression( ­expression ­)



タプル式の文法


tuple-expression( ) | ( ­tuple-element , ­tuple-element-list ­)
tuple-element-listtuple-element | tuple-element , ­tuple-element-list
tuple-elementexpression­ | identifier­ : expression­



ワイルドカードの文法

wildcard-expression → _



キーパス式の文法

key-path-expression\­ type opt ­. ­key-path-components
key-path-componentskey-path-component­ | key-path-component­ . key-path-components
­ key-path-componentidentifier key-path-postfixes ­opt­ | key-path-postfixes

key-path-postfixeskey-path-postfix ­key-path-postfixes ­opt
­ key-path-postfix?! ­| [ ­ function-call-argument-list­ ]



セレクタ式の文法

selector-expression#selector ­( expression ­)
selector-expression#selector ­( ­getter : expression ­)
selector-expression#selector ­( ­setter : expression )



キーパス文字列式の文法

key-path-string-expression#keyPath ( expression ­)



­
接尾辞の式の文法

postfix-expressionprimary-expression
postfix-expressionpostfix-expression ­postfix-operator
postfix-expressionfunction-call-expression
postfix-expressioninitializer-expression
postfix-expressionexplicit-member-expression
postfix-expressionpostfix-self-expression
postfix-expressionsubscript-expression
postfix-expressionforced-value-expression
postfix-expressionoptional-chaining-expression­



関数呼び出し式の文法

function-call-expressionpostfix-expression ­function-call-argument-clause
­ function-call-expressionpostfix-expression ­function-call-argument-clause opt trailing-closure

function-call-argument-clause( ­) | ( ­function-call-argument-list ­)
function-call-argument-listfunction-call-argument | function-call-argument , function-call-argument-list
function-call-argumentexpression | identifier­ :­ expression
function-call-argumentoperator | identifier­ : operator

trailing-closureclosure-expression



イニシャライザ式の文法

initializer-expressionpostfix-expression­. ­init
initializer-expressionpostfix-expression­. ­init ( argument-names )



明示的なメンバ式の文法

explicit-member-expressionpostfix-expression ­. ­decimal-digits
explicit-member-expressionpostfix-expression ­. identifier generic-argument-clause ­opt
explicit-member-expressionpostfix-expression . identifier­ ­( ­argument-names ­)

argument-namesargument-name ­argument-names ­opt
argument-nameidentifier­ :



self 式の文法

postfix-self-expressionpostfix-expression ­­. self



サブスクリプト式の文法

subscript-expressionpostfix-expression ­[ ­expression-list ­]



強制値の式の文法

forced-value-expressionpostfix-expression­ !



optional の連鎖式

optional-chaining-expressionpostfix-expression ­?




文の文法

statementexpression ­; ­opt
statementdeclaration ­; ­opt
statementloop-statement ­; ­opt
­ statementbranch-statement ­; ­opt
statementlabeled-statement ­; ­opt
statementcontrol-transfer-statement ­; ­opt
statementdefer-statement ­; ­opt
statementdo-statement­ ­: ­opt
statementcompiler-control-statement
­ statementsstatement ­statements opt



ループ文の文法

loop-statementfor-in-statement
loop-statementwhile-statement
loop-statementrepeat-while-statement



for-in 文の文法

for-in-statementfor case ­opt pattern ­in ­expression where-clause ­opt code-block



while 文の文法

while-statementwhile condition-list code-block

condition-listcondition | condition ­, ­condition-list
conditionexpression­ | availability-condition ­| case-condition | optional-binding-condition­

case-conditioncase pattern ­initializer­
optional-binding-conditionlet ­pattern­ initializer | var pattern initializer­



repeat-while 文の文法

repeat-while-statementrepeat code-block ­while expression­



分岐文の文法

branch-statementif-statement
branch-statementguard-statement
­ branch-statementswitch-statement



­
if 文の文法

if-statementif condition-list ­code-block else-clause opt
else-clauseelse­ code-blockelse ­if-statement



guard 文の文法

guard-statementguard ­condition-list else ­code-block

­


switch 文の文法

switch-statementswitch ­expression ­{­switch-cases ­opt ­}
­ switch-casesswitch-case switch-cases ­opt
switch-casecase-label ­statementsdefault-label statements

case-labelcase ­case-item-list ­:
case-item-listpattern ­where-clause ­optpattern ­where-clause ­opt ­, case-item-list
­ default-labeldefault ­:

where-clausewhere ­where-expression
where-expressionexpression



ラベル付き文の文法

labeled-statementstatement-label ­loop-statement
labeled-statementstatement-label ­if-statement
labeled-statementstatement-label ­switch-statement
labeled-statementstatement-label ­do-statement­

statement-labellabel-name ­:
label-nameidentifier­



制御転送文の文法

control-transfer-statementbreak-statement
control-transfer-statementcontinue-statement
control-transfer-statementfallthrough-statement
control-transfer-statementreturn-statement
control-transfer-statementthrow-statement



break 文の文法

break-statementbreak ­label-name ­opt



continue 文の文法

continue-statementcontinue ­label-name ­opt



fallthrough 文の文法

fallthrough-statementfallthrough



return 文の文法

return-statementreturn ­expression ­opt



throw 文の文法

throw-statementthrow­ expression



defer 文の文法

defer-statementdefer ­­code-block



do 文の文法

do-statementdo ­code-block ­catch-clauses ­opt
catch-clausescatch-clause ­catch-clauses ­opt
catch-clausecatch pattern ­opt where-clause­ opt­ code-block



コンパイラ制御文の文法

compiler-control-statementconditional-compilation-block
compiler-control-statementline-control-statement



条件コンパイルブロックの文法

conditional-compilation-blockif-directive-clause ­elseif-directive-clauses ­opt else-directive-clause opt ­endif-directive

if-directive-clauseif-directive ­compilation-condition statements ­ opt
elseif-directive-clauseselseif-directive-clause ­elseif-directive-clauses opt­
elseif-directive-clauseelseif-directive­ ­compilation-condition­ statements ­opt­
else-directive-clauseelse-directive statements ­opt
if-directive#if
elseif-directive#elseif
else-directive#else
endif-directive#endif

compilation-conditionplatform-condition
compilation-conditionidentifier
compilation-conditionboolean-literal
compilation-condition( ­compilation-condition )
compilation-condition! ­­compilation-condition
compilation-condition­compilation-condition ­&& ­­compilation-condition
compilation-condition­compilation-condition ­|| ­compilation-condition

platform-conditionos ­( ­operating-system ­)
platform-conditionarch ­( ­architecture ­)
platform-conditionswift ­( ­>= ­swift-version )
operating-systemmacOS | iOS | watchOS | tvOS
architecturei386 | x86_64 | arm | arm64
swift-versiondecimal-digits swift-version-continuation ­opt
swift-version-continuation → . ­decimal-digits­ swift-version-continuation ­opt



行制御文の文法

line-control-statement#sourceLocation ­( ­file: ­file-name ­, ­line: ­line-number ­)
line-control-statement#sourceLocation ­( ­)
line-numberA decimal integer greater than zero
file-namestatic-string-literal­



利用可能条件の文法

availability-condition#available ­( ­availability-arguments )
availability-argumentsavailability-argument | availability-argument , ­­availability-arguments
availability-argumentplatform-name platform-version­
availability-argument*
­ platform-nameiOS | iOSApplicationExtension
platform-namemacOS | macOSApplicationExtension
platform-namewatchOS
platform-nametvOS
platform-versiondecimal-digits
platform-versiondecimal-digits ­. ­decimal-digits
platform-versiondecimal-digits ­. decimal-digits ­. decimal-digits



宣言


宣言の文法

declarationimport-declaration
declarationconstant-declaration
declarationvariable-declaration
declarationtypealias-declaration
declarationfunction-declaration
declarationenum-declaration
declarationstruct-declaration
declarationclass-declaration
declarationprotocol-declaration
declarationinitializer-declaration
declarationdeinitializer-declaration
declarationextension-declaration
declarationsubscript-declaration
declarationoperator-declaration
declarationprecedence-group-declaration­
declarationsdeclaration­ declarations ­opt



トップレベルの宣言の文法

top-level-declarationstatements ­opt



コードブロックの文法

code-block{ statements ­opt ­}



import 宣言の文法

import-declarationattributes ­opt ­import ­import-kind ­opt ­import-path

­ import-kindtypealiasstructclass | enumprotocollet | varfunc
import-pathimport-path-identifierimport-path-identifier ­. import-path
import-path-identifieridentifieroperator



定数の宣言の文法

constant-declarationattributes ­opt declaration-modifiers ­opt ­let ­pattern-initializer-list

pattern-initializer-listpattern-initializer | pattern-initializer ­, ­pattern-initializer-list
pattern-initializerpattern initializer ­opt
­ initializer= ­expression



­
変数宣言の文法

variable-declarationvariable-declaration-head ­pattern-initializer-list
variable-declarationvariable-declaration-head ­variable-name ­type-annotation ­code-block
variable-declarationvariable-declaration-head ­­variable-name ­type-annotation getter-setter-block
variable-declarationvariable-declaration-head ­­variable-name ­type-annotation ­getter-setter-keyword-block
variable-declarationvariable-declaration-head ­variable-name ­initializer ­­willSet-didSet-block
variable-declarationvariable-declaration-head ­variable-name ­type-annotation initializer ­opt ­willSet-didSet-block

variable-declaration-headattributes ­opt declaration-modifiers ­opt ­var
variable-nameidentifier

getter-setter-block­code-block
getter-setter-block{ ­getter-clause ­setter-clause ­opt ­}
getter-setter-block{ ­setter-clause ­getter-clause ­}
­ getter-clauseattributes ­opt mutation-modifier ­opt ­get code-block
setter-clauseattributes ­opt mutation-modifier ­­­opt ­set ­setter-name opt ­code-block­
setter-name → ( ­identifier ­)

getter-setter-keyword-block{ ­getter-keyword-clause­ setter-keyword-clause­ ­opt ­}
getter-setter-keyword-block{ ­setter-keyword-clause ­getter-keyword-clause ­}
getter-keyword-clauseattributes opt mutation-modifier ­­­opt ­get
setter-keyword-clauseattributes ­opt mutation-modifier ­­­opt ­set

willSet-didSet-block{ ­willSet-clause ­didSet-clause ­opt ­}
willSet-didSet-block{ ­didSet-clause ­willSet-clause ­opt ­}
willSet-clauseattributes ­opt willSet setter-name ­opt ­code-block­
didSet-clauseattributes ­opt ­didSet ­setter-name ­opt ­code-block



型エイリアス宣言の文法

typealias-declarationattributes opt access-level-modifier opt ­typealias­ typealias-name ­generic-parameter-clause ­opt typealias-assignment
­ typealias-nameidentifier
typealias-assignment= ­type­



関数の宣言の文法

function-declarationfunction-head ­function-name generic-parameter-clause ­opt function-signature generic-where-clause ­opt function-body

function-headattributes ­opt declaration-modifiers ­opt ­func
function-nameidentifieroperator
­
function-signatureparameter-clause throws ­opt ­function-result ­opt
function-signatureparameter-clause rethrows ­function-result ­opt
function-result-> attributes ­opt ­type­
function-bodycode-block­

parameter-clause(­ ) parameter-list ­
parameter-listparameterparameter ­, ­parameter-list
parameter­external-parameter-name ­opt ­local-parameter-name ­type-annotation­ default-argument-clause ­opt
parameter­external-parameter-name ­opt ­local-parameter-name type-annotation­
parameter­external-parameter-name ­opt ­local-parameter-name type-annotation­ . . .
external-parameter-nameidentifier
local-parameter-nameidentifier
­ default-argument-clause → =­ expression­



列挙型の宣言の文法

enum-declarationattributes ­opt access-level-modifier ­opt ­union-style-enum­
enum-declarationattributes opt­ access-level-modifier ­opt ­raw-value-style-enum

union-style-enumindirect opt enum ­enum-name generic-parameter-clause opt type-inheritance-clause opt generic-where-clause ­opt { ­union-style-enum-members­ opt ­}
union-style-enum-membersunion-style-enum-member union-style-enum-members ­opt
union-style-enum-memberdeclarationunion-style-enum-case-clause | compiler-control-statement
union-style-enum-case-clauseattributes ­opt indirect opt ­case ­union-style-enum-case-list
union-style-enum-case-listunion-style-enum-caseunion-style-enum-case ­, ­union-style-enum-case-list
union-style-enum-caseenum-case-name­ tuple-type opt
enum-nameidentifier
enum-case-nameidentifier

raw-value-style-enumenum ­enum-name generic-parameter-clause ­opt type-inheritance-clause ­generic-where-clause opt {­ raw-value-style-enum-members ­}
­ raw-value-style-enum-membersraw-value-style-enum-member ­raw-value-style-enum-members ­opt
raw-value-style-enum-memberdeclaration­ | raw-value-style-enum-case-clause | compiler-control-statement
raw-value-style-enum-case-clauseattributes ­opt ­case ­raw-value-style-enum-case-list
raw-value-style-enum-case-listraw-value-style-enum-case ­| raw-value-style-enum-case ­, ­raw-value-style-enum-case-list­
raw-value-style-enum-caseenum-case-name ­raw-value-assignment ­opt
raw-value-assignment= raw-value-literal­
raw-value-literalnumeric-literalstatic-string-literalboolean-literal


構造体の宣言の文法

struct-declarationattributes ­opt access-level-modifier ­opt ­struct ­struct-name­ generic-parameter-clause ­opt ­type-inheritance-clause ­opt generic-where-clause ­opt ­struct-body
struct-nameidentifier
struct-body struct-members opt ­}

struct-membersstruct-member struct-members ­opt
struct-memberdeclarations­ | compiler-control-statement



クラス宣言の文法

class-declarationattributes opt access-level-modifier ­opt final ­opt ­class ­class-name generic-parameter-clause ­opt ­type-inheritance-clause ­opt generic-where-clause ­opt ­class-body
class-declarationattributes opt final access-level-modifier ­opt ­class ­class-name generic-parameter-clause ­opt ­type-inheritance-clause ­opt generic-where-clause ­opt ­class-body
class-nameidentifier
class-body ­class-members ­opt ­}

class-membersclass-member ­class-members ­opt
­ class-memberdeclarations | compiler-control-statement
­


プロトコル宣言の文法

protocol-declarationattributes ­opt access-level-modifier ­opt ­protocol ­protocol-name­ type-inheritance-clause ­opt generic-where-clause ­opt ­protocol-body
protocol-nameidentifier
protocol-body protocol-members ­opt ­}

protocol-membersprotocol-member protocol-members ­opt
­ protocol-memberprotocol-member-declaration ­| compiler-control-statement

protocol-member-declarationprotocol-property-declaration
protocol-member-declarationprotocol-method-declaration
protocol-member-declarationprotocol-initializer-declaration
protocol-member-declarationprotocol-subscript-declaration
protocol-member-declarationprotocol-associated-type-declaration
protocol-member-declarationstypealias-declaration­



プロトコルプロパティ宣言の文法

protocol-property-declarationvariable-declaration-head ­variable-name ­type-annotation getter-setter-keyword-block



プロトコルメソッド宣言の文法

protocol-method-declarationfunction-head ­function-name generic-parameter-clause ­opt ­function-signature generic-where-clause ­opt



プロトコルイニシャライザ宣言の文法

protocol-initializer-declarationinitializer-head generic-parameter-clause ­opt parameter-clause throws ­opt generic-where-clause ­opt
protocol-initializer-declarationinitializer-head generic-parameter-clause ­opt parameter-clause rethrows generic-where-clause ­opt



プロトコルサブスクリプト宣言の文法

protocol-subscript-declarationsubscript-head­ subscript-result ­generic-where-clause ­opt getter-setter-keyword-block­



プロトコルに関連した型の宣言の文法

protocol-associated-type-declarationattributes ­opt access-level-modifier ­opt ­associatedtype typealias-name ­type-inheritance-clause ­­opt ­­typealias-assignment ­opt generic-where-clause ­opt



イニシャライザ宣言の文法

initializer-declarationinitializer-head generic-parameter-clause ­opt parameter-clause throws ­opt generic-where-clause ­opt initializer-body
initializer-declarationinitializer-head generic-parameter-clause ­opt parameter-clause rethrows generic-where-clause ­opt initializer-body
initializer-headattributes ­opt ­declaration-modifiers ­opt ­init
­ initializer-headattributes opt declaration-modifiers ­opt ­init­ ?
initializer-headattributes ­opt declaration-modifiers ­opt ­init­ !
­ initializer-bodycode-block



デイニシャライザ宣言の文法

deinitializer-declarationattributes ­opt ­deinit ­code-block



機能拡張の宣言の文法

extension-declarationattributes ­opt access-level-modifier ­opt ­extension type-identifier ­type-inheritance-clause ­opt ­extension-body
extension-declarationattributes ­opt access-level-modifier ­opt ­extension type-identifier generic-where-clause extension-body
extension-body extension-members ­opt ­}

extension-membersextension-member­ extension-members ­opt­
extension-memberdeclaration | compiler-control-statement
­


サブスクリプト宣言の文法

subscript-declarationsubscript-head subscript-result generic-where-clause ­opt ­code-block
subscript-declarationsubscript-head ­subscript-result generic-where-clause ­opt getter-setter-block
subscript-declarationsubscript-head ­subscript-result generic-where-clause ­opt getter-setter-keyword-block
subscript-headattributes ­opt declaration-modifiers ­opt ­subscript generic-parameter-clause opt parameter-clause
subscript-result-> attributes ­opt ­type



演算子の宣言の文法

operator-declarationprefix-operator-declarationpostfix-operator-declarationinfix-operator-declaration­

prefix-operator-declarationprefix ­operator ­operator
postfix-operator-declarationpostfix ­operator ­operator
infix-operator-declarationinfix­ operator ­operator ­infix-operator-group ­opt

infix-operator-group: precedence-group-name



優先順位グループ宣言の文法

precedence-group-declarationprecedencegroup ­precedence-group-name­ { ­precedence-group-attributes ­opt ­}
precedence-group-attributesprecedence-group-attribute ­precedence-group-attributes ­opt
­ precedence-group-attributeprecedence-group-relation­
precedence-group-attributeprecedence-group-assignment
precedence-group-attributeprecedence-group-associativity­

precedence-group-relationhigherThan ­: ­precedence-group-names­
precedence-group-relationlowerThan ­: ­precedence-group-names­

precedence-group-assignmentassignment ­: ­boolean-literal

precedence-group-associativityassociativity­ : ­left
precedence-group-associativityassociativity ­: ­right
precedence-group-associativityassociativity ­: ­none
precedence-group-namesprecedence-group-name | precedence-group-name ­, ­precedence-group-names
precedence-group-nameidentifier­



宣言修飾子の文法

declaration-modifierclassconvenience ­| dynamic | final | infix | lazy | optional­ | override | postfix | prefix | required | static | unowned | unowned­ ( ­safe ­) | unowned ­( ­unsafe ­)weak
declaration-modifieraccess-level-modifier
declaration-modifiermutation-modifier
declaration-modifiersdeclaration-modifier ­declaration-modifiers ­opt

access-level-modifierprivate | private ­( ­set ­)
access-level-modifierfileprivate­ | fileprivate ­( ­set ­)­
access-level-modifierinternal | internal ­( ­set ­)
access-level-modifierpublic | public ­( ­set ­)
access-level-modifieropen | open ­( ­set ­)

mutation-modifiermutating | nonmutating


属性


属性の文法

attribute@­ attribute-name ­attribute-argument-clause ­opt
­ attribute-nameidentifier­
attribute-argument-clause( balanced-tokens ­opt ­)
attributesattribute attributes ­opt

balanced-tokens­balanced-token balanced-tokens ­opt
balanced-token( balanced-tokens ­opt ­)
balanced-token[ balanced-tokens ­opt ­]
balanced-token balanced-tokens ­opt ­}
balanced-tokenAny identifier, keyword, literal, or operator
balanced-tokenAny punctuation except (­, )­, [­, ]­, {­, or }



パターン


パターンの文法

patternwildcard-pattern ­­type-annotation­ ­opt
patternidentifier-pattern ­­type-annotation­ ­opt
patternvalue-binding-pattern
patterntuple-pattern ­type-annotation ­opt
patternenum-case-pattern
patternoptional-pattern
­ patterntype-casting-pattern­
patternexpression-pattern



ワイルドカードパターンの文法

wildcard-pattern_



識別子パターンの文法

identifier-patternidentifier



値結合パターンの文法

value-binding-patternvar pattern | let pattern



タプルパターンの文法

tuple-pattern tuple-pattern-element-list ­opt ­)
tuple-pattern-element-listtuple-pattern-element | tuple-pattern-element ­, ­tuple-pattern-element-list­
tuple-pattern-elementpattern | identifier : pattern



列挙型ケースパターンの文法

enum-case-patterntype-identifier ­opt ­. ­enum-case-name ­tuple-pattern ­opt



Optional パターンの文法

optional-patternidentifier-pattern­



型キャストパターンの文法

type-casting-patternis-pattern | as-pattern
is-patternis ­type
as-patternpattern as ­type



式のパターンの文法

expression-patternexpression



汎用パラメータと引数



汎用のパラメータ句の文法

generic-parameter-clause< generic-parameter-list ­>
generic-parameter-listgeneric-parameter | generic-parameter ­, generic-parameter-list
generic-parametertype-name
generic-parametertype-name : type-identifier
­ generic-parametertype-name protocol-composition-type

generic-where-clausewhere requirement-list­
requirement-listrequirement | requirement ­, ­requirement-list­
requirementconformance-requirement | same-type-requirement

conformance-requirementtype-identifier ­: ­type-identifier
conformance-requirementtype-identifier ­: protocol-composition-type
same-type-requirementtype-identifier ­== ­type



­
汎用引数句の文法

generic-argument-clause< ­generic-argument-list­ >
generic-argument-listgeneric-argument | generic-argument ­, ­generic-argument-list
generic-argumenttype





前:汎用パラメータと引数 後:マニュアルの変更履歴
目次
Xcode 9 の新機能

Swift:はじめに
Swift と Cocoa と Objective-C
Swift Blog より

  • ようこそ Swift へ(Part I)
  • Swift について
  • バージョン互換性
  • Swift のツアー
  • 単純な値
    制御フロー
    関数とクロージャ
    オブジェクトとクラス
    列挙型と構造体
    プロトコルと拡張機能
    エラー処理
    汎用(ジェネリック)
  • Swift 言語のガイド(Part II)
  • Swift の基本
  • 定数と変数
  • 定数と変数の宣言
    型注釈
    定数と変数の命名
    定数と変数の印刷
    コメント
    セミコロン
  • 整数
  • 整数の境界
    Int
    UInt
    浮動小数点数
    安全な型と型推論
    数値リテラル
  • 数値型変換
  • 整数変換
    整数と浮動小数点間の変換
    型エイリアス
    ブール型
    タプル
  • Optional
  • nil
    if 文と強制開封
    Optional の結合
    暗黙に開封された Optionals
    エラー処理
  • アサーション(断言)と前提条件
  • アサーションを使用したデバッグ
    前提条件の実施
  • 基本演算子
  • 専門用語
    代入演算子
  • 算術演算子
  • 剰余演算子
    単項マイナス演算子
    単項プラス演算子
    複合代入演算子
    比較演算子
    三項条件演算子
    Nil 合体演算子
  • 範囲演算子
  • 閉鎖範囲演算子
    半開放範囲演算子
    片方の範囲
  • 論理演算子
  • 論理 NOT 演算子
    論理 AND 演算子
    論理 OR 演算子
    論理演算子の組み合わせ
    明示的な括弧
  • 文字列と文字
  • 文字列リテラル
    複数行の文字列リテラル
    文字列リテラル内の特殊文字
    空の文字列の初期化
    文字列の可変性
    文字列は値の型
    文字を使った作業
    文字列と文字を連結
    文字列補間
  • ユニコード(Unicode)
  • Unicode スカラー
    文字列リテラルの中の特別の文字
    拡張書記クラスタ
    文字を数える
  • 文字列のアクセスと変更
  • 文字列のインデックス
    部分文字列
    挿入と削除
  • 文字列の比較
  • 文字列と文字の等価性
    接頭辞と接尾辞の等価性
  • 文字列の Unicode 表現
  • UTF-8 の表現
    UTF-16 表現
    Unicode のスカラー表現
  • コレクション型
  • コレクションの可変性
  • 配列
  • 配列型省略構文
    空の配列の作成
    デフォルト値を持つ配列の作成
    2つの配列を共にして一つの配列に
    配列リテラルでの配列の作成
    配列へのアクセスと変更
    配列の繰り返し処理
  • セット
  • セット型のハッシュ値
    セット型の構文
    空のセットの作成と初期化
    配列リテラルでセットの作成
    セットへのアクセスと変更
    セットを反復処理
  • セット操作の実行
  • 基本的なセットの操作
    セットの身分と等価性
  • Dictionary
  • Dictionary 型の省略型構文
    空の Dictionary を作成
    Dictionary リテラルで Dictionary の作成
    Dictionary のアクセスと変更
    Dictionary を繰り返し処理
  • フロー制御
  • For-In ループ
  • While ループ
  • While
    Repeat-While
  • 条件文
  • if 文
  • Switch
  • 暗黙の Fallthrough なし
    範囲の一致
    タプル(Tuples)
    値の結合
    Where
    複合した case
  • 制御転送文
  • Continue
  • Break
  • ループ文内の Break
    Switch 文内の Break
    Fallthrough
    ラベル付きの文
    早期終了
    API 利用可能性の確認
  • 関数
  • 関数の定義と呼び出し
  • 関数のパラメータと戻り値
  • パラメータなしの関数
    複数パラメータの関数
    戻り値なしの関数
    複数の戻り値を持つ関数
    optional のタプル型の戻り値
  • 関数引数のラベルとパラメータ名
  • 引数のラベルの指定
    引数ラベルの省略
    デフォルトのパラメータ値
    可変個引数のパラメータ
    In-Out パラメータ
  • 関数型
  • 関数型の使用
    パラメータ型としての関数型
    戻り値の型としての関数型
    入れ子になった関数
  • クロージャ
  • クロージャ式
  • ソートするメソッド
    クロージャ式の構文
    文脈から型を推論
    単一式クロージャからの暗黙的戻り値
    引数名の省略
    演算子メソッド
    後続クロージャ
    値のキャプチャ
    クロージャは参照型
    クロージャのエスケープ
    オートクロージャ
  • 列挙型
  • 列挙型の構文
    switch 文で列挙型の値の一致
    関連する値
  • 生の値
  • 暗黙に割り当てられた生の値
    生の値からの初期化
    再帰的な列挙型
  • クラスと構造体
  • クラスと構造体を比較
  • 定義の構文
    クラスと構造体のインスタンス
    プロパティにアクセス
    構造体型のためのメンバー化イニシャライザ
    構造体と列挙型は値型
  • クラスは参照型
  • ID 演算子
    ポインタ
    クラスと構造体の間の選択
    文字列、配列、辞書の代入とコピーの動作
  • プロパティ
  • 格納されたプロパティ
  • 定数構造体インスタンスの格納されたプロパティ
    遅延した格納されたプロパティ
    格納されたプロパティとインスタンス変数
  • 計算されたプロパティ
  • セッタ宣言の省略形
    読み取り専用の計算されたプロパティ
    プロパティ監視者
    グローバルとローカル変数
  • 型プロパティ
  • 型プロパティの構文
    型プロパティの照会と設定
  • メソッド
  • インスタンスメソッド
  • self プロパティ
    インスタンスメソッド内から値の型を変更
    変異メソッド内で self に代入
    型メソッド
  • サブスクリプト
  • サブスクリプトの構文
    サブスクリプトの使用法
    サブスクリプトのオプション
  • 継承
  • 基本クラスの定義
    サブクラス化
  • オーバーライド(上書き)
  • スーパークラスメソッド、プロパティ、サブスクリプトへのアクセス
    オーバーライドするメソッド
  • オーバーライドするプロパティ
  • プロパティのゲッタとセッタのオーバーライド
    プロパティ監視者のオーバーライド
    オーバーライドの防止
  • 初期化
  • 格納されたプロパティの初期値を設定
  • イニシャライザ
    デフォルトのプロパティ値
  • 初期化のカスタマイズ
  • 初期化パラメータ
    パラメータ名と引数ラベル
    引数ラベルのないイニシャライザのパラメータ
    Optional のプロパティ型
    初期化中に定数プロパティへの代入
  • デフォルトのイニシャライザ
  • 構造体型のためのメンバ化イニシャライザ
    値型のイニシャライザデリゲート
  • クラスの継承と初期化
  • 指定イニシャライザとコンビニエンスイニシャライザ
    指定とコンビニエンスイニシャライザの構文
    クラス型のイニシャライザデリゲート
    二相の初期化
    イニシャライザ継承とオーバーライド
    自動イニシャライザの継承
    実際の指定とコンビニエンスイニシャライザ
  • 失敗可能イニシャライザ
  • 生の値を持つ列挙型のための失敗可能イニシャライザ
    初期化失敗の伝播
    失敗可能イニシャライザのオーバーライド
    init! の失敗可能イニシャライザ
    必須イニシャライザ
    クロージャや関数でのデフォルトのプロパティ値設定
  • デイニシャライザ
  • デイニシャライザはどのように働くか
    作動中のデイニシャライザ
  • Optional の連鎖
  • 強制開封の代替としての Optional の連鎖
    Optional の連鎖のモデルクラスの定義
    Optional の連鎖を使用したプロパティへのアクセス
    Optional の連鎖を通じてメソッドを呼び出す
  • Optional の連鎖を通じてサブスクリプトへのアクセス
  • Optional 型のサブスクリプトにアクセス
    連鎖の複数レベルのリンク
    optional の戻り値を持つメソッドでの連鎖
  • エラー処理
  • エラーの表現と Throw
    エラーの処理
    throw 関数を使用したエラーの伝播
    Do-Catch を使用したエラー処理
    エラー をOptional の値に変換
    エラー伝播を無効に
    クリーンアップアクションの指定
  • 型キャスト
  • 型キャストのためのクラス階層の定義
    型のチェック
    ダウンキャスト
  • Any と AnyObjecgt 用の型キャスティング
  • ネストした型
  • 実際のネストした型
    ネストした型への参照
  • 拡張機能
  • 拡張機能の構文
    計算されたプロパティ
    イニシャライザ
  • メソッド
  • 変異インスタンスメソッド
    サブスクリプト
    ネストした型
  • プロトコル
  • プロトコルの構文
    プロパティの要件
    メソッドの要件
    変異メソッドの要件
  • イニシャライザの要件
  • プロトコルイニシャライザ要件のクラス実装
    失敗可能イニシャライザの要件
    型としてのプロトコル
    デリゲート
  • 拡張機能を持つプロトコル準拠の追加
  • 拡張機能を持つプロトコルの採用を宣言
    プロトコル型のコレクション
    プロトコルの継承
    クラス専用プロトコル
    プロトコルの構成
    プロトコル準拠の確認
    Optional のプロトコル要件
  • プロトコル拡張機能
  • デフォルトの実装の提供
    プロトコル拡張機能に制約を追加
  • ジェネリック(汎用)
  • 汎用が解決する問題
    汎用関数
    型パラメータ
    型パラメータの命名
    汎用の型
    汎用型の拡張
  • 型の制約
  • 型制約の構文
    実際の型の制約
  • 関連型
  • 実際の関連型
    既存の型を拡張して関連型を指定
    型注釈を使用して関連型を制約
    汎用の Where 句
    汎用の Where 句を含む拡張機能
    関連する型と汎用の Where 句
    汎用のサブスクリプト
  • 自動参照カウント
  • どのように ARC は働くか
    実際の ARC
    クラスインスタンス間の強い循環参照
  • クラスインスタンス間の強い循環参照の解決
  • 弱い参照
    所有されていない参照
    所有されていない参照と暗黙に開封された Optional のプロパティ
    クロージャの strong な循環参照
  • クロージャの strong な循環参照の解決
  • キャプチャリストの定義
    弱い参照と所有されていない参照
  • メモリの安全性
  • メモリへのアクセス競合の理解
    メモリアクセスの特徴
    In-Out パラメータへのアクセスの競合
    メソッド内の Self へのアクセスの競合
    プロパティへのアクセスの競合
  • アクセス制御
  • モジュールとソースファイル
  • アクセスレベル
  • アクセスレベルの全体的指針
    デフォルトのアクセスレベル
    ターゲット一つのアプリのアクセスレベル
    フレームワークのアクセスレベル
    ユニットテストのターゲット用のアクセスレベル
    アクセス制御の構文
  • カスタム型
  • タプル型
    関数型
  • 列挙型
  • 生の値と関連する値
    ネストした型
    サブクラス化
  • 定数、変数、プロパティ、およびサブスクリプト
  • ゲッタとセッタ
  • イニシャライザ
  • デフォルトのイニシャライザ
    構造体型用のデフォルトメンバ化イニシャライザ
  • プロトコル
  • プロトコルの継承
    プロトコルの準拠
  • 拡張機能
  • 拡張機能の private メンバ
    汎用
    型エイリアス
  • 高度な演算子
  • ビット単位演算子
  • ビット単位の NOT 演算子
    ビット単位の AND 演算子
    ビット単位の OR 演算子
    ビット単位の XOR 演算子
  • ビット単位の左と右シフト演算子
  • 符号なし整数のシフト動作
    符号付き整数のシフト動作
  • オーバーフロー演算子
  • 値オーバーフロー
    優先順位と結合性
  • 演算子メソッド
  • 接頭辞と接尾辞演算子
    複合代入演算子
    等価演算子
  • カスタム演算子
  • カスタム挿入辞演算子の優先順位
  • 言語のガイド(Part III)
  • 言語リファレンスについて
  • 文法の読み方
  • 語彙の構造
  • 空白とコメント
    識別子
    キーワードと句読点
  • リテラル
  • 整数リテラル
    浮動小数点リテラル
    文字列のリテラル
    演算子

  • 型注釈
    型識別子
    タプル型
    関数型
    エスケープしないクロージャの制限事項
    配列型
    辞書型
    Optional の型
    暗黙に開封された Optional の型
    プロトコル構成の型
    メタタイプ型
    型の継承句
    型の推測

  • 接頭辞式
    Try 演算子
  • 二項式
  • 代入演算子
    三項条件演算子
    型キャスト演算子
  • 一次式
  • リテラル式
    Self 式
    スーパークラス式
  • クロージャ式
  • キャプチャ・リスト
    暗黙のメンバ式
    括弧で囲まれた式
    タプル式
    ワイルドカード式
    キーパス式
    セレクタ式
    キーパス文字列式
  • 接尾辞の式
  • 関数呼び出し式
    イニシャライザ式
    明示的なメンバ式
    接尾辞の Self 式
    サブスクリプト 式
    強制値の式
    Optional の連鎖式

  • ループ文
  • For-In 文
    While 文
    Repeat-While 文
  • 分岐文
  • if 文
    Guard 文
  • switch 文
  • switch 文は、網羅的である必要あり
    実行が暗黙的に case を Fall Through しない
    ラベル付き文
  • 制御転送文
  • break 文
    continue 文
    fallthrough 文
    return 文
    throw 文
    defer 文
    do 文
  • コンパイラ制御文
  • 条件コンパイルブロック
    行制御文
    利用可能条件
  • 宣言
  • トップレベルのコード
    コードブロック
    Import 宣言
    ­定数の宣言
  • 変数の宣言
  • 格納された変数と格納された変数のプロパティ
    計算された変数と計算されたプロパティ
    格納された変数監視者とプロパティの監視者
    型変数プロパティ
    型エイリアス宣言
  • 関数の宣言
  • パラメータ名
    In-Out パラメータ
    パラメータの特殊な種類
    メソッドの特殊な種類
    Throw する関数とメソッド
    Rethrow する関数とメソッド
    決して返さない関数
  • 列挙型の宣言
  • 任意の型の case を列挙
  • 間接による列挙
    生の値型の case を列挙
    列挙型 case へのアクセス
    構造体の宣言
    クラスの宣言
  • プロトコルの宣言
  • プロトコル・プロパティ宣言
    プロトコル・メソッド宣言
    プロトコル・イニシャライザ宣言
    プロトコル・サブスクリプト宣言
    プロトコルに関連した型の宣言
  • イニシャライザ宣言
  • 失敗可能イニシャライザ
    デイニシャライザ宣言
    拡張機能の宣言
    サブスクリプト宣言
    演算子の宣言
    優先順位グループ宣言
  • 宣言修飾子
  • アクセス制御レベル
  • 属性
  • 宣言の属性
  • インターフェイスビルダーで使われる宣言属性
    型の属性
  • パターン
  • ワイルドカードパターン
    識別子パターン
    値結合パターン
    タプルパターン
    列挙型 case パターン
    Optional のパターン
    型キャストパターン
    式のパターン
  • 汎用パラメータと引数
  • 汎用パラメータ句
  • 汎用の where 句
    汎用引数句
  • 文法のまとめ
  • 語彙の構造



    宣言
    属性
    パターン
    汎用パラメータと引数
  • マニュアルの変更履歴
  • 変更履歴












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)












    トップへ(Swift Language Basics)