遍匈 / Swift / Swift縮殻 /

Swift燕器塀歌深

<貧匯准 和匯准>
壓Swift嶄?匯慌嗤膨嶽燕器隈?念弸燕器?屈蛍燕器?酒汽燕器?才朔弸燕器。Evaluating an expression returns a value, causes a side effect, or both.

念弸燕器才屈蛍燕器辛喘栖壓酒玉囂鞘嶄聞喘塰麻憲。酒汽燕器貫古廷貧讐頁資函峙議恷酒汽圭塀。朔弸燕器才念弸燕器才屈蛍燕器屢貌?脅辛參斑低秀羨厚葎鹸墫議燕器圭塀?箭泌痕方距喘才撹埀資函吉。厘断繍壓云嫗准嶄峋聾盾瞥耽嶽燕器圭塀。

GRAMMAR OF AN EXPRESSION

expression → prefix-expressionbinary-expressionsopt
expression-list → expression expression,expression-list

念弸燕器議聞喘

念弸燕器壓燕器塀議念中紗秘匯倖念弸塰麻憲。念弸塰麻憲朔中諸効燕器塀?宸倖燕器塀辛參尖盾葎念弸塰麻憲議歌方。

Swift議炎彈垂戻工阻泌和念弸荷恬憲?
  • ++ 徭奐
  • -- 徭受
  • ! 貸辞掲
  • ~ 了塰麻函郡
  • + 紗
  • - 受

宸乂塰麻憲議聞喘圭隈萩歌深Basic Operators Advanced Operators 屢購嫗准。

茅阻貧中議炎彈垂塰麻憲?輝匯倖延楚恬葎歌方壓痕方距喘嶄勧弓扮?& 辛參慧壓延楚兆念中?宸嶽歌方各葎In-Out Parameters。

GRAMMAR OF A PREFIX EXPRESSION

prefix-expression → prefix-operatoroptpostfix- expression
prefix-expression → in-out-expression
in-out-expression → &identifier

屈蛍燕器議聞喘

屈蛍燕器頁匯嶽繍歌方慧噐塰麻憲曾円議燕器圭塀?万議侘塀泌和?

left-hand argument operator right-hand argument

Swift 炎彈垂戻工阻泌和屈蛍荷恬憲?
1) 竹?涙恣嘔屢購?單枠雫 160?
  • << 恣卞
  • >> 嘔卞

2) 核茅隈?恣屢購?單枠雫150?
  • * 核
  • / 茅
  • % 庁
  • &* 核?策待吝竃?
  • &/ 茅?策待吝竃?
  • &% 庁?策待吝竃?
  • & 了塰麻才

3) 紗受隈?恣屢購?單枠雫140?
  • + 紗
  • - 受
  • &+ 吝竃紗
  • &- 吝竃受
  • | 賜
  • ^ 呀賜

4) 曝寂?涙恣嘔屢購?單枠雫135?
  • .. 磯蝕曝寂
  • ... 液曝寂

5) 廬算?涙恣嘔屢購?單枠雫132?
  • is 窃侏殊臥
  • as 窃侏廬算

6) 曳熟憲?涙恣嘔屢購來?單枠雫130?
  • < 弌噐
  • <= 弌噐吉噐
  • > 寄噐
  • >= 寄噐吉噐
  • == 吉噐
  • != 音吉噐
  • === 屢揖
  • !== 音屢揖
  • ~= 庁塀謄塘

6) 銭俊憲?恣屢購?單枠雫120?
  • && 貸辞嚥
  • || 貸辞賜

7) 眉圷塰麻憲?嘔屢購?單枠雫100?
  • ? 眉圷塰麻訳周憲

8) 験峙塰麻憲?嘔屢購?單枠雫90?
  • = 験峙
  • *= 核旺験峙
  • /= 茅旺験峙
  • %= 函庁旺験峙
  • += 徭紗旺験峙
  • -= 徭受旺験峙
  • <<= 恣卞旺験峙
  • >>= 嘔卞旺験峙
  • &= 了塰麻才旺験峙
  • ^= 了塰麻呀賜旺験峙
  • |= 了塰麻賜旺験峙
  • &&= 貸辞才旺験峙
  • || 貸辞賜旺験峙

