Swift液淫峋盾
<貧匯准
和匯准>
液淫頁孔嬬來徭淫根庁翠?辛參壓旗鷹嶄瓜勧弓才聞喘。 Swift 嶄議液淫嚥 C 才 Objective-C嶄議 blocks 參式凪麿匯乂園殻囂冱嶄議 lambdas 曳熟屢貌。
液淫辛參 俺資 才贋刈凪侭壓貧和猟嶄販吭械楚才延楚議哈喘。 宸祥頁侭僚議液栽旺淫骨彭宸乂械楚才延楚?没各液淫。Swift氏葎艇砿尖壓 俺資 狛殻嶄膚式欺議坪贋荷恬。
Swift議液淫燕器塀啜嗤酒準議欠鯉?旺皇潜壓械需魁尚嶄參糞孖囂隈單晒?麼勣單晒泌和?
液淫燕器塀頁匯嶽旋喘酒準囂隈更秀坪選液淫議圭塀。 液淫燕器塀戻工阻匯乂囂隈單晒?聞誼廱亟液淫延誼酒汽苧阻。 和中液淫燕器塀議箭徨宥狛聞喘叱肝亨旗婢幣阻 sort 痕方協吶才囂隈單晒議圭塀。 耽匯肝亨旗脅喘厚酒準議圭塀宙峰阻屢揖議孔嬬。
和中議液淫燕器塀幣箭聞喘 sort 痕方斤匯倖 String 窃侏議方怏序佩忖銚剃會電會?參和頁兜兵方怏峙?
乎箭徨斤匯倖 String 窃侏議方怏序佩電會?咀緩電會液淫俶葎 (String, String) -> Bool 窃侏議痕方。
戻工電會液淫議匯嶽圭塀頁廱亟匯倖憲栽凪窃侏勣箔議噸宥痕方?旺繍凪恬葎 sort 痕方議及屈倖歌方勧秘?
隼遇?宸頁匯倖屢輝庇海議圭塀?云嵎貧峪頁亟阻匯倖汽燕器塀痕方 (a > b)。 壓和中議箭徨嶄?旋喘液栽燕器塀囂隈辛參厚挫議更夛匯倖坪選電會液淫。
和中議箭徨婢幣阻岻念 backwards 痕方斤哘議液淫燕器塀井云議旗鷹?
液淫議痕方悶何蛍喇購囚忖 in 哈秘。 乎購囚忖燕幣液淫議歌方才卦指峙窃侏協吶厮将頼撹?液淫痕方悶軸繍蝕兵。
咀葎宸倖液淫議痕方悶何蛍泌緩玉參崛噐辛參繍凪個亟撹匯佩旗鷹?
隼遇?低匆辛參聞喘苧鳩議窃侏?泌惚低?万閲窒響宀堋響辛嬬贋壓議灘吶?宸劔珊頁峙誼皇潜議。宸倖電會痕方箭徨?液淫議朕議頁載苧鳩議?軸電會瓜紋算?遇拝斤響宀栖傍辛參芦畠議邪譜液淫辛嬬氏聞喘忖憲堪峙,咀葎万屎亅廁匯倖忖憲堪方怏序佩電會。
泌惚艇壓液淫燕器塀嶄聞喘歌方兆各酒亟?艇辛參壓液淫歌方双燕嶄福待斤凪議協吶?旺拝斤哘歌方兆各酒亟議窃侏氏宥狛痕方窃侏序佩容僅。 in 購囚忖匆揖劔辛參瓜福待?咀葎緩扮液淫燕器塀頼畠喇液淫痕方悶更撹?
Trailing 液淫頁匯倖慕亟壓痕方凄催岻翌(岻朔)議液淫燕器塀?痕方屶隔繍凪恬葎恷朔匯倖歌方距喘。
輝戻工公方怏液淫痕方朔?map 圭隈繍卦指匯倖仟議方怏?方怏嶄淫根阻嚥圻方怏匯匯斤哘議啌符朔議峙。
和箭初府阻泌採壓 map 圭隈嶄聞喘 trailing 液淫繍 Int 窃侏方怏 [16,58,510] 廬算葎淫根斤哘 String 窃侏議方怏 ["OneSix", "FiveEight", "FiveOneZero"]:
艇孖壓辛參宥狛勧弓匯倖 trailing 液淫公 numbers 議 map 圭隈栖幹秀斤哘議忖憲堪井云方怏。 俶勣廣吭議扮距喘 numbers.map音俶勣壓 map 朔中淫根販採凄催?咀葎峪俶勣勧弓液淫燕器塀宸匯倖歌方?旺拝乎液淫燕器塀歌方宥狛 trailing 圭塀序佩廱亟?
液淫 number 歌方瓜蕗苧葎匯倖延楚歌方 (延楚議醤悶宙峰萩歌心Constant and Variable Parameters)?咀緩辛參壓液淫痕方悶坪斤凪序佩俐個。 液淫燕器塀崙協阻卦指峙窃侏葎 String?參燕苧贋刈啌符峙議仟方怏窃侏葎 String。
液淫燕器塀壓耽肝瓜距喘議扮昨幹秀阻匯倖忖憲堪旺卦指。 凪聞喘箔噫塰麻憲 (number % 10) 柴麻恷朔匯了方忖旺旋喘digitNames 忖灸資函侭啌符議忖憲堪。
number 延楚岻朔茅參10。 咀葎凪頁屁方?壓柴麻狛殻嶄隆茅勝何蛍瓜策待。 咀緩 16延撹阻1?58延撹阻5?510延撹阻51。
屁倖狛殻嶷鹸序佩?岷欺 number /= 10 葎0?宸扮液淫氏繍忖憲堪補竃?遇map痕方夸氏繍忖憲堪耶紗欺侭啌符議方怏嶄。
貧箭嶄 trailing 液淫囂隈壓痕方朔屁準撃廾阻醤悶議液淫孔嬬?遇音壅俶勣繍屁倖液淫淫骨壓 map 痕方議凄催坪。
Swift恷酒汽議液淫侘塀頁廼耗痕方?匆祥頁協吶壓凪麿痕方悶坪議痕方。 廼耗痕方辛參俺資凪翌何痕方侭嗤議歌方參式協吶議械楚才延楚。
和箭葎匯倖出恂 makeIncrementor 議痕方?凪淫根阻匯倖出恂 incrementor 廼耗痕方。 廼耗痕方 incrementor 貫貧和猟嶄俺資阻曾倖峙?runningTotal 才 amount。 岻朔 makeIncrementor 繍 incrementor 恬葎液淫卦指。 耽肝距喘 incrementor 扮?凪氏參 amount 恬葎奐楚奐紗 runningTotal 議峙。
makeIncrementor 痕方協吶阻匯倖屁侏延楚 runningTotal (兜兵葎0) 喘栖贋刈輝念奐紗悳方。 乎峙宥狛 incrementor 卦指。
makeIncrementor 嗤匯倖 Int 窃侏議歌方?凪翌何凋兆葎 forIncrement? 坪何凋兆葎 amount?燕幣耽肝 incrementor 瓜距喘扮runningTotal 繍勣奐紗議楚。
incrementor 痕方喘栖峇佩糞縞議奐紗荷恬。 乎痕方酒汽仇聞 runningTotal 奐紗 amount?旺繍凪卦指。
泌惚厘断汽鏡心宸倖痕方?氏窟孖心貧肇音揖儖械?
喇噐短嗤俐個 amount 延楚?incrementor 糞縞貧俺資旺贋刈阻乎延楚議匯倖険云?遇乎険云昧彭 incrementor 匯揖瓜贋刈。
隼遇?咀葎耽肝距喘乎痕方議扮昨脅氏俐個 runningTotal 議峙?incrementor 俺資阻輝念 runningTotal 延楚議哈喘?遇音頁叙叙鹸崙乎延楚議兜兵峙。俺資匯倖哈喘隠屬阻輝 makeIncrementor 潤崩扮昨旺音氏嶧払?匆隠屬阻輝和匯肝峇佩 incrementor 痕方扮?runningTotal 辛參写偬奐紗。
涙胎艇繍痕方/液淫験峙公匯倖械楚珊頁延楚?艇糞縞貧脅頁繍械楚/延楚議峙譜崔葎斤哘痕方/液淫議哈喘。 貧中議箭徨嶄?incrementByTen 峺?液淫議哈喘頁匯倖械楚?遇旺掲液淫坪否云附。
宸匆吭龍彭泌惚艇繍液淫験峙公阻曾倖音揖議械楚/延楚?曾倖峙脅氏峺?揖匯倖液淫?
液淫辛參 俺資 才贋刈凪侭壓貧和猟嶄販吭械楚才延楚議哈喘。 宸祥頁侭僚議液栽旺淫骨彭宸乂械楚才延楚?没各液淫。Swift氏葎艇砿尖壓 俺資 狛殻嶄膚式欺議坪贋荷恬。
廣吭?泌惚艇音母呂 俺資 (capturing) 宸倖古廷匆音喘毅伉?朔中氏峋聾斤凪序佩初府。壓Swift痕方嫗准嶄初府議畠蕉才廼耗痕方糞縞貧匆頁蒙歩議液淫?液淫寡函泌和眉嶽侘塀岻匯?
- 畠蕉痕方頁匯倖嗤兆忖徽音氏俺資販採峙議液淫
- 廼耗痕方頁匯倖嗤兆忖旺辛參俺資凪撃液痕方囃坪峙議液淫
- 液淫燕器塀頁匯倖旋喘煤楚雫囂隈侭亟議辛參俺資凪貧和猟嶄延楚賜械楚峙議短嗤兆忖議液淫
Swift議液淫燕器塀啜嗤酒準議欠鯉?旺皇潜壓械需魁尚嶄參糞孖囂隈單晒?麼勣單晒泌和?
- 旋喘貧和猟容僅歌方才卦指峙窃侏
- 汽燕器塀?single-expression?液淫辛參福待 return 購囚忖
- 歌方兆各酒亟
- Trailing 液淫囂隈
液淫燕器塀
廼耗痕方頁匯嶽壓熟鹸墫痕方嶄圭宴序佩凋兆才協吶徭淫根旗鷹庁翠議圭塀。 輝隼?嗤扮昨廱亟弌派議短嗤頼屁協吶才凋兆議窃痕方潤更匆頁載嗤喘侃議?喩凪頁壓侃尖匯乂痕方旺俶勣繍総翌匯乂痕方恬葎乎痕方議歌方扮。液淫燕器塀頁匯嶽旋喘酒準囂隈更秀坪選液淫議圭塀。 液淫燕器塀戻工阻匯乂囂隈單晒?聞誼廱亟液淫延誼酒汽苧阻。 和中液淫燕器塀議箭徨宥狛聞喘叱肝亨旗婢幣阻 sort 痕方協吶才囂隈單晒議圭塀。 耽匯肝亨旗脅喘厚酒準議圭塀宙峰阻屢揖議孔嬬。
sort 痕方
Swift 炎彈垂戻工阻 sort 痕方?氏功象艇戻工議電會液淫繍厮岑窃侏方怏嶄議峙序佩電會。 匯稀電會頼撹?痕方氏卦指匯倖嚥圻方怏寄弌屢揖議仟方怏?乎方怏嶄淫根厮将屎鳩電會議揖窃侏圷殆。和中議液淫燕器塀幣箭聞喘 sort 痕方斤匯倖 String 窃侏議方怏序佩忖銚剃會電會?參和頁兜兵方怏峙?
let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]電會痕方嗤曾倖歌方?
- 厮岑窃侏峙議方怏。
- 匯倖液淫?寡喘屢揖窃侏議方怏議坪否議曾倖歌方?旺卦指匯倖下櫛峙栖燕幣頁倦繍及匯倖峙壓電會扮慧欺及屈倖峙議念中賜頁朔中。泌惚及匯倖峙哘乎竃孖及屈倖峙岻念?液淫俶勣卦指true?倦夸卦指false。
乎箭徨斤匯倖 String 窃侏議方怏序佩電會?咀緩電會液淫俶葎 (String, String) -> Bool 窃侏議痕方。
戻工電會液淫議匯嶽圭塀頁廱亟匯倖憲栽凪窃侏勣箔議噸宥痕方?旺繍凪恬葎 sort 痕方議及屈倖歌方勧秘?
func backwards(s1: String, s2: String) -> Bool {
return s1 > s2
}
var reversed = sort(names, backwards)
// reversed is equal to ["Ewa", "Daniella", "Chris", "Barry", "Alex"]
泌惚及匯倖忖憲堪 (s1) 寄噐及屈倖忖憲堪 (s2)?backwards 痕方夸卦指 true?燕幣壓仟議方怏嶄 s1 哘乎竃孖壓 s2 念。 忖憲嶄議 "寄噐" 燕幣 "梓孚忖銚乏會朔竃孖"。 宸吭龍彭忖銚 "B" 寄噐忖銚 "A", 忖憲堪 "Tom" 寄噐忖憲堪 "Tim"。 凪繍序佩忖銚剃會電會?"Barry" 繍氏電壓 "Alex" 岻朔,匯肝窃容。隼遇?宸頁匯倖屢輝庇海議圭塀?云嵎貧峪頁亟阻匯倖汽燕器塀痕方 (a > b)。 壓和中議箭徨嶄?旋喘液栽燕器塀囂隈辛參厚挫議更夛匯倖坪選電會液淫。
液淫燕器塀囂隈
液淫燕器塀囂隈嗤泌和匯違侘塀?
{ (parameters) -> returnType in
statements
}
液淫燕器塀囂隈辛參聞喘械楚、延楚才 inout 窃侏恬葎歌方?徽音戻工潮範峙。 匆辛參壓歌方双燕議恷朔聞喘辛延歌方。圷怏匆辛參恬葎歌方才卦指峙。和中議箭徨婢幣阻岻念 backwards 痕方斤哘議液淫燕器塀井云議旗鷹?
reversed = sort(names, { (s1: String, s2: String) -> Bool in
return s1 > s2
})
俶勣廣吭議頁坪選液淫歌方才卦指峙窃侏蕗苧嚥 backwards 痕方窃侏蕗苧屢揖。 壓宸曾嶽圭塀嶄?脅亟撹阻 (s1: String, s2: String) -> Bool窃侏。 隼遇壓坪選液淫燕器塀嶄?痕方才卦指峙窃侏脅亟壓寄凄催坪?遇音頁寄凄催翌。液淫議痕方悶何蛍喇購囚忖 in 哈秘。 乎購囚忖燕幣液淫議歌方才卦指峙窃侏協吶厮将頼撹?液淫痕方悶軸繍蝕兵。
咀葎宸倖液淫議痕方悶何蛍泌緩玉參崛噐辛參繍凪個亟撹匯佩旗鷹?
reversed = sort(names, { (s1: String, s2: String) -> Bool in return s1 > s2 } )
宸傍苧 sort 痕方議屁悶距喘隠隔音延?匯斤垈凄催挽隼淫骨廖阻痕方嶄屁倖歌方鹿栽。遇凪嶄匯倖歌方孖壓延撹阻坪選液淫 (屢曳噐 backwards 井云議旗鷹)。功象貧和猟容僅窃侏
咀葎電會液淫頁恬葎痕方議歌方序佩勧秘議?Swift辛參容僅凪歌方才卦指峙議窃侏。 sort 豚李及屈倖歌方頁窃侏葎 (String, String) -> Bool 議痕方?咀緩糞縞貧 String, String 才 Bool 窃侏旺音俶勣恬葎液淫燕器塀協吶嶄議匯何蛍。 咀葎侭嗤議窃侏脅辛參瓜屎鳩容僅?卦指収遊 (->) 才 律汎壓歌方巓律議凄催匆辛參瓜福待?
reversed = sort(names, { s1, s2 in return s1 > s2 } )
糞縞貧販採秤趨和?宥狛坪選液淫燕器塀更夛議液淫恬葎歌方勧弓公痕方扮?脅辛參容僅竃液淫議歌方才卦指峙窃侏?宸吭龍彭艇叱窄音俶勣旋喘頼屁鯉塀更夛販採坪選液淫。隼遇?低匆辛參聞喘苧鳩議窃侏?泌惚低?万閲窒響宀堋響辛嬬贋壓議灘吶?宸劔珊頁峙誼皇潜議。宸倖電會痕方箭徨?液淫議朕議頁載苧鳩議?軸電會瓜紋算?遇拝斤響宀栖傍辛參芦畠議邪譜液淫辛嬬氏聞喘忖憲堪峙,咀葎万屎亅廁匯倖忖憲堪方怏序佩電會。
汽佩燕器塀液淫辛參福待 return
汽佩燕器塀液淫辛參宥狛咨茄 return 購囚忖栖咨塀卦指汽佩燕器塀議潤惚?泌貧井云議箭徨辛參個亟葎?
reversed = sort(names, { s1, s2 in s1 > s2 } )
壓宸倖箭徨嶄?sort 痕方議及屈倖歌方痕方窃侏苧鳩阻液淫駅倬卦指匯倖 Bool 窃侏峙。 咀葎液淫痕方悶峪淫根阻匯倖汽匯燕器塀 (s1 > s2)?乎燕器塀卦指 Bool 窃侏峙?咀緩宸戦短嗤灘吶?return購囚忖辛參福待。歌方兆酒亟
Swift 徭強葎坪選痕方戻工阻歌方兆各酒亟孔嬬?艇辛參岷俊宥狛 0,ドル1,ドル2ドル吉兆忖栖哈喘議液淫議歌方議峙。泌惚艇壓液淫燕器塀嶄聞喘歌方兆各酒亟?艇辛參壓液淫歌方双燕嶄福待斤凪議協吶?旺拝斤哘歌方兆各酒亟議窃侏氏宥狛痕方窃侏序佩容僅。 in 購囚忖匆揖劔辛參瓜福待?咀葎緩扮液淫燕器塀頼畠喇液淫痕方悶更撹?
reversed = sort(names, { 0ドル > 1ドル } )
壓宸倖箭徨嶄?0ドル 才 1ドル 燕幣液淫嶄及匯倖才及屈倖 String 窃侏議歌方。塰麻憲痕方
糞縞貧珊嗤匯嶽厚酒玉議圭塀栖廱亟貧中箭徨嶄議液淫燕器塀。 Swift議 String 窃侏協吶阻購噐寄噐催 (>) 議忖憲堪糞孖?斑凪恬葎匯倖痕方俊鞭曾倖 String 窃侏議歌方旺卦指 Bool 窃侏議峙。 遇宸屎挫嚥 sort 痕方議及屈倖歌方俶勣議痕方窃侏屢憲栽。 咀緩?艇辛參酒汽仇勧弓匯倖寄噐催?Swift辛參徭強容僅竃艇?聞喘寄噐催議忖憲堪痕方糞孖?reversed = sort(names, >)厚謹購噐塰麻憲燕器塀議坪否萩臥心 Operator Functions 。
Trailing 液淫
泌惚艇俶勣繍匯倖載海議液淫燕器塀恬葎恷朔匯倖歌方勧弓公痕方?辛參聞喘 trailing 液淫栖奐膿痕方議辛響來。Trailing 液淫頁匯倖慕亟壓痕方凄催岻翌(岻朔)議液淫燕器塀?痕方屶隔繍凪恬葎恷朔匯倖歌方距喘。
func someFunctionThatTakesAClosure(closure: () -> ()) {
// 痕方悶何蛍
}
// 參和頁音聞喘 trailing 液淫序佩痕方距喘
someFunctionThatTakesAClosure({
// 液淫麼悶何蛍
})
// 參和頁聞喘 trailing 液淫序佩痕方距喘
someFunctionThatTakesAClosure() {
// 液淫麼悶何蛍
}
廣吭?泌惚痕方峪俶勣液淫燕器塀匯倖歌方?輝艇聞喘 trailing 液淫扮?艇封崛辛參委 () 福待渠。 NOTE壓貧箭嶄恬葎 sort 痕方歌方議忖憲堪電會液淫辛參個亟葎?
reversed = sort(names) { 0ドル > 1ドル }
輝液淫掲械海參崛噐音嬬壓匯佩嶄序佩慕亟扮?Trailing 液淫祥延誼掲械嗤喘。 訟箭栖傍?Swift 議 Array 窃侏嗤匯倖 map 圭隈?凪資函匯倖液淫燕器塀恬葎凪率匯歌方。 方怏嶄議耽匯倖圷殆距喘匯肝乎液淫痕方?旺卦指乎圷殆侭啌符議峙(匆辛參頁音揖窃侏議峙)。 醤悶議啌符圭塀才卦指峙窃侏喇液淫栖峺協。輝戻工公方怏液淫痕方朔?map 圭隈繍卦指匯倖仟議方怏?方怏嶄淫根阻嚥圻方怏匯匯斤哘議啌符朔議峙。
和箭初府阻泌採壓 map 圭隈嶄聞喘 trailing 液淫繍 Int 窃侏方怏 [16,58,510] 廬算葎淫根斤哘 String 窃侏議方怏 ["OneSix", "FiveEight", "FiveOneZero"]:
let digitNames = [ 0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine" ] let numbers = [16, 58, 510]貧中議旗鷹幹秀阻屁方方忖欺麿断議哂猟兆忖岻寂啌符忖灸。 揖扮協吶阻匯倖彈姥廬算葎忖憲堪議屁侏方怏。
艇孖壓辛參宥狛勧弓匯倖 trailing 液淫公 numbers 議 map 圭隈栖幹秀斤哘議忖憲堪井云方怏。 俶勣廣吭議扮距喘 numbers.map音俶勣壓 map 朔中淫根販採凄催?咀葎峪俶勣勧弓液淫燕器塀宸匯倖歌方?旺拝乎液淫燕器塀歌方宥狛 trailing 圭塀序佩廱亟?
let strings = numbers.map {
(var number) -> String in
var output = ""
while number > 0 {
output = digitNames[number % 10]! + output
number /= 10
}
return output
}
// strings 械楚瓜容僅葎忖憲堪窃侏方怏?軸 String[]
// 凪峙葎 ["OneSix", "FiveEight", "FiveOneZero"]
map 壓方怏嶄葎耽匯倖圷殆距喘阻液淫燕器塀。 艇音俶勣峺協液淫議補秘歌方 number 議窃侏?咀葎辛參宥狛勣啌符議方怏窃侏序佩容僅。液淫 number 歌方瓜蕗苧葎匯倖延楚歌方 (延楚議醤悶宙峰萩歌心Constant and Variable Parameters)?咀緩辛參壓液淫痕方悶坪斤凪序佩俐個。 液淫燕器塀崙協阻卦指峙窃侏葎 String?參燕苧贋刈啌符峙議仟方怏窃侏葎 String。
液淫燕器塀壓耽肝瓜距喘議扮昨幹秀阻匯倖忖憲堪旺卦指。 凪聞喘箔噫塰麻憲 (number % 10) 柴麻恷朔匯了方忖旺旋喘digitNames 忖灸資函侭啌符議忖憲堪。
廣吭?忖灸 digitNames 和炎朔効彭匯倖名催 (!)?咀葎忖灸和炎卦指匯倖辛僉峙 (optional value)?燕苧軸聞乎 key音贋壓匆音氏臥孀払移。 壓貧箭嶄?万隠屬阻 number % 10 辛參悳頁恬葎匯倖 digitNames 忖灸議嗤丼和炎 key。 咀緩名催辛參喘噐膿婢蝕 (force-unwrap) 贋刈壓辛僉和炎?嶄議 String 窃侏峙。貫 digitNames 忖灸嶄資函議忖憲堪瓜耶紗欺補竃議念何?剃會秀羨阻匯倖忖憲堪井云議方忖。 (壓燕器塀 number % 10嶄?泌惚number葎16?夸卦指6?58卦指8?510卦指0)。
number 延楚岻朔茅參10。 咀葎凪頁屁方?壓柴麻狛殻嶄隆茅勝何蛍瓜策待。 咀緩 16延撹阻1?58延撹阻5?510延撹阻51。
屁倖狛殻嶷鹸序佩?岷欺 number /= 10 葎0?宸扮液淫氏繍忖憲堪補竃?遇map痕方夸氏繍忖憲堪耶紗欺侭啌符議方怏嶄。
貧箭嶄 trailing 液淫囂隈壓痕方朔屁準撃廾阻醤悶議液淫孔嬬?遇音壅俶勣繍屁倖液淫淫骨壓 map 痕方議凄催坪。
俺資 (Caputure)
液淫辛參壓凪協吶議貧和猟嶄俺資械楚賜延楚。 軸聞協吶宸乂械楚才延楚議圻恬喘囃厮将音贋壓?液淫挽隼辛參壓液淫痕方悶坪哈喘才俐個宸乂峙。Swift恷酒汽議液淫侘塀頁廼耗痕方?匆祥頁協吶壓凪麿痕方悶坪議痕方。 廼耗痕方辛參俺資凪翌何痕方侭嗤議歌方參式協吶議械楚才延楚。
和箭葎匯倖出恂 makeIncrementor 議痕方?凪淫根阻匯倖出恂 incrementor 廼耗痕方。 廼耗痕方 incrementor 貫貧和猟嶄俺資阻曾倖峙?runningTotal 才 amount。 岻朔 makeIncrementor 繍 incrementor 恬葎液淫卦指。 耽肝距喘 incrementor 扮?凪氏參 amount 恬葎奐楚奐紗 runningTotal 議峙。
func makeIncrementor(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
func incrementor() -> Int {
runningTotal += amount
return runningTotal
}
return incrementor
}
makeIncrementor 卦指窃侏葎 () -> Int。 宸吭龍彭凪卦指議頁匯倖痕方?遇音頁匯倖酒汽窃侏峙。 乎痕方壓耽肝距喘扮音俊鞭歌方峪卦指匯倖 Int 窃侏議峙。 購噐痕方卦指凪麿痕方議坪否?萩臥心Function Types as Return Types。makeIncrementor 痕方協吶阻匯倖屁侏延楚 runningTotal (兜兵葎0) 喘栖贋刈輝念奐紗悳方。 乎峙宥狛 incrementor 卦指。
makeIncrementor 嗤匯倖 Int 窃侏議歌方?凪翌何凋兆葎 forIncrement? 坪何凋兆葎 amount?燕幣耽肝 incrementor 瓜距喘扮runningTotal 繍勣奐紗議楚。
incrementor 痕方喘栖峇佩糞縞議奐紗荷恬。 乎痕方酒汽仇聞 runningTotal 奐紗 amount?旺繍凪卦指。
泌惚厘断汽鏡心宸倖痕方?氏窟孖心貧肇音揖儖械?
func incrementor() -> Int {
runningTotal += amount
return runningTotal
}
incrementor 痕方旺短嗤資函販採歌方?徽頁壓痕方悶坪恵諒阻 runningTotal 才 amount 延楚。宸頁咀葎凪宥狛俺資壓淫根万議痕方悶坪厮将贋壓議 runningTotal 才 amount 延楚遇糞孖。喇噐短嗤俐個 amount 延楚?incrementor 糞縞貧俺資旺贋刈阻乎延楚議匯倖険云?遇乎険云昧彭 incrementor 匯揖瓜贋刈。
隼遇?咀葎耽肝距喘乎痕方議扮昨脅氏俐個 runningTotal 議峙?incrementor 俺資阻輝念 runningTotal 延楚議哈喘?遇音頁叙叙鹸崙乎延楚議兜兵峙。俺資匯倖哈喘隠屬阻輝 makeIncrementor 潤崩扮昨旺音氏嶧払?匆隠屬阻輝和匯肝峇佩 incrementor 痕方扮?runningTotal 辛參写偬奐紗。
廣吭?Swift 氏畳協俺資哈喘珊頁申唄峙。 艇音俶勣炎廣 amount 賜宀 runningTotal 栖蕗苧壓廼秘議 incrementor 痕方嶄議聞喘圭塀。 Swift 揖扮匆侃尖 runingTotal 延楚議坪贋砿尖荷恬?泌惚音壅瓜 incrementor 痕方聞喘?夸氏瓜賠茅。和中葎匯倖聞喘 makeIncrementor 議箭徨?
let incrementByTen = makeIncrementor(forIncrement: 10)乎箭徨協吶阻匯倖出恂 incrementByTen 議械楚?乎械楚峺?匯倖耽肝距喘氏紗10議 incrementor 痕方。 距喘宸倖痕方謹肝辛參誼欺參和潤惚?
incrementByTen() // 卦指議峙葎10 incrementByTen() // 卦指議峙葎20 incrementByTen() // 卦指議峙葎30泌惚艇幹秀阻総匯倖 incrementor?凪氏嗤匯倖奉噐徭失議鏡羨議 runningTotal 延楚議哈喘。 和中議箭徨嶄?incrementBySevne 俺資阻匯倖仟議 runningTotal 延楚?乎延楚才 incrementByTen 嶄俺資議延楚短嗤販採選狼?
let incrementBySeven = makeIncrementor(forIncrement: 7) incrementBySeven() // 卦指議峙葎7 incrementByTen() // 卦指議峙葎40
廣吭?泌惚艇液淫蛍塘公匯倖窃糞箭議奉來?旺拝乎液淫宥狛峺?乎糞箭賜凪撹埀栖俺資阻乎糞箭?艇繍幹秀匯倖壓液淫才糞箭寂議膿哈喘桟。 Swift 聞喘俺資双燕栖嬉篤宸嶽膿哈喘桟。厚謹佚連?萩歌深 Strong Reference Cycles for Closures。
液淫頁哈喘窃侏
貧中議箭徨嶄?incrementBySeven 才 incrementByTen 頁械楚?徽頁宸乂械楚峺?議液淫挽隼辛參奐紗凪俺資議延楚峙。 宸頁咀葎痕方才液淫脅頁哈喘窃侏。涙胎艇繍痕方/液淫験峙公匯倖械楚珊頁延楚?艇糞縞貧脅頁繍械楚/延楚議峙譜崔葎斤哘痕方/液淫議哈喘。 貧中議箭徨嶄?incrementByTen 峺?液淫議哈喘頁匯倖械楚?遇旺掲液淫坪否云附。
宸匆吭龍彭泌惚艇繍液淫験峙公阻曾倖音揖議械楚/延楚?曾倖峙脅氏峺?揖匯倖液淫?
let alsoIncrementByTen = incrementByTen alsoIncrementByTen() // 卦指議峙葎50
<貧匯准
和匯准>