遍匈 / Swift / Swift縮殻 /

Swift制婢

<貧匯准 和匯准>
制婢祥頁?匯倖厮嗤議窃、潤更悶賜旦訟窃侏耶紗仟孔嬬?functionality?。宸淫凄壓短嗤幡尫資函圻兵坿旗鷹議秤趨和制婢窃侏議嬬薦?軸剃?秀庁?。制婢才 Objective-C 嶄議蛍窃?categories?窃貌。?音狛嚥Objective-C音揖議頁?Swift 議制婢短嗤兆忖。?

Swift 嶄議制婢辛參?
  • 耶紗柴麻侏奉來才柴麻床蓑奉來
  • 協吶糞箭圭隈才窃侏圭隈
  • 戻工仟議更夛匂
  • 協吶和炎
  • 協吶才聞喘仟議廼耗窃侏
  • 聞匯倖厮嗤窃侏憲栽蝶倖俊笥

廣吭?泌惚低協吶阻匯倖制婢?匯倖厮嗤窃侏耶紗仟孔嬬?椎担宸倖仟孔嬬斤乎窃侏議侭嗤厮嗤糞箭嶄脅頁辛喘議?軸聞万断頁壓低議宸倖制婢議念中協吶議。

制婢囂隈

蕗苧匯倖制婢聞喘購囚忖extension?
extension SomeType {
 // 紗欺SomeType議仟孔嬬亟欺宸戦
}
匯倖制婢辛參制婢匯倖厮嗤窃侏?聞凪嬬校癖塘匯倖賜謹倖亅咏?protocol?。輝宸嶽秤趨窟伏扮?俊笥議兆忖哘乎頼畠梓孚窃賜潤更悶議兆忖議圭塀序佩慕亟?
extension SomeType: SomeProtocol, AnotherProctocol {
 // 亅咏糞孖亟欺宸戦
}
梓孚宸嶽圭塀耶紗議亅咏恆儉宀?protocol conformance?瓜各岻葎壓制婢嶄耶紗亅咏恆儉宀

柴麻侏奉來

制婢辛參?厮嗤窃侏耶紗柴麻侏糞箭奉來才柴麻侏窃侏奉來。和中議箭徨? Swift 議坪秀Double窃侏耶紗阻5倖柴麻侏糞箭奉來?貫遇戻工嚥鉦宣汽了亅恬議児云屶隔。
extension Double {
 var km: Double { return self * 1_000.0 }
 var m : Double { return self }
 var cm: Double { return self / 100.0 }
 var mm: Double { return self / 1_000.0 }
 var ft: Double { return self / 3.28084 }
}
let oneInch = 25.4.mm
println("One inch is \(oneInch) meters")
// 嬉咫補竃?"One inch is 0.0254 meters"
let threeFeet = 3.ft
println("Three feet is \(threeFeet) meters")
// 嬉咫補竃?"Three feet is 0.914399970739201 meters"
宸乂柴麻奉來燕器議根吶頁委匯倖Double侏議峙心恬頁蝶汽了和議海業峙。軸聞万断瓜糞孖葎柴麻侏奉來?徽宸乂奉來挽辛參俊匯倖揮嗤dot囂隈議検泣侏忖中峙?遇宸如如頁聞喘宸乂検泣侏忖中楚糞孖鉦宣廬算議圭塀。

壓貧峰箭徨嶄?匯倖Double侏議峙1.0瓜喘栖燕幣“1致”。宸祥頁葎焚担m柴麻侏奉來卦指self——燕器塀1.m瓜範葎頁柴麻1.0議Double峙。

凪万汽了夸俶勣匯乂廬算栖燕幣壓致和霞楚議峙。1認致吉噐1,000致?侭參km柴麻侏奉來勣委峙核參1_000.00栖廬晒撹汽了致和議方峙。窃貌仇?1致嗤3.28024哂樫?侭參ft柴麻侏奉來勣委斤哘議Double峙茅參3.28024栖糞孖哂樫欺致議汽了算麻。