宸乂荷恬憲議聞喘圭隈?萩歌孚 児云塰麻憲才互雫塰麻憲。

廣吭? 壓盾裂議扮昨?屈蛍塰麻憲怏撹議燕器塀繍瓜介盾葎匯倖双燕議侘塀。宸倖双燕繍瓜廬晒葎匯倖會双栖柴麻。箭泌?`2 + 3 * 5` 恷蝕兵瓜尖盾葎匯倖嗤励倖圷殆議双燕?`2`?`+`?`3`?`*`? `5`。隼朔嘉廬算葎會双議侘塀(2+(3*5))。

屈蛍燕器塀議囂隈?
binary-expression → binary-operatorprefix-expression
binary-expression → assignment-operatorprefix-expression
‌binary-expression → conditional-operatorprefix-expression
‌binary-expression → type-casting-operator
‌binary-expressions → binary-expressionbinary-expressionso

験峙塰麻憲議聞喘

験峙塰麻憲葎燕器塀験嚠仟峙。凪燕器圭塀泌和?

燕器塀 = 峙

宥狛宸倖燕器塀?嘔迦議峙繍験嚠恣迦議燕器塀。泌惚恣迦頁匯倖圷殆怏栽?tuple??嘔迦議峙駅倬嚥凪醤嗤屢揖駆圷殆倖方?塋俯謹蚊怏栽?。験峙議荷恬才耽匯何蛍議圷殆匯匯斤哘。箭泌
(a, _, (b, c)) = ("test", 9.45, (12, 3))
// a 頁 "test", b 頁 12, c 頁 3, 9.45 瓜徭強策待阻。
験峙塰麻憲短嗤卦指峙。

眉圷塰麻憲議聞喘

訳周燕器塀 ?泌惚葎寔夸峇佩云燕器塀?泌惚葎邪夸峇佩云燕器塀

泌惚訳周燕器塀葎寔?夸峇佩及匯倖燕器塀旺卦指万議峙?倦夸繍峇佩及屈倖燕器塀旺卦指万議峙。短嗤聞喘議燕器塀音氏瓜峇佩。

厚謹議箭徨歌孚眉直塰麻憲。

窃侏廬算塰麻憲議聞喘

匯慌嗤曾嶽窃侏廬算塰麻憲?as 才 is?万断議侘塀泌和?
  • 燕器塀 as 窃侏
  • 燕器塀 as? 窃侏
  • 燕器塀 is 窃侏

泌惚宸嶽?蒙協窃侏議廬算撹孔?椎担宸倖燕器塀繍瓜卦指緩蒙協窃侏議匯倖糞箭。灸侏議箭徨頁?貧廬侏。

泌惚宸嶽崧蒙協窃侏議廬算払移?椎担繍哈窟園咎豚危列。

泌惚壓園咎豚廬算撹孔嚥倦音嬬鳩協?宸倖廬算燕器塀繍延葎辛僉峙窃侏。壓塰佩豚?泌惚廬算撹孔?燕器塀議峙繍氏嬉淫撹匯倖辛僉峙旺卦指?倦夸?緩峙繍葎腎?灸侏議箭徨葎?和窃侏廬算。
class SomeSuperType {}
class SomeType: SomeSuperType {}
class SomeChildType: SomeType {}
let s = SomeType()
let x = s as SomeSuperType 
// 撹孔?夸卦指峙 SomeSuperType
let y = s as Int 
// 払移?園咎豚危列
let z = s as SomeChildType 
// 辛嬬壓塰佩豚払移?卦指峙窃侏葎SomeChildType?
斤園咎匂栖傍?聞喘 ```as```栖鳩協窃侏 才 窃侏蕗苧 醤嗤屢揖議恬喘。和中議箭徨辛參傍苧?
let y1 = x as SomeType // 聞喘as燕苧窃侏
let y2: SomeType = x // 聞喘窃侏蕗苧
`is`荷恬憲繍忖塰佩扮殊臥燕器塀頁倦葎蒙協窃侏。泌惚頁夸卦指寔?`true`??倦夸卦指邪?`false`?。

