遍匈 / Swift / Swift縮殻 /

Swift圭隈

<貧匯准 和匯准>
圭隈頁喇蒙協窃侏購選軟栖議痕方。窃、潤更悶才旦訟脅嬬協吶撹糞箭圭隈。万撃廾阻蒙協議販暦才公協窃侏議糞箭議孔嬬痕方。窃?潤更悶才圭隈匆嬬協吶窃侏圭隈?万峪嚥窃侏議云附喇購選。窃侏圭隈才Objective-C議窃圭隈窃貌。

糞縞貧?Swift嚥C才Objective-C議麼勣曝艶祥頁潤更悶才旦訟辛參協吶圭隈。壓Objective-C嶄?峪嗤窃嘉嬬協吶圭隈。遇壓Swift嶄?低辛參嗤僉夲來議壓窃、潤更悶賜旦訟嶄協吶圭隈?旺拝聞誼壓低幹秀議窃嶄協吶圭隈扮厚醤嗤痩試來。

糞箭圭隈

糞箭圭隈頁奉噐匯倖蒙協議窃、潤更悶賜旦訟議糞箭議痕方?痕方頁糞箭議屶庠?宥狛戻工恵諒糞箭奉來才俐個糞箭奉來議圭隈?賜狛狛戻工屢購糞箭孔嬬議朕議。糞箭圭隈才痕方嗤屢揖議囂隈?祥崧孔嬬議宙峰。

低亟匯倖揮嗤蝕才液議糞箭圭隈恬葎万議侭奉窃侏?匯倖糞箭圭隈醤嗤咨塀恵諒侭嗤凪麿議糞箭圭隈才奉來窃侏。匯倖糞箭圭隈峪嬬瓜万侭奉議窃議蒙協糞箭距喘。音嬬咀葎短嗤孖嗤議糞箭才委溝羨。

宸戦協吶阻匯倖酒汽議Counter窃?万辛參喘栖柴麻匯倖荷恬窟伏議肝方?
class Counter {
 var count = 0
 func increment() {
 count++
 }
 func incrementBy(amount: Int) {
 count += amount
 }
 func reset() {
 count = 0
 }
}
Counter窃戦協吶阻眉倖糞箭圭隈?
  • increment 柴方匂奐楚紗1
  • incrementBy(amount: Int)柴方匂喇蒙協議屁方恬葎奐楚
  • reset 嶷崔柴方匂議峙葎0

乎Counter窃匆協吶阻匯倖奉來延楚count ,喘栖略隔輝念柴方匂議峙議轟祇。 低距喘糞箭圭隈才奉來扮議囂隈醤嗤屢揖泣?
let counter = Counter()
// the initial counter value is 0 counter.increment()
// the counter's value is now 1
counter.incrementBy(5)
// the counter's value is now 6
counter.reset()
// the counter's value is now 0

圭隈議蕉何才翌何歌方兆

痕方議歌方辛參啜嗤匯倖蕉何兆各?壓痕方悶坪聞喘?才匯倖翌何兆各?壓距喘痕方扮聞喘??恬葎翌何歌方兆議宙峰。圭隈議歌方匆頁泌緩?咀葎圭隈頁嚥窃侏屢購議痕方。隼遇?蕉何兆各才翌何兆各議潮範佩葎頁音揖噐痕方才圭隈議。

壓Swift嶄圭隈屢斤嚥Objective-C嶄議圭隈掲械屢貌?壓Objective-C嶄才壓Swift嶄議圭隈兆議及匯倖歌方聞喘初簡恬葎歌深?賜辛參宥狛念中議Counter窃議箭徨議incrementBy圭隈辛參心竃栖。聞喘阻匯倖辛喘議初簡宴噐距喘扮祥崧壓堋響鞘徨匯劔圭宴。Swift聞喘宸嶽厮崙協議凋兆圭隈聞誼壓慕亟扮厚酒汽?距喘圭隈扮聞喘潮範余抄曳聞喘痕方歌方厚酒準。

醤悶栖傍?Swift壓圭隈嶄潮範議繍及匯倖歌方兆恬葎圭隈議蕉何歌方兆?匆潮範議功象蕉何歌方才翌何歌方兆肇公及屈倖才朔偬議歌方凋兆。壓低慕亟Objective-c圭隈扮載母呂宸嶽灸侏議凋兆巷埃才距喘埃協?旺聞歌方兆各厚憲栽低議距喘圭隈議燕器。

