遍匈 / Swift / Swift縮殻 /

Swift徭登僅全俊

<貧匯准 和匯准>
徭登僅全俊?Optional Chaining?頁匯嶽辛參萩箔才距喘奉來、圭隈式徨重云議狛殻?万議徭登僅來悶孖噐萩箔賜距喘議朕炎輝念辛嬬葎腎?nil?。泌惚徭登僅議朕炎嗤峙?椎担距喘祥氏撹孔?屢郡?泌惚僉夲議朕炎葎腎?nil??夸宸嶽距喘繍卦指腎?nil?。謹肝萩箔賜距喘辛參瓜全俊壓匯軟侘撹匯倖全?泌惚販採匯倖准泣葎腎?nil?繍擬崑屁倖全払丼。
永芝? Swift議徭登僅全才Objective-C嶄議嶧連葎腎嗤乂屢崧?徽頁Swift辛參聞喘壓販吭窃侏嶄?旺拝払移嚥倦辛參瓜殊霞欺。

徭登僅全俊辛紋旗膿崙介淫

宥狛壓?距喘議奉來、圭隈、賜徨重云議徭登僅峙?optional value??掲腎?朔中慧匯倖諒催?辛參協吶匯倖徭登僅全俊。宸匯泣載崧壓徭登僅峙朔中慧匯倖蕗苧憲催栖膿崙介誼凪撃淫坪議峙。麿断議麼勣議曝艶壓噐輝徭登僅峙葎腎扮徭登僅全俊軸震払移?隼遇匯違議膿崙介淫繍氏哈窟塰佩扮危列。

葎阻郡啌徭登僅全俊辛參距喘腎?nil??音胎低距喘議奉來、圭隈、徨重云吉卦指議峙頁音頁徭登僅峙?万議卦指潤惚脅頁匯倖徭登僅峙。低辛參旋喘宸倖卦指峙栖殊霞低議徭登僅全俊頁倦距喘撹孔?嗤卦指峙軸撹孔?卦指nil夸払移。

距喘徭登僅全俊議卦指潤惚嚥圻云議卦指潤惚醤嗤屢揖議窃侏?徽頁圻云議卦指潤惚瓜淫廾撹阻匯倖徭登僅峙?輝徭登僅全俊距喘撹孔扮?匯倖哘乎卦指Int議奉來繍氏卦指Int?。

和中叱粁旗鷹繍盾瞥徭登僅全俊才膿崙介淫議音揖。

遍枠協吶曾倖窃Person才Residence。
class Person {
 var residence: Residence?
}
class Residence {
 var numberOfRooms = 1
} 
Residence醤嗤匯倖Int窃侏議numberOfRooms?凪峙葎1。Person醤嗤匯倖徭登僅residence奉來?万議窃侏頁Residence?。

泌惚低幹秀匯倖仟議Person糞箭?万議residence奉來喇噐頁瓜協吶葎徭登僅侏議?緩奉來繍潮範兜兵晒葎腎?
let john = Person() 
泌惚低?聞喘蕗苧憲?膿崙介淫資誼宸倖繁residence奉來numberOfRooms奉來峙?繍氏哈窟塰佩扮危列?咀葎宸扮短嗤辛參工介淫議residence峙。
let roomCount = john.residence!.numberOfRooms
// this triggers a runtime error”
//繍擬崑塰佩扮危列 
輝john.residence音頁nil扮?氏塰佩宥狛?拝氏繍roomCount 譜崔葎匯倖int窃侏議栽尖峙。隼遇?泌貧侭峰?輝residence葎腎扮?宸倖旗鷹繍氏擬崑塰佩扮危列。

徭登僅全俊戻工阻匯嶽総匯嶽資誼numberOfRooms議圭隈。旋喘徭登僅全俊?聞喘諒催栖旗紋圻栖?議了崔?
if let roomCount = john.residence?.numberOfRooms {
 println("John's residence has \(roomCount) room(s).")
} else {
 println("Unable to retrieve the number of rooms.")
}
// 嬉咫 "Unable to retrieve the number of rooms. 
宸御盆Swift栖全俊徭登僅residence?奉來?泌惚residence贋壓夸函指numberOfRooms議峙。

咀葎宸嶽晦編資誼numberOfRooms議荷恬嗤辛嬬払移?徭登僅全俊氏卦指Int?窃侏峙?賜宀各恬“徭登僅Int”。輝residence頁腎議扮昨?貧箭??僉夲Int繍氏葎腎?咀緩氏竃枠涙隈恵諒numberOfRooms議秤趨。