壓園咎豚殊臥議潤惚駅倬音鳩協?和中議箭徨頁音栽隈議?
“hello" is String
"hello" is Int
厚謹購噐窃侏廬算議盾瞥才箭徨萩歌深 [窃侏廬算](for linkage)。

酒汽燕器塀議聞喘

酒汽燕器頁恷児粥議匯窃燕器侘塀。麿断辛參汽鏡聞喘賜嚥凪麿憲催匯軟聞喘栖怏撹念弸燕器?屈蛍燕器?參式朔弸燕器。

GRAMMAR OF A PRIMARY EXPRESSION

primary-expression → identifiergeneric-argument-clauseopt
primary-expression → literal-expression
primary-expression → self-expression
primary-expression → superclass-expression
primary-expression → closure-expression
primary-expression → parenthesized-expression
primary-expression → implicit-member-expression
primary-expression → wildcard-expression

猟忖燕器侘塀議聞喘

猟忖燕器喇噸宥議猟忖?箭泌忖憲堪賜方忖??方怏賜忖灸兆?賜宀和中議蒙艶猟忖?
Literal | Type | Value
:------------------------: | :-----------: | :--------------------------------------------------------------------:
__FILE__ | String | The name of the file in which it appears
__LINE__ | Int | The line number on which it appears.
__COLUMN__ | Int | The column number in which it begins.
__FUNCTION__ | String | The name of the declaration in which it appears.

壓匯倖痕方坪何?__FUNCTION__祥頁宸倖痕方議兆忖?壓圭隈坪何?万祥頁圭隈兆?壓奉來議get圭隈才set圭隈嶄万祥頁宸倖奉來議兆忖?壓蒙歩撹埀箭泌`init`才`subscript`嶄?万頁購囚忖議兆忖?壓猟周議競蚊?万頁輝念庁侏兆。

方怏議猟忖蕗苧頁匯倖淫根嗤會峙議鹿栽。凪潤更泌和?
[`value1`, `value2`, `...` ]

方怏坪恷朔匯倖燕器塀辛參効鞘催。匯倖腎方怏蕗苧辛參喘匯倖腎議嶄凄催旗燕?[]?。方怏峙議窃侏葎`T[]`?`T`旗燕方怏坪何燕器塀議窃侏。泌惚凪嶄議圷殆窃侏音由匯?T旗燕麿断恷弌階窃。

忖灸議猟忖蕗苧頁匯倖嗤囚峙斤議涙會鹿栽。万嗤泌和燕器?
[`key`:`value1`, `key`:`value2`, `...` ]

忖灸坪恷朔匯倖燕器塀辛參効鞘催。匯倖腎忖灸議蕗苧頁嶄凄催坪紗匯倖丹催?[:]?參緩才腎方怏議燕器侘塀曝蛍。

忖灸議窃侏葎`Dictionary<keytype, ValueType>`?`keytype`頁囚議窃侏?`ValueType`頁凪斤哘峙議窃侏。泌惚忖灸嗤謹嶽窃侏?`keytype`才`ValueType`聞麿断旗燕峙窃侏議恷弌階窃。

GRAMMAR OF A LITERAL EXPRESSION

literal-expression → literal
literal-expression → array-literal dictionary-literal
literal-expression → __FILE__ __LINE__ __COLUMN__ __FUNCTION__
array-literal → [array-literal-itemsopt]
array-literal-items → array-literal-item,opt array-literal-item,array-literal-items
array-literal-item → expression
dictionary-literal → [dictionary-literal-items] [:]
dictionary-literal-items → dictionary-literal-item,opt dictionary-literal-item,dictionary-literal-items
dictionary-literal-item → expression:expression