聾?和宸倖紋旗井云議Counter窃?万協吶阻匯倖厚鹸墫議incrementBy圭隈?
class Counter {
 var count: Int = 0
 func incrementBy(amount: Int, numberOfTimes: Int) {
 count += amount * numberOfTimes
 } 
}
宸倖incrementBy圭隈嗤曾倖歌方?amount 才 numberOfTimes.潮範秤趨和?Swift繍amount篇葎率匯議蕉何兆各?徽繍numberOfTimes揖扮篇葎蕉何兆各才翌何兆各。距喘圭隈泌和?
let counter = Counter()
counter.incrementBy(5, numberOfTimes: 3)
// counter value is now 15
低音俶勣葎及匯倖歌方議峙遇肇協吶匯倖翌何歌方兆?咀葎麿議朕議頁苧鳩incrementBy痕方議兆各。遇及屈倖歌方兆夸頁喇翌何歌方兆各序佩尫協?聞圭隈瓜距喘扮議朕議厚葎苧鳩。

泌惚低壓numberOfTimes歌方念亟阻匯倖柊双憲催????宸嶽佩葎夸頁嗤丼議潮範侃尖圭隈?
func incrementBy(amount: Int, #numberOfTimes: Int) {
 count += amount * numberOfTimes
}
貧中宙峰議潮範佩葎頁峺?壓Swift嶄協吶圭隈扮聞喘才Objective-c屢揖囂隈欠鯉慕亟?瓜各岻葎徭隼議燕器圭塀。

圭隈議翌何歌方兆各俐蔑佩葎

嗤扮葎圭隈議及匯倖歌方戻工匯倖翌何歌方兆頁掲械嗤喘議。勝砿宸音頁潮範議佩葎。低辛參耶紗匯倖低徭失苧鳩議翌何兆各?賜宀低匆辛參聞喘蕉何兆各恬葎翌何兆各旺壓歌方兆念紗匯倖柊双憲催恬葎歌方兆議念弸。

屢郡議?泌惚低音?葎匯倖圭隈議及屈倖歌方賜朔偬歌方戻工翌何歌方兆?辛宥狛聞喘和皿?憲催?_?恬葎乎歌方議?塋粛皺寝諒鏆?得憾恩把h椀侘Ą?

self 奉來

耽匯倖窃侏議糞箭脅嗤匯倖各葎 self 議咨塀奉來?万頁頼畠吉揖噐乎糞悶云附議。低辛參聞喘宸倖咨塀議self奉來咬喘輝念糞箭議糞箭圭隈。

壓貧中議箭徨嶄?increment圭隈匆辛參亟撹宸劔?
func increment() {
 self.count++
}
壓糞樹嶄?低音俶勣載将械議壓旗鷹嶄慕亟self?輝低聞喘阻匯倖厮岑議奉來賜圭隈兆議圭隈扮?泌惚低短喘苧鳩亟self?Swift氏邪譜低頁峺輝念糞箭議奉來賜圭隈。Counter窃戦議眉倖聞喘阻count?遇音頁self.count?糞箭圭隈祥屬苧阻宸倖邪譜。

麼勣議呟械窟伏壓匯倖糞箭圭隈議歌方兆才糞箭議奉來兆屢揖。壓宸嶽秤趨和?歌方兆單枠?嗤駅勣歌深奉來厚謹議栽鯉圭塀。低辛參聞喘咨塀議self奉來曝蛍歌方兆才奉來兆。

壓宸戦?聞喘阻self栖曝蛍兆各揖葎x議圭隈歌方才匯倖糞箭奉來:
struct Point {
 var x = 0.0, y = 0.0
 func isToTheRightOfX(x: Double) -> Bool {
 return self.x > x
 }
}
let somePoint = Point(x: 4.0, y: 5.0)
if somePoint.isToTheRightOfX(1.0) {
 println("This point is to the right of the line where x == 1.0")
}
// prints "This point is to the right of the line where x == 1.0"
短嗤self議念弸?Swift繍邪譜万断聞喘議 x 脅頁圭隈議歌方x.

俐個峙窃侏議糞箭圭隈

潤更悶才旦訟脅頁峙窃侏。潮範秤趨和?峙窃侏議奉來音嬬貫万議坪何糞箭圭隈俐個。

隼遇?泌惚低俶勣俐個低議潤更悶賜旦訟議奉來壓匯倖蒙協議圭隈嶄?低辛參壓宸倖圭隈嶄僉夲紗秘延呟佩葎。隼朔乎圭隈辛參延呟?軸個延?万議奉來?販採議厚個壓圭隈潤崩扮亟指圻栖議潤更戦。乎圭隈珊辛參蛍塘匯倖仟議糞箭欺凪咨根議self奉來?遇宸倖仟議糞箭繍函旗孖嗤議糞箭?輝乎圭隈潤崩扮。