勣廣吭議頁?軸聞numberOfRooms頁掲徭登僅Int?Int??扮宸匯泣匆撹羨。峪勣頁宥狛徭登僅全俊議萩箔祥吭龍彭恷朔numberOfRooms悳頁卦指匯倖Int?遇音頁Int。

低辛參徭失協吶匯倖Residence糞箭公john.residence?宸劔万祥音壅葎腎阻?
john.residence = Residence() 
john.residence 孖壓嗤阻糞縞贋壓議糞箭遇音頁nil阻。泌惚低?聞喘才念中匯劔議徭登僅全俊栖資誼numberOfRoooms?万繍卦指匯倖淫根潮範峙1議Int??
if let roomCount = john.residence?.numberOfRooms {
 println("John's residence has \(roomCount) room(s).")
} else {
 println("Unable to retrieve the number of rooms.")
}
// 嬉咫 "John's residence has 1 room(s)"。

葎徭登僅全俊協吶庁侏窃

低辛參聞喘徭登僅全俊栖謹蚊距喘奉來?圭隈?才徨重云。宸斑低辛參旋喘万断岻寂議鹸墫庁侏栖資函厚久蚊議奉來?旺殊臥頁倦辛參撹孔資函緩窃久蚊奉來。

朔中議旗鷹協吶阻膨倖繍壓朔中聞喘議庁侏窃?凪嶄淫凄謹蚊徭登僅全俊。宸乂窃頁喇貧中議Person才Residence庁侏宥狛耶紗匯倖Room才匯倖Address窃謡婢栖。

Person窃協吶嚥岻念屢揖。
class Person { var residence: Residence? } 
Residence窃曳岻念鹸墫乂。宸肝?万協吶阻匯倖延楚 rooms?万瓜兜兵晒葎匯倖Room[]窃侏議腎方怏?
class Residence {
 var rooms = Room[]()
 var numberOfRooms: Int {
 return rooms.count
 }
 subscript(i: Int) -> Room {
 return rooms[i]
 }
 func printNumberOfRooms() {
 println("The number of rooms is \(numberOfRooms)")
 }
 var address: Address?
}
咀葎Residence贋刈阻匯倖Room糞箭議方怏?万議numberOfRooms奉來峙音頁匯倖耕協議贋刈峙?遇頁宥狛柴麻遇栖議。numberOfRooms奉來峙頁喇卦指rooms方怏議count奉來峙誼欺議。

葎阻嬬酔堀恵諒rooms方怏?Residence協吶阻匯倖峪響議徨重云?宥狛峨秘方怏議圷殆叔炎祥辛參撹孔距喘。泌惚乎叔炎贋壓?徨重云夸繍乎圷殆卦指。

Residence嶄匆戻工阻匯倖printNumberOfRooms議圭隈?軸酒汽議嬉咫型寂倖方。

恷朔?Residence協吶阻匯倖徭登僅奉來出address?address??。Address窃議奉來繍壓朔中協吶。 喘噐rooms方怏議Room窃頁匯倖載酒汽議窃?万峪嗤匯倖name奉來才匯倖譜協room兆議兜兵晒匂。
class Room {
 let name: String
 init(name: String) { self.name = name }
} 
宸倖庁侏嶄議恷嶮窃出恂Address。万嗤眉倖徭登僅奉來麿断駆窃侏頁String?。念中曾倖徭登僅奉來buildingName才buildingNumber恬葎仇峽議匯何蛍?頁協吶蝶倖秀廏麗議曾嶽圭塀。及眉倖奉來street?喘噐凋兆仇峽議瞬祇兆?
class Address {
 var buildingName: String?
 var buildingNumber: String?
 var street: String?
 func buildingIdentifier() -> String? {
 if buildingName {
 return buildingName
 } else if buildingNumber {
 return buildingNumber
 } else {
 return nil
 }
 }
}
Address窃珊戻工阻匯倖buildingIdentifier議圭隈?万議卦指峙窃侏葎String?。宸倖圭隈殊臥buildingName才buildingNumber議奉來?泌惚buildingName嗤峙夸繍凪卦指?賜宀泌惚buildingNumber嗤峙夸繍凪卦指?壅賜泌惚短嗤匯倖奉來嗤峙?卦指腎。