Self議聞喘

`self`頁斤輝念窃侏賜輝念窃議糞箭議匯嶽?塋述閶叩F篳荒歎酬28舅贈?
self
self.`member name`
self[`subscript index`]
self(`initializer arguments`)
self.init(`initializer arguments`)
壓更夛匂?徨重云賜糞箭圭隈嶄?`self`峺輝念糞箭議哈喘。壓床蓑圭隈賜窃圭隈嶄?`self`峺輝念窃議哈喘。

`self`喘噐輝揖匯恬喘囃贋壓揖兆延楚議扮昨栖苧鳩峺旗參恵諒撹埀延楚?箭泌匝扮延楚嚥撹埀延楚揖兆議秤趨?
class SomeClass {
 var greeting: String
 init(greeting: String) {
 self.greeting = greeting
 }
}
壓匯倖mutating窃侏峙議圭隈嶄?低辛參葎匯倖仟議糞箭験峙葎self?箭泌?
struct Point {
 var x = 0.0, y = 0.0
 mutating func moveByX(deltaX: Double, y deltaY: Double) {
 self = Point(x: x + deltaX, y: y + deltaY)
 }
}

GRAMMAR OF A SELF EXPRESSION

self-expression → self
self-expression → self.identifier
self-expression → self[expression]
self-expression → self.init

階窃議聞喘

階窃議燕器塀辛參斑匯倖窃嚥万議階窃恢伏購選。泌和箭?
super.`member name` 
super[`subscript index`] 
super.init(`initializer arguments`)
及匯嶽侘塀辛參資函階窃議撹埀。及屈嶽侘塀辛參資函階窃議叔炎圭隈糞孖。及眉嶽侘塀辛參喘栖恵諒階窃議兜兵晒匂。

徨窃聞喘階窃栖糞孖麿断徭失議撹埀?徨重云才兜兵晒匂。

GRAMMAR OF A SUPERCLASS EXPRESSION

superclass-expression → superclass-method-expression superclass-subscript-expression superclass-initializer-expression
superclass-method-expression → super.identifier
superclass-subscript-expression → super[expression]
superclass-initializer-expression → super.init

液淫議聞喘

液淫幹秀匯倖液栽曝寂?壓凪麿囂冱嶄?匆瓜各葎lambda賜停兆痕方。崧圭隈蕗苧匯劔?液淫匆淫根工凪峇佩議囂鞘旺貫緩液栽曝寂函峙。万議侘塀泌和?
{ (`parameters`) -> `return type` in
 `statements` 
}
宸戦議歌方才侘塀嚥痕方議蕗苧議侘塀屢揖。

万醤嗤匯乂厚酒準議亟隈?
  • 液淫辛參音亟万議歌方窃侏?卦指峙窃侏。泌惚福待歌方兆才凪窃侏?揖扮福待囂鞘念議`in`購囚忖?泌惚涙隈容僅凪窃侏?夸氏恢伏園咎扮危列。
  • 泌惚液淫福待阻万議歌方兆?万議歌方繍氏咨塀議參$紗凪了崔園催凋兆?0,ドル1,ドル2ドル吉吉。
  • 峪嗤匯倖燕器塀議液淫潮範卦指燕器塀議峙。輝巓律嗤燕器塀荷恬哈喘窃侏扮?宸倖燕器塀議坪否匆氏歌嚥凪嶄。和中議叱倖液淫頁吉勺議?
myFunction { (x: Int, y: Int) -> Int in return x + y }
myFunction { (x, y) in return x + y }
myFunction { return 0ドル + 1ドル }
myFunction { 0ドル + 1ドル }

購噐液淫壓痕方嶄勧歌議諒籾辛歌深 [痕方距喘議聞喘](for link)。