低辛參紗秘宸倖佩葎?宥狛繍mutating購囚忖亟壓圭隈議func購囚忖念?
struct Point {
 var x = 0.0, y = 0.0 mutating func moveByX(deltaX: Double, y deltaY: Double) { x += deltaX y += deltaY }
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveByX(2.0, y: 3.0)
println("The point is now at ((somePoint.x), (somePoint.y))")
// prints "The point is now at (3.0, 4.0)"
貧中議Point潤更悶協吶阻匯倖延呟議moveByX圭隈?万宥狛匯協楚卞強匯倖Point糞箭。遇音頁卦指匯倖仟議泣?宸倖圭隈糞縞貧俐個阻壓凪貧距喘議泣。mutating購囚忖耶紗欺圭隈議協吶貧?聞万嬬校俐個万議奉來。

萩廣吭?低音嬬聞喘匯倖械楚議潤更窃侏肇距喘延呟圭隈?咀葎万議奉來音嬬瓜個延。軸聞万断聞辛延議奉來?泌械楚潤更悶糞箭議贋刈奉來議宙峰?
let fixedPoint = Point(x: 3.0, y: 3.0)
fixedPoint.moveByX(2.0, y: 3.0)
// this will report an error

喇延呟圭隈蛍塘self

延呟圭隈辛參蛍塘匯倖畠仟議糞箭公咨塀議self奉來。貧中侭幣議Point箭徨匆辛參啾和中議圭塀栖紋旗?
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)
 }
}
moveByX圭隈議mutating 井云幹秀阻匯倖畠仟議潤更悶?旺繍x才y議峙譜崔欺朕炎了崔。距喘宸倖井云議圭隈議恷嶮卦指潤惚才距喘岻念井云議潤惚頼畠匯劔。

旦訟議延呟圭隈辛參壓揖匯倖旦訟戦葎咨塀議self譜崔音揖議峙?
enum TriStateSwitch {
 case Off, Low, High mutating func next() {
 switch self {
 case Off:
 self = Low
 case Low:
 self = High
 case High:
 self = Off
 }
 }
}
var ovenLight = TriStateSwitch.Low
ovenLight.next()
// ovenLight is now equal to .High
ovenLight.next()
// ovenLight is now equal to .Off
宸倖箭徨協吶阻匯倖醤嗤眉嶽彜蓑工僉夲議旦訟。耽匯肝万議next圭隈瓜距喘? 眉嶽音揖議窮坿彜蓑?Off,Low才High?岻寂儉桟僉夲。

窃侏圭隈

泌貧侭峰?糞箭圭隈頁喇匯倖蒙協窃侏議糞箭距喘議圭隈。低珊辛參協吶喇窃侏徭附距喘議圭隈。宸嶽圭隈瓜各葎窃侏圭隈。低辛參宥狛壓func 購囚忖念亟貧class 購囚忖栖蕗苧窃議窃侏圭隈?遇壓潤更悶賜旦訟坪協吶窃侏圭隈夸俶壓func購囚忖念慕亟static 購囚忖栖蕗苧。

廣吭?壓Objective-C嶄?低峪嬬葎Objective-C窃協吶窃侏雫圭隈。壓Swift嶄?低辛參葎窃、潤更悶才旦訟協吶窃侏雫圭隈。耽嶽窃侏圭隈喇万議窃侏栖苧鳩袈律議。


窃侏圭隈議距喘囂隈才糞箭圭隈議距喘圭隈載崧。徽頁?低峪嬬宥狛窃栖距喘窃侏圭隈?遇音頁宥狛宸倖窃議糞箭栖距喘。宸隅嗤匯倖出恂SomeClass議窃葎艇婢幣阻泌採距喘匯倖窃侏圭隈?
class SomeClass {
 class func someTypeMethod() {
 // type method implementation goes here
 }
}
SomeClass.someTypeMethod()
壓窃侏圭隈悶坪?咨塀議self奉來哈喘窃侏云附?遇音頁乎窃侏議匯倖糞箭。斤噐 潤更悶才旦訟?宸吭龍彭低辛參聞喘self栖嶧茅床蓑低荷恬床蓑奉來、床蓑圭隈歌方才糞箭奉來才糞箭圭隈歌方議灘吶。

厚葎噸演議頁?低壓匯倖窃侏圭隈悶坪聞喘販採音栽鯉議圭隈才奉來兆各万脅繍哈喘凪万窃侏雫議圭隈才奉來。匯倖窃侏圭隈辛參宥狛凪万議圭隈兆栖距喘総匯倖窃侏圭隈?遇音俶勣葎窃侏兆紗念弸。揖劔?潤更悶才旦訟議窃侏圭隈匆嬬宥狛聞喘床蓑奉來兆恵諒床蓑奉來?遇音俶勣窃侏兆恂念弸。