宸乂奉來頁峪響議柴麻侏奉來?侭嗤貫酒深打万断音喘get購囚忖燕幣。万断議卦指峙頁Double侏?遇拝辛參喘噐侭嗤俊鞭Double議方僥柴麻嶄?
let aMarathon = 42.km + 195.m
println("A marathon is \(aMarathon) meters long")
// 嬉咫補竃?"A marathon is 42495.0 meters long"

廣吭?制婢辛參耶紗仟議柴麻奉來?徽頁音辛參耶紗贋刈奉來?匆音辛參?厮嗤奉來耶紗奉來鉱霞匂(property observers)。

更夛匂

制婢辛參?厮嗤窃侏耶紗仟議更夛匂。宸辛參斑低制婢凪万窃侏?繍低徭失議協崙窃侏恬葎更夛匂歌方?賜宀戻工乎窃侏議圻兵糞孖嶄短嗤淫根議駆翌兜兵晒僉?。

廣吭?泌惚低聞喘制婢?匯倖峙窃侏耶紗匯倖更夛匂?乎更夛匂?侭嗤議贋刈奉來戻工潮範峙?遇拝短嗤協吶販採協崙更夛匂?custom initializers??椎担斤噐栖徭低議制婢更夛匂嶄議峙窃侏?低辛參距喘潮範更夛匂(default initializers)才撹埀雫更夛匂(memberwise initializers)。 屎泌壓峙窃侏議更夛匂娩幡嶄宙峰議?泌惚低厮将委更夛匂亟撹峙窃侏圻兵糞孖議匯何蛍?貧峰号夸音壅癖喘。


和中議箭徨協吶阻匯倖喘噐宙峰叱採裳侘議協崙潤更悶Rect。宸倖箭徨揖扮協吶阻曾倖絹廁潤更悶Size才Point?万断脅委0.0恬葎侭嗤奉來議潮範峙?
struct Size {
 var width = 0.0, height = 0.0
}
struct Point {
 var x = 0.0, y = 0.0
}
struct Rect {
 var origin = Point()
 var size = Size()
}
咀葎潤更悶Rect戻工阻凪侭嗤奉來議潮範峙?侭參屎泌潮範更夛匂嶄宙峰議?万辛參徭強俊鞭匯倖潮範議更夛匂才匯倖撹埀雫更夛匂。宸乂更夛匂辛參喘噐更夛仟議Rect糞箭?
let defaultRect = Rect()
let memberwiseRect = Rect(origin: Point(x: 2.0, y: 2.0),
 size: Size(width: 5.0, height: 5.0))
低辛參戻工匯倖駆翌議聞喘蒙歩嶄伉泣才寄弌議更夛匂栖制婢Rect潤更悶?
extension Rect {
 init(center: Point, size: Size) {
 let originX = center.x - (size.width / 2)
 let originY = center.y - (size.height / 2)
 self.init(origin: Point(x: originX, y: originY), size: size)
 }
}
宸倖仟議更夛匂遍枠功象戻工議center才size峙柴麻匯倖栽癖議圻泣。隼朔距喘乎潤更悶徭強議撹埀更夛匂init(origin:size:)?乎更夛匂繍仟議圻泣才寄弌贋欺阻栽癖議奉來嶄?
let centerRect = Rect(center: Point(x: 4.0, y: 4.0),
 size: Size(width: 3.0, height: 3.0))
// centerRect議圻泣頁 (2.5, 2.5)?寄弌頁 (3.0, 3.0)

廣吭?泌惚低聞喘制婢戻工阻匯倖仟議更夛匂?低卆症嗤夭販隠屬更夛狛殻嬬校斑侭嗤糞箭頼畠兜兵晒。

圭隈

制婢辛參?厮嗤窃侏耶紗仟議糞箭圭隈才窃侏圭隈。和中議箭徨?Int窃侏耶紗匯倖兆葎repetitions議仟糞箭圭隈?
extension Int {
 func repetitions(task: () -> ()) {
 for i in 0..self {
 task()
 }
 }
}
宸倖repetitions圭隈聞喘阻匯倖() -> ()窃侏議汽歌方?single argument??燕苧痕方短嗤歌方遇拝短嗤卦指峙。

協吶乎制婢岻朔?低祥辛參斤販吭屁方距喘repetitions圭隈,糞孖議孔嬬夸頁謹肝峇佩蝶販暦?
3.repetitions({
 println("Hello!")
 })