宥狛徭登僅全俊距喘奉來

屎泌貧中“ 徭登僅全俊辛紋旗膿崙介淫”嶄侭峰?低辛參旋喘徭登僅全俊議徭登僅峙資函奉來?旺拝殊臥奉來頁倦資函撹孔。隼遇?低音嬬聞喘徭登僅全俊葎奉來験峙。
聞喘貧峰協吶議窃栖幹秀匯倖繁糞箭?旺壅肝晦編朔肇万議numberOfRooms奉來?
let john = Person()
if let roomCount = john.residence?.numberOfRooms {
 println("John's residence has \(roomCount) room(s).")
} else {
 println("Unable to retrieve the number of rooms.")
}
// 嬉咫 "Unable to retrieve the number of rooms。
喇噐john.residence頁腎?侭參宸倖徭登僅全俊才岻念匯劔払移阻?徽頁短嗤塰佩扮危列。

宥狛徭登僅全俊距喘圭隈

低辛參聞喘徭登僅全俊議栖距喘徭登僅峙議圭隈旺殊臥圭隈距喘頁倦撹孔。軸聞宸倖圭隈短嗤卦指峙?低卆隼辛參聞喘徭登僅全俊栖器撹宸匯朕議。

Residence議printNumberOfRooms圭隈氏嬉咫numberOfRooms議輝念峙。圭隈泌和?
func printNumberOfRooms(){
 println("The number of rooms is \(numberOfRooms)"j)
} 
宸倖圭隈短嗤卦指峙。徽頁?短嗤卦指峙窃侏議痕方才圭隈嗤匯倖咨塀議卦指峙窃侏Void?歌需Function Without Return Values?。

泌惚低旋喘徭登僅全俊距喘緩圭隈?宸倖圭隈議卦指峙窃侏繍頁Void??遇音頁Void?咀葎輝宥狛徭登僅全俊距喘圭隈扮卦指峙悳頁徭登僅窃侏?optional type?。?軸聞頁宸倖圭隈云頁短嗤協吶卦指峙?低匆辛參聞喘if囂鞘栖殊臥頁倦嬬撹孔距喘printNumberOfRooms圭隈?泌惚圭隈宥狛徭登僅全俊距喘撹孔?
printNumberOfRooms議咨塀卦指峙繍氏頁Void?泌惚短嗤撹孔?繍卦指nil?
if john.residence?.printNumberOfRooms() {
 println("It was possible to print the number of rooms.")
} else {
 println("It was not possible to print the number of rooms.")
}
// 嬉咫 "It was not possible to print the number of rooms."。

聞喘徭登僅全俊距喘徨重云

低辛參聞喘徭登僅全俊栖晦編貫徨重云資函峙旺殊臥徨重云議距喘頁倦撹孔?隼遇?低音嬬宥狛徭登僅全俊栖譜崔徨旗鷹。
廣吭? 輝低聞喘徭登僅全俊栖資函徨重云議扮昨?低哘乎繍諒催慧壓徨重云凄催議念中遇音頁朔中。徭登僅全俊議諒催匯違岷俊効壓徭登僅燕器囂鞘議朔中。
和中宸倖箭徨喘壓Residence窃嶄協吶議徨重云栖資函john.residence方怏嶄及匯倖型寂議兆忖。咀葎john.residence孖壓頁nil?徨重云議距喘払移阻。
if let firstRoomName = john.residence?[0].name {
 println("The first room name is \(firstRoomName).")
} else {
 println("Unable to retrieve the first room name.")
}
// 嬉咫 "Unable to retrieve the first room name."。
壓徨旗鷹距喘嶄徭登僅全俊議諒催岷俊効壓john.residence議朔中?壓徨重云凄催議念中?咀葎john.residence頁徭登僅全俊編夕資誼議徭登僅峙。

泌惚低幹秀匯倖Residence糞箭公john.residence?拝壓麿議rooms方怏嶄嗤匯倖賜謹倖Room糞箭?椎担低辛參聞喘徭登僅全俊宥狛Residence徨重云栖資函壓rooms方怏嶄議糞箭阻?
let johnsHouse = Residence()
johnsHouse.rooms += Room(name: "Living Room")
johnsHouse.rooms += Room(name: "Kitchen")
john.residence = johnsHouse
if let firstRoomName = john.residence?[0].name {
 println("The first room name is \(firstRoomName).")
} else {
 println("Unable to retrieve the first room name.")
}
// 嬉咫 "The first room name is Living Room."。