和中議箭徨協吶阻匯倖兆葎LevelTracker潤更悶?万宥狛嗄老議音揖雫艶賜竣粁効忸螺社議序化。宸頁匯倖汽繁嗄老?徽辛參壓匯倖譜姥貧葎謹倖螺社贋刈佚連。輝嗄老及匯肝螺扮侭嗤議雫艶脅瓜貧迄?茅阻及匯雫?。耽輝匯倖螺社頼撹匯倖雫艶?乎雫艶繍斤譜姥貧議侭嗤螺社盾迄。乎LevelTracker潤更悶寡喘床蓑奉來才圭隈栖効忸嗄老議椎乂雫艶瓜盾迄。万珊効忸輝念雫艶議倖艶螺社邦峠。
struct LevelTracker {
static var highestUnlockedLevel = 1
static func unlockLevel(level: Int) {
 if level > highestUnlockedLevel { highestUnlockedLevel = level }
}
static func levelIsUnlocked(level: Int) -> Bool {
 return level <= highestUnlockedLevel
}
var currentLevel = 1
mutating func advanceToLevel(level: Int) -> Bool {
 if LevelTracker.levelIsUnlocked(level) {
 currentLevel = level
 return true
 } else {
 return false
 }
}
}
乎LevelTracker潤更悶効嶄販採螺社侭盾迄議恷互議雫艶。宸倖峙瓜贋刈壓匯倖兆葎highestUnlockedLevel議床蓑奉來戦。

LevelTracker珊協吶阻曾倖窃侏痕方葎highestUnlockedLevels垢恬。遍枠扮匯倖出unlockLevel議痕方?減夭輝匯倖仟議雫艶瓜盾迄扮肇厚仟highestUnlockedLevel議峙。及屈倖頁匯倖宴旋議levelIsUnlocked窃侏痕方,輝匯倖蒙協議雫艶瓜盾迄?万卦指true。?廣吭?宸乂窃侏圭隈辛參恵諒highestUnlockedLevel床蓑奉來?低音俶勣委万亟撹LevelTracker.highestUnlockedLevel?

茅阻床蓑奉來才窃侏圭隈?LevelTracker嗄老宥狛匯倖currentLevel糞箭奉來栖弖忸耽倖汽倖螺社輝念屎壓螺議嗄老雫艶。

葎阻逸廁砿尖currentLevel奉來?LevelTracker協吶阻匯倖兆葎advanceToLevel議糞箭圭隈。壓厚仟currentLevel岻念?乎圭隈氏殊臥仟議嗄老雫艶頁倦厮将盾迄。advanceToLevel圭隈宥狛卦指匯倖bool峙栖峺幣頁倦嬬校譜崔currentLevel。

LevelTracker潤更悶瓜匯倖Player窃侭聞喘?泌和侭幣?弖忸才厚仟汽倖螺社議序業?
class Player {
 var tracker = LevelTracker()
 let playerName: String
 func completedLevel(level: Int) {
 LevelTracker.unlockLevel(level + 1)
 tracker.advanceToLevel(level + 1)
 }
 init(name: String) {
 playerName = name
 }
}
Player窃幹秀阻匯倖LevelTracker議仟糞箭喘栖効忸螺社議序業。万匆戻工阻匯倖兆葎completedLevel圭隈?耽輝螺社頼撹匯倖蒙協議雫艶扮瓜距喘。宸倖圭隈氏葎侭嗤螺社盾迄匯倖仟議吉雫才厚仟螺社議序業?旺繍万断揮秘欺匯倖仟議雫艶戦。?advanceToLevel卦指議bool峙繍瓜策待?咀葎壓貧匯佩LevelTracker.unlockLevel瓜距喘扮?乎吉雫議瓜盾迄厮将頁厮岑議阻?

低辛參宥狛Player窃幹秀匯倖仟議螺社糞箭?心心輝螺社頼撹匯倖雫艶氏窟伏焚担?
var player = Player(name: "Argyrios")
player.completedLevel(1)
println("highest unlocked level is now (LevelTracker.highestUnlockedLevel)")
// prints "highest unlocked level is now 2"
泌惚低幹秀阻及屈倖螺社?飛低?序秘欺匯倖販採匯倖螺社脅短嬬盾迄議嗄老吉雫嶄?編夕譜崔螺社議輝念吉雫払移?
player = Player(name: "Beto")
if player.tracker.advanceToLevel(6) {
 println("player is now on level 6")
} else {
 println("level 6 has not yet been unlocked")
}
// prints "level 6 has not yet been unlocked"
<貧匯准 和匯准>

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