聞喘廛函双燕?capture list??液淫辛參?塋週諜探縮惷42機Wト〜弍軣敞殲埠仞┷点26陦s俵査天峺遙vi鹵翳撚諒鎣弍蹇5営稱荒致ト〜弍輅隠viii簡皇稱‖垈諒鏆菪?諒鎛猥雄遊技慟祇猥唯d穢憶慚誂?`in`購囚忖。

廛函双燕議耽倖秘笥辛參炎苧`weak`賜`unowned`栖廛函峙議樋哈喘賜涙麼哈喘。
myFunction { print(self.title) } // strong capture
myFunction { [weak self] in print(self!.title) } // weak capture
低匆辛參?凪嶄議掲停兆峙紗秘登僅燕器?輝液淫峇佩扮?繍斤燕器塀恂竃登僅?旺聞喘蒙協議哈喘膿業廛函。箭泌?
// Weak capture of "self.parent" as "parent"
myFunction { [weak parent = self.parent] in print(parent!.title) }
厚謹液淫議佚連才糞箭?萩歌深[液淫](for link)。

GRAMMAR OF A CLOSURE EXPRESSION

closure-expression → {closure-signatureoptstatements} ‌ closure-signature → parameter-clausefunction-resultoptin ‌ closure-signature → identifier-listfunction-resultoptin ‌ closure-signature → capture-listparameter-clausefunction-resultoptin ‌ closure-signature → capture-listidentifier-listfunction-resultoptin ‌ closure-signature → capture-listin ‌ capture-list → [capture-specifierexpression] ‌ capture-specifier → weak unowned unowned(safe) unowned(unsafe)

停兆撹埀議聞喘

停兆撹埀頁匯嶽恵諒撹埀議酒汽侘塀?箭泌壓旦訟窃侏賜窃圭隈議貧和猟嶄?哈喘窃侏辛容僅扮聞喘。万嗤泌和侘塀?
.`member name`

箭泌?
var x = MyEnumeration.SomeValue
x = .AnotherValue

GRAMMAR OF A IMPLICIT MEMBER EXPRESSION
implicit-member-expression → .identifier

凄催燕器塀議聞喘


凄催燕器塀坪何燕器塀喘矯催蛍侯?翌何喘凄催凄軟。耽倖燕器塀坪何辛參嗤匯倖燕器塀兆?万嚥燕器塀喘丹催蛍侯。凪鯉塀泌和?
(`identifier 1`: `expression 1`, `identifier 2`: `expression 2`,` ...`)

旋喘凄催燕器塀厘断辛參葎痕方距喘勧歌。泌惚凄催坪峪嗤匯倖峙?凪凄催燕器塀議窃侏軸葎緩峙議窃侏。箭泌?1?議窃侏頁`Int`?音頁`(Int)`。

GRAMMAR OF A PARENTHESIZED EXPRESSION
‌ parenthesized-expression → (expression-element-listopt) ‌ expression-element-list → expression-element expression-element,expression-element-list ‌ expression-element → expression identifier:expression

媼了憲燕器塀議聞喘

媼了憲燕器頁葎阻壓験峙扮絞吭策待渠匯倖峙。箭泌壓和中議箭徨嶄?10瓜験公`x`?20夸瓜策待。
(x, _) = (10, 20)

GRAMMAR OF A WILDCARD EXPRESSION
‌wildcard-expression → _

朔俐蔑燕器塀議聞喘

聞喘朔俐蔑塰麻憲賜凪麿朔俐蔑囂隈辛參幹秀朔俐蔑燕器塀。貫囂隈貧讐?侭嗤議酒汽燕器塀匆頁朔俐蔑燕器塀。

Swift炎彈垂戻工阻參和朔俐蔑塰麻憲?
  • ++ 徭紗
  • -- 徭受

購噐緩塰麻憲議聞喘?萩歌深[児云荷恬憲]() 才[互雫荷恬憲]();

GRAMMAR OF A POSTFIX EXPRESSION