銭俊謹蚊全俊

低辛參繍謹蚊徭登僅全俊銭俊壓匯軟?辛參条函庁侏坪厚和蚊議奉來圭隈才徨重云。隼遇謹蚊徭登僅全俊音嬬壅耶紗曳厮将卦指議徭登僅峙厚謹議蚊。 匆祥頁傍?

泌惚低編夕資誼議窃侏音頁徭登僅窃侏?喇噐聞喘阻徭登僅全俊万繍延撹徭登僅窃侏。 泌惚低編夕資誼議窃侏厮将頁徭登僅窃侏?喇噐徭登僅全俊万匆音氏戻互徭登僅來。

咀緩?泌惚低編夕宥狛徭登僅全俊資誼Int峙?音胎聞喘阻謹富蚊全俊卦指議悳頁Int?。 屢貌議?泌惚低編夕宥狛徭登僅全俊資誼Int?峙?音胎聞喘阻謹富蚊全俊卦指議悳頁Int?。

和中議箭徨編夕資函john議residence奉來戦議address議street奉來。宸戦聞喘阻曾蚊徭登僅全俊栖選狼residence才address奉來?麿断曾宀脅頁徭登僅窃侏?
if let johnsStreet = john.residence?.address?.street {
 println("John's street name is \(johnsStreet).")
} else {
 println("Unable to retrieve the address.")
}
// 嬉咫 "Unable to retrieve the address.”。
john.residence議峙孖壓淫根匯倖Residence糞箭?隼遇john.residence.address孖壓頁nil?咀緩john.residence?.address?.street距喘払移。

貫貧中議箭徨窟孖?低編夕資誼street奉來峙。宸倖奉來議窃侏頁String?。咀緩勝砿壓徭登僅窃侏奉來念聞喘阻曾蚊徭登僅全俊?john.residence?.address?.street議卦指峙窃侏匆頁String?。

泌惚低葎Address譜協匯倖糞箭栖恬葎john.residence.address議峙?旺葎address議street奉來譜協匯倖糞縞峙?低辛參宥狛謹蚊徭登僅全俊栖誼欺宸倖奉來峙。
let johnsAddress = Address()
johnsAddress.buildingName = "The Larches"
johnsAddress.street = "Laurel Street"
john.residence!.address = johnsAddress
if let johnsStreet = john.residence?.address?.street {
 println("John's street name is \(johnsStreet).")
} else {
 println("Unable to retrieve the address.")
}
// 嬉咫 "John's street name is Laurel Street."。
峙誼廣吭議頁?“!”憲議壓協吶address糞箭扮議聞喘?john.residence.address?。john.residence奉來頁匯倖徭登僅窃侏?咀緩低俶勣壓万資函address奉來岻念聞喘?介淫參資誼万議糞縞峙。

全俊徭登僅卦指峙議圭隈

念中議箭徨盾瞥阻泌採宥狛徭登僅全俊栖資誼徭登僅窃侏奉來峙。低匆辛參宥狛距喘卦指徭登僅窃侏峙議圭隈旺梓俶全俊圭隈議卦指峙。

和中議箭徨宥狛徭登僅全俊距喘阻Address窃嶄議buildingIdentifier 圭隈。宸倖圭隈議卦指峙窃侏頁String?。泌貧侭峰?宸倖圭隈壓徭登僅全俊距喘朔恷嶮議卦指峙窃侏卆隼頁String??
if let buildingIdentifier = john.residence?.address?.buildingIdentifier() {
 println("John's building identifier is \(buildingIdentifier).")
}
// 嬉咫 "John's building identifier is The Larches."。
泌惚低珊?序匯化斤圭隈卦指峙峇佩徭登僅全俊?繍徭登僅全俊諒催憲慧壓圭隈凄催議朔中?
if let upper = john.residence?.address?.buildingIdentifier()?.uppercaseString {
 println("John's uppercase building identifier is \(upper).")
}
// 嬉咫 "John's uppercase building identifier is THE LARCHES."。
廣吭? 壓貧中議箭徨嶄?低繍徭登僅全俊諒催憲慧壓凄催朔中頁咀葎低?勣全俊議徭登僅峙頁buildingIdentifier圭隈議卦指峙?音頁buildingIdentifier圭隈云附。
<貧匯准 和匯准>

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