// Hello!
// Hello!
// Hello!
辛參聞喘 trailing 液淫聞距喘厚紗酒準?
3.repetitions{
 println("Goodbye!")
}
// Goodbye!
// Goodbye!
// Goodbye!

俐個糞箭圭隈

宥狛制婢耶紗議糞箭圭隈匆辛參俐個乎糞箭云附。潤更悶才旦訟窃侏嶄俐個self賜凪奉來議圭隈駅倬繍乎糞箭圭隈炎廣葎mutating?屎泌栖徭圻兵糞孖議俐個圭隈匯劔。

和中議箭徨?Swift議Int窃侏耶紗阻匯倖仟議兆葎square議俐個圭隈?栖糞孖匯倖圻兵峙議峠圭柴麻?
extension Int {
 mutating func square() {
 self = self * self
 }
}
var someInt = 3
someInt.square()
// someInt 孖壓峙頁 9

和炎

制婢辛參?匯倖厮嗤窃侏耶紗仟和炎。宸倖箭徨?Swift坪秀窃侏Int耶紗阻匯倖屁侏和炎。乎和炎[n]卦指噴序崙方忖貫嘔?恣方議及n倖方忖

123456789[0]卦指9
123456789[1]卦指8
...吉吉
extension Int {
 subscript(digitIndex: Int) -> Int {
 var decimalBase = 1
 for _ in 1...digitIndex {
 decimalBase *= 10
 }
 return (self / decimalBase) % 10
 }
}
746381295[0]
// returns 5
746381295[1]
// returns 9
746381295[2]
// returns 2
746381295[8]
// returns 7
泌惚乎Int峙短嗤怎校議了方?軸和炎埆順?椎担貧峰糞孖議和炎氏卦指0?咀葎万氏壓方忖恣円徭強温0?

746381295[9]
//returns 0, 軸吉揖噐?
0746381295[9]

廼耗窃侏

制婢辛參?厮嗤議窃、潤更悶才旦訟耶紗仟議廼耗窃侏?
extension Character {
 enum Kind {
 case Vowel, Consonant, Other
 }
 var kind: Kind {
 switch String(self).lowercaseString {
 case "a", "e", "i", "o", "u":
 return .Vowel
 case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
 "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
 return .Consonant
 default:
 return .Other
 }
 }
}
乎箭徨?Character耶紗阻仟議廼耗旦訟。宸倖兆葎Kind議旦訟燕幣蒙協忖憲議窃侏。醤悶栖傍?祥頁燕幣匯倖炎彈議性供重云嶄議忖憲頁圷咄珊頁絹咄?音深打笥囂才仇圭延嶽??賜宀頁凪万窃侏。

宸倖窃徨珊?Character耶紗阻匯倖仟議柴麻糞箭奉來?軸kind?喘栖卦指栽癖議Kind旦訟撹埀。

孖壓?宸倖廼耗旦訟辛參才匯倖Character峙選栽聞喘阻?
func printLetterKinds(word: String) {
 println("'\\(word)' is made up of the following kinds of letters:")
 for character in word {
 switch character.kind {
 case .Vowel:
 print("vowel ")
 case .Consonant:
 print("consonant ")
 case .Other:
 print("other ")
 }
 }
 print("\n")
}
printLetterKinds("Hello")
// 'Hello' is made up of the following kinds of letters:
// consonant vowel consonant consonant vowel
痕方printLetterKinds議補秘頁匯倖String峙旺斤凪忖憲序佩亨旗。壓耽肝亨旗狛殻嶄?深打輝念忖憲議kind柴麻奉來?旺嬉咫竃栽癖議窃艶宙峰。侭參printLetterKinds祥辛參喘栖嬉咫匯倖頼屁汽簡嶄侭嗤忖銚議窃侏?屎泌貧峰汽簡"hello"侭婢幣議。

廣吭?喇噐厮岑character.kind頁Character.Kind侏?侭參Character.Kind嶄議侭嗤撹埀峙脅辛參聞喘switch囂鞘戦議侘塀酒亟?曳泌聞喘 .Vowel旗紋Character.Kind.Vowel

<貧匯准 和匯准>

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