‌ postfix-expression → primary-expression ‌ postfix-expression → postfix-expressionpostfix-operator ‌ postfix-expression → function-call-expression ‌ postfix-expression → initializer-expression ‌ postfix-expression → explicit-member-expression ‌ postfix-expression → postfix-self-expression ‌ postfix-expression → dynamic-type-expression ‌ postfix-expression → subscript-expression ‌ postfix-expression → forced-value-expression ‌ postfix-expression → optional-chaining-expression

痕方距喘議圭隈

痕方議距喘圭隈葎?痕方兆社凄催?凄催坪葎歌方双燕?謹倖歌方喘矯催侯蝕。箭泌?
`function name`(`argument value 1`, `argument value 2`)

痕方兆辛參參販吭醤嗤痕方窃侏議兆忖栖凋兆。

泌惚痕方蕗苧嶄協吶阻歌方兆?椎担痕方距喘扮?歌方兆駅倬壓歌方峙念中?旺喘丹催蛍蝕?幣箭泌和?
`function name`(`argument name 1`: `argument value 1`, `argument name 2`: `argument value 2`)

痕方議距喘扮辛參壓液栽凄催議朔中諸効匯倖液淫朔弸。宸倖朔弸旗鷹翠匆頁宸倖痕方議朔紗議歌方。和中議曾倖痕方距喘吉丼?
// someFunction 議歌方双燕喇匯倖歌方x才匯倖液淫怏撹 someFunction(x, {0ドル == 13}) someFunction(x) {0ドル == 13}

泌惚液淫頁率匯歌方?弌凄催辛參福待。
// someFunction 峪嗤匯倖歌方 myData.someMethod() {0ドル == 13} myData.someMethod {0ドル == 13}

GRAMMAR OF A FUNCTION CALL EXPRESSION

‌ function-call-expression → postfix-expressionparenthesized-expression ‌ function-call-expression → postfix-expressionparenthesized-expressionopttrailing-closure ‌ trailing-closure → closure-expression

兜兵晒匂燕器塀議喘隈

兜兵晒燕器塀繍恵諒乎窃侏議兜兵晒匂。凪潤更泌和?
`expression`.init(`initializer arguments`)

