2swift初見翻譯numbbbbb校對(duì)shinyzhu_第1頁
2swift初見翻譯numbbbbb校對(duì)shinyzhu_第2頁
2swift初見翻譯numbbbbb校對(duì)shinyzhu_第3頁
2swift初見翻譯numbbbbb校對(duì)shinyzhu_第4頁
2swift初見翻譯numbbbbb校對(duì)shinyzhu_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

翻譯 校對(duì)Swift簡(jiǎn)單值(Simple控制流(Control函數(shù)和閉包(Functionsand對(duì)象和類(Objectsand枚舉和結(jié)構(gòu)體(Enumerationsand接口和擴(kuò)展(Protocolsand泛型world”。在Swift中,可以用一行代碼實(shí)現(xiàn): o,world") 如果你寫過C或者Objective-C代碼,那你應(yīng)該很熟悉這種形式——在Swift中,這行代碼就是一個(gè)完整的程序。你不需要為了輸入輸出或者字這個(gè)會(huì)通過一系列編程例子來讓你對(duì)Swift有初步了解,如果你有什為了獲得最好的體驗(yàn),在Xcode當(dāng)中使用代碼預(yù)覽功能。代碼預(yù)覽功能可使用let來常量,使用var來變量。一個(gè)常量的值在編譯時(shí)并不varvarmyVariable=42myVariable=50letmyConstant=letimplicitInteger=70letletimplicitInteger=70letimplicitDouble=70.0letexplicitDouble:Double=創(chuàng)建一個(gè)常量,顯式指定類型為Float并指定初始值為4letletlabel="Thewidthis"letwidth=94letwidthLabel=label+刪除最后一行中的String,錯(cuò)誤提示是什么letletapples=letoranges=letletappleSummary="Ihave\(apples)letfruitSummary="Ihave\(apples+oranges)piecesoffruit."varvarList=["catfish","water","blueList[1]="bottleofvaroccupations=["Malcolm":"Captain","Kaylee":]letletemptyArray=letemptyDictionary=Dictionary<String,如果類型信息可以被推斷出來,你可以用[]和[:]來創(chuàng)建空數(shù)組和空字——就像你變量或者給函數(shù)傳參數(shù)的時(shí)候一樣 List //使用if和switch來進(jìn)行條件操作,使用for-in、for、we和do- while來進(jìn)行循環(huán)。條件和循環(huán)變量括號(hào)可以省略,但是語句體的大括號(hào)是必須的。letletindividualScores=[75,43,103,87,varteamScore=forforscorein{ifscore>50{teamScore+=3}elseteamScore+=}}在if語句中,條件必須是一個(gè)布爾表達(dá)式——這意味著像if{...}這樣的代碼將報(bào)錯(cuò),而不 地與0做對(duì)比一個(gè)可選的值可能是一個(gè)具體的值或者是nil,表示值缺失。在類型后面varvaroptionalString:String?=optionalString==varoptionalName:String?="JohnAppleseed"vargreeting=" ifletname={greeting= 把optionalName改成nil,greeting會(huì)是什么?添加一個(gè)else語句,optionalName是nil時(shí)給greeting賦一個(gè)不同的值letletvegetable="redpepper"switchvegetable{caseantsonament="Addsomeraisinsandcase"cucumber", ment="Thatwouldmakeagoodteasandwich."caseletxwhere}ment="Isitaspicyment="Everythingtastesgood刪除default語句,看看會(huì)有什么錯(cuò)誤你可以使用for-in來遍歷字典,需要兩個(gè)變量來表示每個(gè)鍵值對(duì)letletinterestingNumbers["Prime":[2,3,5,7,"Fibonacci":[1,1,2,3,5,"Square":[1,4,9,16,]varlargest=for(kind,numbers)in{fornumberinnumbers{ifnumber>largest{largest=}}}使用while來重復(fù)運(yùn)行一段代碼直到不滿足條件。循環(huán)條件可以在開頭var=2n<100n}=n*nvar=2domm*2}m<mForLoop=foriin0..3ForLoop+=}varsecondForLoop=0forvari=0;i<3;++i{secondForLoop+=}使用..創(chuàng)建的范圍不包含上界,如果想包含的話需要使用...funcgreet(name:String,day:String)->String returnreturno\(name),todayis}greet("Bob",funcfuncgetGasPrices()->(Double,Double,{return(3.59,3.69,}funcfuncsumOf(numbers:Int...)->{varsum=fornumberin{sum+=}return}sumOf(42,597,funcfuncreturnFifteen()->{vary=10funcadd()y+=}returny}funcfuncmakeIncrementer()->(Int->{funcaddOne(number:Int)->Int{return1+number}return}varincrement=makeIncrementer()funcfunchasAnyMatches(list:Int[],condition:Int->Bool)->Bool{foriteminlistif{return}}return}funclessThanTen(number:Int)->{returnnumber<}varnumbers=[20,19,7,hasAnyMatches(numbers,函數(shù)實(shí)際上是一種特殊的閉包,你可以使用{}來創(chuàng)建一個(gè)閉包。使in來分割參數(shù)并返回類型(number:Int)->Intinletresult=3*numberreturnresult重寫閉包,對(duì)所有奇數(shù)返回sort([1,sort([1,5,3,12,2]){$0>$1 classclass{varnumberOfSides=funcsimpleDescription()->Stringreturn"A with\(numberOfSides)}}使用let添加一個(gè)常量屬性,再添加一個(gè)接收一個(gè)參數(shù)的方法var= .numberOfSides=var Description= var= .numberOfSides=var Description=classclass{varnumberOfSides:Int=varname:init(name:{=}funcsimpleDescription()->Stringreturn"A with\(numberOfSides)}}注意self(就像numberOfSides)還是通過構(gòu)造器(就像name)classclassSquare:{varinit(sideLength:Double,name:{self.sideLength=sideLengthsuper.init(name:name)numberOfSides=4}funcarea()->DoublereturnsideLength*}overridefuncsimpleDescription()->}}lettest=Square(sideLength:5.2,name:"mytest 屬性可以有g(shù)etter和setterclassclassEquilateralTriangle:{varsideLength:Double=init(sideLength:Double,name:{self.sideLength=sideLengthsuper.init(name:name)numberOfSides=3}varperimeter:{getreturn3.0*}setsideLength=newValue/}}overridefuncsimpleDescription()->{return"Anequilateraltriaglewithsidesoflength\(sideLength)."}}vartriangle=EquilateralTriangle(sideLength:name:"atriangle")name:"atriangle")triangle.perimeter=9.9在perimetersetter中,新值的名字是newValue。你可以在set注意EquilateralTriangle類的構(gòu)造器執(zhí)行了三步設(shè)置子類的屬性willSet和didSetclassclassTriangleAndSquarevartriangle:{willSetsquare.sideLength=}}varsquare:{willSettriangle.sideLength=}}init(size:Double,name:String)square=Square(sideLength:size,name:name)triangle=EquilateralTriangle(sideLength:size,name:}}vartriangleAndSquare=TriangleAndSquare(size:10,name:"anothertestsh triangleAndSquare.square=Square(sideLength:50,name:"largersquare") classclassCountervarcount:Int=funcincrementBy(amount:Int,numberOfTimestimes:Int){count+=amount*}}varcounter=Counter()counter.incrementBy(2,numberOfTimes:7)letletoptionalSquare:Square?=Square(sideLength:2.5,name:"optionalsquare")letsideLength=enumenumRank:{caseAce=caseTwo,Three,Four,Five,Six,Seven,Nine,Nine,caseJack,Queen,funcsimpleDescription()->{switchself{case.Ace:returncasereturn"jack"case.Queen:return"queen"case.King:return"king"return}}}letace=letaceRawValue=寫一個(gè)函數(shù),通過比較它們的原始值來比較兩個(gè)Rank值在上面的例子中,枚舉原始值的類型是Int,所以你只需要設(shè)置第一個(gè)原始值。剩下的原始值會(huì)按照順序賦值。你也可以使用字符串或者浮點(diǎn)數(shù)作為枚舉的原始值。使用toRaw和fromRaw函數(shù)來在原始值和枚舉值之間進(jìn)行轉(zhuǎn)換ififletconvertedRank={letthreeDescription=}enumenumSuitcaseSpades,Hearts,Diamonds,funcfuncsimpleDescription()->{switchself{case.Spades:returncasereturn"hearts"case.Diamonds:return"diamonds"case.Clubs:return}}}lethearts=letheartsDescription=法和構(gòu)造器。它們之間最大的一個(gè)區(qū)別就是結(jié)構(gòu)體是傳值,類是傳引structstructCardvarrank:Rankvarsuit:funcsimpleDescription()->Stringreturn"The\(rank.simpleDescription())of\}}letletthreeOfSpades=Card(rank:.Three,suit:.Spades)letthreeOfSpadesDescription=給Card添加一個(gè)方法,創(chuàng)建一副完整的牌并把每張牌的rank和enumServerResponseenumServerResponsecaseResult(String,String)caseError(String)}letsuccess=ServerResponse.Result("6:00am","8:09letfailure=ServerResponse.Error("Outofswitchsuccesscaselet.Result(sunrise,letserverResponse="Sunriseisat\(sunrise)andsunsetisat\(sunset)."caseletletserverResponse="Failure...}給ServerResponse和switch添加第三種情況注意如何從ServerResponse中提取日升和日落時(shí)間使用protocol來一個(gè)接口protocolprotocolExampleProtocolvarsimpleDescription:String{get}mutatingfuncadjust()}classclassSimpleClass:ExampleProtocolvarsimpleDescription:String="AverysimplevaranotherProperty:Int=69105funcadjust(){simpleDescription+="Now100%}}vara=SimpleClass()letaDescription=structSimpleStructure:ExampleProtocol{varsimpleDescription:String="Asimplemutatingfunc{simpleDescription+="}}varb=SimpleStructure()letbDescription=extension

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論