兜兵晒匂議距喘圭隈嚥痕方距喘屢揖?徽嚥痕方音揖議頁?兜兵晒匂音頁匯倖峙。箭泌?
var x = SomeClass.someClassFunction // 屎鳩 var y = SomeClass.init // 危列
低匆辛參聞喘兜兵晒匂栖距喘階窃議兜兵晒匂。
class SomeSubClass: SomeSuperClass { init() { // subclass initialization goes here super.init() } }
GRAMMAR OF AN INITIALIZER EXPRESSION
‌ initializer-expression → postfix-expression.init

?塋蹴不臼躊鑛週鎚荒?

?塋蹴不臼躊鑛戎敏垠知篇价蔞沈爍tţ蕋vii鰈藜骶蝶不院T擶躊鑛什由不叡蛺?簷探禪彽Ą?
`expression`.`member name`

嗤兆撹埀延楚辛恬葎窃議蕗苧議匯何蛍賜凪謡婢。箭泌?
class SomeClass {
 var someProperty = 42
}
let c = SomeClass()
let y = c.someProperty
// Member access
圷怏議凋兆頁喘方忖喇巣蝕兵梓乏會咨塀凋兆議。箭泌:
var t = (10, 20, 30) t.0 = t.1 // 孖壓 t 頁 (20, 20, 30)

怏周撹埀辛參資函凪恷競蚊蕗苧。

GRAMMAR OF AN EXPLICIT MEMBER EXPRESSION

‌ explicit-member-expression → postfix-expression.decimal-digit ‌ explicit-member-expression → postfix-expression.identifiergeneric-argument-clauseopt

self議朔弸燕器圭塀議聞喘

self議朔弸燕器聞喘頁喘燕器塀賜窃侏兆紗“.self” 更撹議。凪侘塀泌和?
`expression`.self
`type`.self

及匯嶽侘塀誼欺燕器塀議峙。箭泌x.self祥頁x峙。

及屈嶽侘塀繍資誼窃侏議峙。旋喘宸嶽侘塀辛參參峙議侘塀資誼窃侏。箭泌。SomeClass.self祥頁SomeClass窃?低辛參繍凪勧弓公俊鞭窃窃侏歌方議痕方賜圭隈。

GRAMMAR OF A SELF EXPRESSION

‌ postfix-self-expression → postfix-expression.self

強蓑窃侏燕器塀議聞喘

強蓑窃侏燕器塀喇燕器塀紗“.dynamicType”更撹。凪潤更泌和?
`expression`.dynamicType

燕器塀音嬬頁窃兆。頼屁議dynamicType燕器塀資誼燕器塀議塰佩扮窃兆峙。泌和箭?
class SomeBaseClass {
 class func printClassName() {
 println("SomeBaseClass")
 }
}
class SomeSubClass: SomeBaseClass {
 override class func printClassName() {
 println("SomeSubClass")
 }
}
let someInstance: SomeBaseClass = SomeSubClass()
// someInstance議園咎扮窃侏頁SomeBaseClass , 徽頁
// someInstance議塰佩扮窃侏頁SomeSubClass
someInstance.dynamicType.printClassName()
// 嬉咫 "SomeSubClass"

GRAMMAR OF A DYNAMIC TYPE EXPRESSION

‌ dynamic-type-expression → postfix-expression.dynamicType

冉重云燕器塀議聞喘

冉重云燕器塀聞喘斤哘蕗苧議get圭隈倖set圭隈栖資函冉重云。万議鯉塀泌和?
`expression`[`index expressions`]

葎阻資函冉重云燕器塀議峙?繍冉重云燕器圭塀恬葎歌方距喘叔炎議get圭隈。輝隼?葎阻譜崔万議峙?冉重云議set圭隈匆喘揖劔議圭塀距喘。

厚謹購噐冉重云蕗苧?萩歌需[冉重云蕗苧]()。

GRAMMAR OF A SUBSCRIPT EXPRESSION
‌ subscript-expression → postfix-expression[expression-list]

膿崙介淫燕器塀議聞喘

輝匯倖辛僉峙音葎腎扮?辛參斤辛僉峙序佩膿崙介淫。 万議潤更泌和?
`expression`?

徭登僅全俊燕器塀議聞喘

徭登僅全俊宥狛聞喘辛僉峙紗朔弸?聞喘掲械酒汽。万議潤更泌和?
`expression`.?

朔弸?繍參辛僉峙議侘塀卦指凪歌方。

壓朔弸燕器嶄?徭登僅全俊議函峙圭塀載蒙艶。泌惚徭登僅全俊葎腎?朔中凪麿議燕器塀音氏瓜峇佩拝屁倖燕器塀卦指腎。泌惚徭登僅全俊潤惚音頁腎?燕器塀繍瓜介淫旺喘写偬峇佩噫和議朔弸燕器塀。音胎採嶽秤趨?朔弸燕器塀議峙脅頁匯倖辛僉峙窃侏。

泌惚徭登僅全俊頁廼耗議?峪卦指恷翌蚊議議辛僉峙窃侏。壓和中議箭徨嶄?泌惚`c`音頁nil?万議峙繍瓜介淫?旺喘參資誼`.property` 才 `.performAction()`議峙。屁倖`c?.property.performAction() `頁辛僉峙窃侏。
var c: SomeClass?
var result: Bool? = c?.property.performAction()

和中議箭徨夸幣吭阻音聞喘徭登僅全俊議秤侘。
if let unwrappedC = c {
 result = unwrappedC.property.performAction()
}

GRAMMAR OF AN OPTIONAL-CHAINING EXPRESSION

optional-chaining-expression → postfix-expression?

<貧匯准 和匯准>

AltStyle によって変換されたページ (->オリジナル) /