¸ÅÊö
SwiftÊÇÆ»¹û2014ÄêÍÆ³öµÄȫеıà³ÌÓïÑÔ£¬Ëü¼Ì³ÐÁËCÓïÑÔ¡¢ObjCµÄÌØÐÔ£¬ÇÒ¿Ë·þÁËCÓïÑԵļæÈÝÐÔÎÊÌâ¡£Swift·¢Õ¹¹ý³ÌÖв»½ö±£ÁôÁËObjCºÜ¶àÓï·¨ÌØÐÔ£¬ËüÒ²½è¼øÁ˶àÖÖÏÖ´ú»¯ÓïÑÔµÄÌØµã£¬ÔÚÆäÖÐÄã¿ÉÒÔ¿´µ½C#¡¢Java¡¢Javascript¡¢PythonµÈ¶àÖÖÓïÑÔµÄÓ°×Ó¡£Í¬Ê±ÔÚ2015ÄêµÄWWDCÉÏÆ»¹û»¹Ðû²¼SwiftµÄа汾Swift2.0£¬²¢Ðû²¼ÉÔºóSwift¼´½«¿ªÔ´£¬³ýÁËÖ§³ÖiOS¡¢OS
XÖ®Í⻹½«Ö§³Ölinux¡£
±¾ÎĽ«¼ÌÐøiOS¿ª·¢ÏµÁн̳̣¬¼ÙÉè¶ÁÕßÒѾÓÐÁËÆäËûÓïÑÔ»ù´¡£¨Ç¿ÁÒ½¨Òé³õѧÕß´Ó±¾ÏµÁеÚÒ»Õ¿ªÊ¼ÔĶÁ£¬Èç¹ûÄúÏ£Íû´ÓSwiftѧÆð£¬ÄÇÃ´ÍÆ¼öÄãÊ×ÏÈÔĶÁÆ»¹û¹Ù·½µç×ÓÊé¡¶the
swift programming language¡·£©£¬²»»á´ÓÁã»ù´¡Ò»µãµãÆÊÎöÕâÃÅÓïÑÔµÄÓï·¨£¬Ö¼ÔÚ°ïÖú´ó¼Ò¿ìËÙ´ÓObjC¿ìËÙ¹ý¶Èµ½Swift¿ª·¢ÖС£¼´±ãÈç´Ë£¬Òª¾¡¿ÉÄÜÈ«ÃæµÄ½éÉÜSwiftµÄÓï·¨ÌØµãÒ²²»ÊÇÒ»¼þÈÝÒ×µÄÊÂÇ飬Òò´Ë±¾ÎĽ«²ÉÓýϳ¤µÄƪ·ù½øÐнéÉÜ¡£
»ù´¡²¿·Ö
µÚÒ»¸öSwift³ÌÐò
´´½¨Ò»¸öÃüÁîÐгÌÐòÈçÏ£º
import Foundation
* SwiftûÓÐmainº¯Êý£¬Ä¬ÈÏ´Ótop level codeµÄÉÏ·½¿ªÊ¼×ÔÉ϶øÏÂÖ´ÐУ¨Òò´Ë²»ÄÜÓжà¸ötop
level´úÂ룩
println("Hello, World!") |
´ÓÉÏÃæµÄ´úÂë¿ÉÒÔ¿´³ö£º
1.SwiftûÓÐmainº¯Êý£¬´Ótop level codeµÄÉÏ·½¿ªÊ¼ÍùÏÂÖ´ÐУ¨¾ÍÊǵÚÒ»¸ö·ÇÉùÃ÷Óï¾ä¿ªÊ¼Ö´ÐÐ[±í´ïʽ»òÕß¿ØÖƽṹ£¬Àà¡¢½á¹¹Ì塢ö¾ÙºÍ·½·¨µÈÊôÓÚÉùÃ÷Óï¾ä]£©£¬²»ÄÜ´æÔÚ¶à¸ötop
level codeÎļþ(·ñÔò±àÒëÆ÷ÎÞ·¨È·¶¨Ö´ÐÐÈë¿Ú£¬ÊÂʵÉÏswiftÒþº¬Ò»¸ömainº¯Êý£¬Õâ¸ömainº¯Êý»áÉèÖò¢µ÷ÓÃÈ«¾Ö
¡°C_ARGC C_ARGV¡±²¢µ÷ÓÃÓÉtop level code¹¹³ÉµÄtop_level_code()º¯Êý)£»
2.Swiftͨ¹ýimportÒýÈëÆäËûÀà¿â£¨ºÍJava±È½ÏÏñ£©£»
3.SwiftÓï¾ä²»ÐèҪ˫ÒýºÅ½á⣨¾¡¹Ü¼ÓÉÏÒ²²»±¨´í£©£¬³ý·ÇÒ»Ðаüº¬¶àÌõÓï¾ä£¨ºÍPythonÓеãÀàËÆ£©£»
Êý¾ÝÀàÐÍ
Swift°üº¬ÁËCºÍObjCÓïÑÔÖеÄËùÓлù´¡ÀàÐÍ£¬IntÕûÐΣ¬FloatºÍDouble¸¡µãÐÍ£¬Bool²¼¶ûÐÍ£¬Character×Ö·ûÐÍ£¬String×Ö·û´®ÀàÐÍ£»µ±È»»¹°üÀ¨enumö¾Ù¡¢struct½á¹¹Ìå¹¹ÔìÀàÐÍ£»ArrayÊý×é¡¢Set¼¯ºÏ¡¢Dictionary×ֵ伯ºÏÀàÐÍ£»²»½öÈç´Ë»¹Ôö¼ÓÁ˸߽×Êý¾ÝÀàÐÍÔª×飨Tuple£©£¬¿ÉÑ¡ÀàÐÍ£¨Optinal£©¡£
»ù´¡ÀàÐÍ
Xcode ´Ó6.0¿ªÊ¼¼ÓÈëÁËPlayground´úÂë²âÊÔ£¬¿ÉÒÔʵʱ²é¿´´úÂëÖ´Ðнá¹û£¬ÏÂÃæÊ¹ÓÃPlayground¼òµ¥ÑÝʾһÏÂSwiftµÄ»ù´¡ÄÚÈÝ£¬¶ÔSwiftÓиö¼òµ¥µÄÈÏʶ£º
import Foundation
var a:Int=1 //ͨ¹ývar¶¨ÒåÒ»¸ö±äÁ¿
//ÏÂÃæ±äÁ¿bËäȻûÓÐÉùÃ÷ÀàÐÍ£¬µ«ÊÇ»á×Ô¶¯½øÐÐÀàÐÍÍÆ¶Ï£¬ÕâÀïbÍÆ¶ÏΪIntÀàÐÍ
var b=2
var c:UInt=3
let d=a+b //ͨ¹ýlet¶¨ÒåÒ»¸ö±äÁ¿
//ÏÂÃæÍ¨¹ý"\()"ʵÏÖÁË×Ö·û´®ºÍ±äÁ¿Ïà¼Ó(×Ö·û´®²åÖµ)£¬µÈ¼ÛÓÚprintln("d="+String(d))
println("d=\(d)") //½á¹û£ºd=3
//×¢ÒâÓÉÓÚSwiftÊÇÇ¿ÀàÐÍÓïÑÔ£¬aÊÇIntÀàÐͶøcÊÇUIntÀàÐÍ£¬¶þÕß²»ÄÜÔËË㣬ÏÂÃæµÄÓï¾ä±¨´í;µ«ÊÇ×¢ÒâÈç¹ûÊÇÀàËÆÓÚ£ºlet
a=1+2.0ÊDz»»á±¨´íµÄ£¬ÒòΪÁ½¸ö¶¼ÊÇ×ÖÃæÁ¿£¬Swift»áÊ×ÏȼÆËã³ö½á¹ûÔÙÍÆ¶ÏaµÄÀàÐÍ
//let e=a+c
//Int.maxÊÇIntÀàÐ͵Ä×î´óÖµ£¬ÀàËÆ»¹ÓÐInt.min¡¢Int32.max¡¢Int32.minµÈ
let e=Int.max //½á¹û£º9223372036854775807
var f:Float=1.0
var g=2.0 //¸¡µãÐÍ×Ô¶¯ÍƶÏΪDoubleÀàÐÍ
var h:String="hello "
//emoj±íÇéÒ²¿ÉÒÔ×÷Ϊ±äÁ¿»òÕß³£Á¿£¬ÊÂʵÉÏËùÓÐUnicode×Ö·û¶¼ÊÇ¿ÉÒÔµÄ
var ????="love and apple"
//Á½¸ö×Ö·û´®Ïà¼Ó£¬µ«ÊÇ×¢ÒⲻͬÀàÐͲ»ÄÜÏà¼Ó
var i=h+???? //½á¹û:hello love and apple
//²¼¶ûÀàÐÍÖ»ÓÐÁ½¸öÖµtrue¡¢false£¬ÀàËÆÓÚifÓï¾äÖеÄÌõ¼þÖ»ÄÜÊDz¼¶ûÀàÐͲ»ÄÜÏñObjCÒ»Ñù·Ç0¼´Õæ
var j:Bool=true
//×Ö·ûÀàÐÍ£¬Í¬ÑùʹÓÃË«ÒýºÅ£¬µ«ÊÇÖ»ÄÜÊÇÒ»¸ö×Ö·û£¬Èç¹û²»Ö¸¶¨ÀàÐÍÔò"c"ĬÈÏ»áÍÆ¶ÏΪ×Ö·û´®£¨var
k:Character="c"ÊÇ×Ö·ûÀàÐÍ£¬µ«ÊÇvar k="c"ÊÇ×Ö·û´®ÀàÐÍ£©
var k:Character="c"
var l=00100 //µÈÓÚ100£¬¿ÉÒÔÔÚÇ°ÃæÌí¼Ó¶îÍâµÄ0
var m=10_000_000 //µÈÓÚ10000000£¬¿ÉÒÔʹÓÃÔö¼Ó¶îÍâµÄÏ»®Ïß·½±ãÔĶÁ¶ø²»¸Ä±äÖµµÄ´óС |
1.Swiftͨ¹ývar½øÐбäÁ¿¶¨Ò壬ͨ¹ýlet½øÐг£Á¿¶¨Ò壨ÕâºÍÆäËû¸ß¼¶ÓïÑԱȽÏÀàËÆ£¬ÀýÈçF#£©£»
2.SwiftÌí¼ÓÁËÀàÐÍÍÆ¶Ï£¬¶ÔÓÚ¸³ÖµµÄ³£Á¿»òÕß±äÁ¿»á×Ô¶¯ÍÆ¶ÏÆä¾ßÌåÀàÐÍ£»
3.SwiftÊÇÇ¿ÀàÐÍÓïÑÔ£¨Ó¦¸Ã˵Ëü±ÈC#¡¢JavaµÈÇ¿ÀàÐÍÓïÑÔ¿ØÖÆ»¹ÒªÑϸñ£©£¬²»Í¬µÄÊý¾ÝÀàÐÍÖ®¼ä²»ÄÜÒþʽת»¯£¬Èç¹ûÐèҪת»¯Ö»ÄÜÇ¿ÖÆ×ª»¯£»
4.ÔÚSwiftÖÐÀàÐÍת»»Ö±½Óͨ¹ýÆäÀàÐ͹¹Ô캯Êý¼´¿É£¬½µµÍÁËAPIµÄѧϰ³É±¾£»
¼¯ºÏÀàÐÍ
SwiftÌṩÁËÈýÖÖ¼¯ºÏÀàÐÍ£ºÊý×éArray¡¢¼¯ºÏSet¡¢×ÖµäDictionary¡£ºÍObjC²»Í¬µÄÊÇ£¬ÓÉÓÚSwiftµÄÇ¿ÀàÐÍ£¬¼¯ºÏÖеÄÔªËØ±ØÐëÊÇͬһÀàÐÍ£¬¶ø²»ÄÜÏñObjCÒ»Ñù¿ÉÒÔ´æ´¢ÈκζÔÏóÀàÐÍ,²¢ÇÒ×¢ÒâSwiftÖеļ¯ºÏÊÇÖµÀàÐͶø·ÇÒýÓÃÀàÐÍ£¨ÊÂʵÉϰüÀ¨String¡¢½á¹¹Ìåstruct¡¢Ã¶¾Ùenum¶¼ÊÇÖµÀàÐÍ£©¡£
Ê×ÏÈ¿´Ò»ÏÂSwiftÖеÄÊý×飺
//ÉùÃ÷Êý×éµÄʱºò±ØÐëÈ·¶¨ÆäÀàÐÍ£¬ÏÂÃæÊ¹ÓÃ[String]ÉùÃ÷Ò»¸ö×Ö·û´®Êý×飨[String]ÊÇArray<String>¼òµ¥±í´ïÐÎʽ£©
//var a:Array<String>=["hello","world"]
var a:[String]=["hello","world"]
a[0] //·ÃÎÊÊý×éÔªËØ
//ÏÂÃæ´´½¨Ò»¸öDoubleÀàÐ͵ÄÊý×飬ÕâÀïûÓÐʹÓÃ×ÖÃæÁ¿£¬µ±Ç°ÊÇÒ»¸ö¿ÕÊý×飬µ±È»Ò²¿ÉÒÔд³Évar
b:[Double]=[]
var b=[Double]()
for i in a{
println("i=\(i)")
}
//Ìí¼ÓÔªËØ£¬SwiftÖпɱäÀàÐͲ»ÔÙÓɵ¥¶ÀµÄÒ»¸öÀàÐÍÀ´±íʾ£¬Í³Í³Ê¹ÓÃArray£¬Èç¹ûÏëÉùÃ÷Ϊ²»¿É±äÊý×éֻҪʹÓÃlet¶¨Òå¼´¿É
a.append("!")
a+=["I" ,"am" ,"Kenshin"]
//×·¼ÓÔªËØ
println("a.count=\(a.count)") //½á¹û£ºa.count=6
a[3...5]=["I","Love","Swift"]
//ÐÞ¸ÄÔªËØ,µ«ÊÇ×¢ÒâÎÞ·¨ÓÃÕâÖÖ·½Ê½Ìí¼ÓÔªËØ
//a[6]=["."]//ÕâÖÖ·½Ê½ÊÇ´íÎóµÄ
a.insert("New", atIndex: 5) //²åÈëÔªËØ£ºhello
world! I Love New Swift
a.removeAtIndex(5) //ɾ³ýÖ¸¶¨ÔªËØ
//ʹÓÃÈ«¾Öenumerateº¯Êý±éÀúÊý¾ÝË÷ÒýºÍÔªËØ
for (index,element) in enumerate(a){
println("index=\(index),element=\(element)")
}
//ʹÓù¹Ô캯ÊýÏÞÖÆÊý×éÔªËØ¸öÊý²¢ÇÒÖ¸¶¨Ä¬ÈÏÖµ,µÈ¼ÛÓÚvar c=Array(count:
3, repeatedValue: 1)£¬×Ô¶¯ÍƶÏÀàÐÍ
var c=[Int](count: 3, repeatedValue: 1) |
Set±íʾûÓÐ˳ÐòµÄ¼¯ºÏ£º
//×¢Ò⼯ºÏûÓÐÀàËÆÓÚÊý×éµÄ¼ò»¯ÐÎʽ£¬ÀýÈç²»ÄÜд³Évar a:[String]=["hello","world"]
var a:Set<String>=["hello","world"]
var b:Set=[1,2] //ÀàÐÍÍÆ¶Ï£ºSet<Int>
a.insert("!") //×¢ÒâÕâ¸ö²åÈë²»±£Ö¤Ë³Ðò
if !a.isEmpty { //ÅжÏÊÇ·ñΪ¿Õ
a.remove("!")
}
if !a.contains("!"){
a.insert("!")
} |
Dictionary×ÖµäͬÑùÊÇûÓÐ˳ÐòµÄ£¬²¢ÇÒÔÚSwiftÖÐ×ÖµäͬÑùÒªÔÚʹÓÃʱÃ÷È·¾ßÌåµÄÀàÐÍ¡£ºÍObjCÖÐÒ»Ñù£¬×ֵ䱨Ðë±£Ö¤keyÊÇΨһµÄ£¬¶øÕâÒ»µã¾ÍÒªÇóÔÚSwiftÖÐkey±ØÐëÊǿɹþÏ£µÄ£¬²»¹ýÐÒÔ˵ÄÊÇSwiftÖеĻù±¾ÀàÐÍ£¨ÈçInt¡¢Float¡¢Double¡¢Bool¡¢String£©¶¼ÊǿɹþÏ£µÄ£¬¶¼¿ÉÒÔ×÷Ϊkey¡£
//ͨ¹ý×ÖÃæÁ¿½øÐÐ×Öµä³õʼ»¯£¬×¢ÒâµÈ¼ÛÓÚvar a:Dictionary<Int,String>=[200:"success",404:"not found"]
var a:[Int:String]=[200:"success",404:"not
found"]
var b=[200:"success",404:"not
found"] //²»ÉùÃ÷ÀàÐÍ£¬¸ù¾ÝÖµ×Ô¶¯ÍƶÏÀàÐÍ
a[200] //¶ÁÈ¡×Öµä
a[404]="can not found" //ÐÞ¸Ä
a[500]="internal server error" //Ìí¼Ó
//a=[:] //ÉèÖÃΪ¿Õ×Öµä,µÈ¼ÛÓÚ£ºa=[Int:String]()
for code in a.keys{
println("code=\(code)")
}
for description in a.values{
println("description=\(description)")
}
for (code,description) in a{
println("code=\(code),description=\(description)")
} |
×¢Ò⣺ÔÚSwiftÖм¯ºÏµÄ¿É±äÐÔ²»ÊÇÏñObjCÒ»ÑùÓɵ¥¶ÀµÄÊý¾ÝÀàÐÍÀ´¿ØÖƵ쬶øÊÇͨ¹ý±äÁ¿ºÍ³£Á¿À´¿ØÖÆ£¬ÕâÒ»µãºÍÆäËû¸ß¼¶ÓïÑԱȽÏÀàËÆ¡£
Ôª×飨Tuple£©
ÔÚ¿ª·¢¹ý³ÌÖÐÓÐʱºò»áÏ£ÍûÁÙʱ×éÖ¯Ò»¸öÊý¾ÝÀàÐÍ£¬´Ëʱ¿ÉÒÔʹÓÃÒ»¸ö½á¹¹Ìå»òÕßÀ࣬µ«ÊÇÓÉÓÚÕâ¸öÀàÐͲ¢Ã»ÓÐÄÇô¸´ÔÓ£¬Èç¹û¶¨ÒåÆðÀ´ÓֱȽÏÂé·³£¬´Ëʱ¿ÉÒÔ¿¼ÂÇʹÓÃÔª×é¡£
/**
* Ôª×éµÄ»ù±¾Ó÷¨
*/
var point=(x:50,y:100) //×Ô¶¯ÍÆ¶ÏÆäÀàÐÍ£º(Int,Int)
point.x //¿ÉÒÔÓÃÀàËÆÓڽṹÌåµÄ·½Ê½Ö±½Ó·ÃÎÊÔªËØ,½á¹û£º50
point.y //½á¹û£º100
point.0 //Ò²¿ÉÒÔ²ÉÓÃÀàËÆÊý×éµÄ·½Ê½Ê¹ÓÃϱê·ÃÎÊ£¬½á¹û£º50
point.1 //½á¹û£º100
//Ôª×éÒ²¿ÉÒÔ²»Ö¸¶¨ÔªËØÃû³Æ£¬·ÃÎʵÄʱºòÖ»ÄÜʹÓÃϱê
let frame:(Int,Int,Int,Float)=(0,0,100,100.0)
println(frame) //½á¹û£º(0, 0, 100, 100.0)
//×¢ÒâÏÂÃæµÄÓï¾äÊÇ´íÎóµÄ£¬Èç¹ûÖ¸¶¨ÁËÔª×éµÄÀàÐÍÔòÎÞ·¨Ö¸¶¨ÔªËØÃû³Æ
//let frame:(Int,Int,Int,Int)=(x:0,y:0,width:100,height:100)
var size=(width:100,25) //½ö½ö¸øÆäÖÐÒ»¸öÔªËØÃüÃû
size.width //½á¹û£º100
size.1 //½á¹û£º25
var httpStatus:(Int,String)=(200,"success")
//Ôª×éµÄÔªËØÀàÐͲ¢²»Ò»¶¨Ïàͬ
var (status,description)=httpStatus //Ò»´ÎÐÔ¸³Öµ¸ø¶à¸ö±äÁ¿£¬´Ëʱstatus=200£¬description="success"
//½ÓÊÕÔª×éµÄÆäÖÐÒ»¸öÖµºöÂÔÁíÒ»¸öֵʹÓÃ"_"(×¢ÒâÔÚSwiftÖкܶàÇé¿öÏÂʹÓÃ_ºöÂÔij¸öÖµ»ò±äÁ¿)
var (sta,_)=httpStatus
println("sta=\(sta)") //½á¹û£ºsta=200
/**
* Ôª×é×÷Ϊº¯ÊýµÄ²ÎÊý»ò·µ»ØÖµ£¬½èÖúÔª×éʵÏÖÁ˺¯ÊýµÄ¶à¸ö·µ»ØÖµ
*/
func request()->(code:Int,description:String){
return (404,"not found")
}
var result=request()
result.0 //½á¹û£º404
result.1 //½á¹û£ºnot found
result.code //½á¹û£º404
result.description //½á¹û£ºnot found |
¿ÉÑ¡ÀàÐÍ
Ëùν¿ÉÑ¡ÀàÐ;ÍÊÇÒ»¸ö±äÁ¿»ò³£Á¿¿ÉÄÜÓÐÖµÒ²¿ÉÄÜûÓÐÖµÔòÉèÖÃΪ¿ÉÑ¡ÀàÐÍ¡£ÔÚObjCÖÐÈç¹ûÒ»¸ö¶ÔÏóÀàÐÍûÓи³Öµ£¬ÔòĬÈÏΪnil£¬Í¬Ê±nilÀàÐÍÒ²Ö»ÄÜ×÷Ϊ¶ÔÏóÀàÐ͵ÄĬÈÏÖµ£¬¶ÔÓÚÀàËÆÓÚIntµÈ»ù±¾ÀàÐÍÔò¶ÔÓ¦0ÕâÑùµÄĬÈÏÖµ¡£ÓÉÓÚSwiftÊÇÇ¿ÀàÐÍÓïÑÔ£¬Èç¹ûÔÚÉùÃ÷±äÁ¿»ò³£Á¿Ê±Ã»ÓнøÐи³Öµ£¬Swift²¢²»»áĬÈÏÉèÖóõÖµ£¨ÕâÒ»µãºÍÆäËû¸ß¼¶ÓïÑÔ²»Ì«Ò»Ñù£¬ÀýÈçC#ËäȻҲÓпÉÑ¡ÀàÐÍ£¬µ«ÊÇÒªÇó²¢Ã»ÓÐÄÇôÑϸñ£©¡£
/**
* ¿ÉÑ¡ÀàÐÍ»ù´¡
*/
var x:Float? //ʹÓã¿ÉùÃ÷³ÉÒ»¸ö¿ÉÑ¡ÀàÐÍ£¬Èç¹û²»¸³ÖµÄ¬ÈÏΪnil
x=172.0
var y:Float=60.0
//var z=x+y //×¢Òâ´Ë¾ä±¨´í£¬ÒòΪIntºÍInt£¿¸ù±¾¾ÍÊÇÁ½ÖÖ²»Í¬µÄÀàÐÍ£¬ÔÚSwiftÖÐÁ½ÖÖ²»Í¬µÄÀàÐͲ»ÄÜÔËË㣨ÒòΪ²»»á×Ô¶¯½øÐÐÀàÐÍת»¯£©
var z=x!+y //ʹÓ㡽øÐÐÇ¿ÖÆ½â°ü
var age="29"
var ageInt=age.toInt() //×¢ÒâageIntÊÇInt¿ÉÑ¡ÀàÐͶø²»ÊÇIntÀàÐÍ£¨ÒòΪStringµÄtoInt()·½·¨²¢²»Äܱ£Ö¤ÆäÒ»¶¨ÄÜת»¯ÎªIntÀàÐÍ£© |
1.SwiftÖÐÀàËÆÓÚIntºÍInt?²¢²»ÊÇͬһÖÖÀàÐÍ£¬²»ÄܽøÐÐÏà¹ØÔËË㣬Èç¹ûÒªÔËËãÖ»Äܽâ°ü£»
2.¿ÉÑ¡ÀàÐÍÆä±¾ÖʾÍÊÇ´ËÀàÐÍÄÚ²¿´æ´¢·ÖΪ¡°Some¡±ºÍ¡°None¡±Á½¸ö²¿·Ö£¬Èç¹ûÓÐÖµÔò´æ´¢µ½¡°Some¡±ÖУ¬Ã»ÓÐÖµÔòΪ¡°None¡±£¨ÔçÆÚPlaygroundÖпÉÒÔ¿´µ½Á½¸ö²¿·Ö£¬Èç½ñÒѾȡÏûÏÔʾSomeµÈÃèÊöÁË£©£¬Ê¹ÓøÐ̾ºÅÇ¿ÖÆ½â°üµÄ¹ý³Ì¾ÍÊÇÈ¡³ö¡°Some¡±²¿·Ö£»
¼ÈÈ»¿ÉÑ¡ÀàÐÍÓпÉÄÜÓÐÖµ£¬Ò²¿ÉÄÜûÓÐÖµÄÇôÍùÍùÓÐʱºò¾ÍÐèÒªÅжϡ£¿ÉÒÔʹÓÃifÖ±½ÓÅжÏÒ»¸ö¿ÉÑ¡ÀàÐÍÊÇ·ñΪnil£¬ÕâÑùÒ»À´¾Í¿ÉÒÔ¸ù¾ÝÇé¿ö½øÐÐÇ¿ÖÆ½â°ü£¨´ÓSome²¿·ÖÈ¡³öÖµµÄ¹ý³Ì£©£»ÁíÒ»¸öÑ¡Ôñ¾ÍÊÇÔÚÅжϵÄͬʱÈç¹ûÓÐÖµÔò½«Öµ¸³Öµ¸øÒ»¸öÁÙʱ±äÁ¿»ò³£Á¿£¬·ñÔò²»½øÈë´ËÌõ¼þÓï¾ä£¬Õâ¸ö¹ý³Ì³ÆÖ®Îª¡°¿ÉÑ¡°ó¶¨¡±¡£
/**
* ¿ÉÑ¡ÀàÐÍÅжÏ
*/
var age="29"
var ageInt=age.toInt() //×¢ÒâageIntÊÇInt¿ÉÑ¡ÀàÐͶø²»ÊÇIntÀàÐÍ£¨ÒòΪStringµÄtoInt()·½·¨²¢²»Äܱ£Ö¤ÆäÒ»¶¨ÄÜת»¯ÎªIntÀàÐÍ£©
if ageInt==nil {
println("ageInt=nil")
}else{
println("ageInt=\(ageInt!)") //×¢ÒâÕâÀïʹÓøÐ̾ºÅ!Ç¿ÖÆ½âÎö
}
/**
* ¿ÉÑ¡ÀàÐͰó¶¨
* Èç¹û¿ÉÑ¡ÀàÐÍÓÐÖµÔò½«Öµ¸³Öµ¸øÒ»¸öÁÙʱ±äÁ¿»òÕß³£Á¿£¨´Ëʱ´Ë±äÁ¿»òÕß³£Á¿½ÓÊܵÄÖµÒѾ²»ÊÇ¿ÉÑ¡ÀàÐÍ£©£¬Èç¹ûûÓÐÖµÔò²»Ö´ÐдËÌõ¼þ
*/
if let newAge=ageInt{ //´ËʱnewAge¿ÉÒÔ¶¨Òå³É³£Á¿Ò²¿ÉÒÔ¶¨Òå³É±äÁ¿
println("newAge=\(newAge)") //×¢ÒâÕâÀï²¢²»ÐèÒª¶ÔnewAgeÇ¿ÖÆ½â°ü
}else{
println("ageInt=nil")
} |
ͨ¹ýÇ°ÃæµÄÑÝʾ¿ÉÒÔ¿´³öSwiftÖеĿÉÑ¡°ó¶¨Èç¹ûʵ¼Ê¼ÆËã²»µÃ²»½øÐÐÇ¿ÖÆ½â°ü£¬Èç¹ûÒ»¸ö¿ÉÑ¡ÀàÐÍ´ÓµÚÒ»´Î¸³ÖµÖ®ºó¾ÍÄܱ£Ö¤ÓÐÖµÄÇôʹÓÃʱ¾Í²»±Ø½øÐÐÇ¿ÖÆ½â°üÁË£¬ÕâÖÖÇé¿öÏ¿ÉÒÔʹÓÃÒþʽ¿ÉÑ¡½âÎöÀàÐÍ£¨Í¨¹ý¸Ð̾ºÅÉùÃ÷¶ø²»ÊÇÎʺţ©
/**
* Òþʽ½âÎö¿ÉÑ¡ÀàÐÍ
*/
var age:Int!=0 //ͨ¹ý¸Ð̾ºÅÉùÃ÷Òþʽ½âÎö¿ÉÑ¡ÀàÐÍ£¬´ËºóʹÓÃʱËäÈ»ÊÇ¿ÉÑ¡ÀàÐ͵«ÊDz»ÓÃÇ¿ÖÆ½â°ü
age=29
var newAge:Int=age //²»ÓÃÇ¿ÖÆ½â°üÖ±½Ó¸³Öµ¸øIntÀàÐÍ£¨³ÌÐò»á×Ô¶¯½â°ü£©
if var tempAge=age {
println("tempAge=\(tempAge)")
}else{
println("age=nil")
} |
ÔËËã·û
SwiftÖÐÖ§³Ö¾ø´ó¶àÊýCÓïÑÔµÄÔËËã·û²¢¸Ä½øÒÔ¼õÉÙ²»±ØÒªµÄ´íÎó£¨ÀýÈçµÈºÅ¸³Öµºó²»·µ»ØÖµ£©£¬ËãÊõÔËËã»á¼ì²éÒç³öÇé¿ö£¬±ØÒªÊ±»¹ÄÜʹÓÃÐÂÔöµÄÒç³öÔËËã·û¡£ÁíÍâSwiftÖл¹¿ÉÒÔ¶Ô¸¡µãÊýʹÓÃÈ¡ÓàÔËËã·û£¬ÐÂÔöÁËÇø¼äÔËËã·û¡£¶ÔÓÚ»ù±¾µÄÔËËã·ûÕâÀï²»ÔÙÒ»Ò»½éÉÜ£¬¼òµ¥¿´Ò»ÏÂSwiftÖеÄÇø¼äÔËËã·ûºÍÒç³öÔËËã·û¡£
/**
* Çø¼äÔËËã·û,ͨ³£ÓÃÓÚÕûÐλòÕß×Ö·û·¶Î§(ÀýÈç"a"..."z"£©
*/
for i in 1...5 { //±ÕÇø¼äÔËËã·û...£¨´Ó1µ½5£¬°üº¬5£©
println("i=\(i)")
}
for i in 1..<5{ //°ë¿ªÇø¼äÔËËã·û..<(´Ó1µ½4)
println("i=\(i)")
}
var str = "hello world."
var range="a"..."z"
for t in str {
if range.contains(String(t)) {
print(t) //½á¹û£ºhelloworld
}
}
/**
* Òç³öÔËËã·û
*/
var a=UInt8.max //a=255
//var b:UInt8=a+1 //×¢Òâb»á³öÏÖÒç³ö,´Ë¾ä±¨´í
//ÏÂÃæÊ¹ÓÃÒç³öÔËËã·û£¬½á¹ûΪ£º0£¬ÀàËÆµÄ»¹ÓÐ&-¡¢&*¡¢&/
//ʹÓÃÒç³öÔËËã·û¿ÉÒÔÔÚ×î´óÖµºÍ×îСֵ֮ǰѻ·¶ø²»»á±¨´í
var b:UInt8=a &+ 1 |
Òç³öÔËËã·ûµÄÔÀíÆäʵºÜ¼òµ¥£¬ÀýÈç¶ÔÓÚUInt8£¬Èç¹û8λ¾ùΪ1ÔòÊ®½øÖƱíʾÊÇ255£¬µ«Êǵ±¼Ó1Ö®ºóÔò±ä³ÉÁË9λ¡°100000000¡±£¬³öÏÖÁËÒç³öµ«ÊÇUInt8±¾ÉíÖµÖ»ÄÜ´æ´¢8룬ËùÒÔÈ¡ºóÃæ8λ¾Í±ä³ÉÁË¡°00000000¡±£¬Ê®½øÖƱíʾ¾ÍÊÇ0¡£
¿ØÖÆÁ÷
SwiftÖеĶàÊý¿ØÖÆÁ÷ºÍÆäËûÓïÑÔ²î±ð²¢²»´ó£¬ÀýÈçfor¡¢while¡¢do
while¡¢if¡¢switchµÈ£¬¶øÇÒÓÐÐ©Ç°ÃæÒѾʹÓùý£¨ÀýÈçfor inÑ»·£©£¬ÕâÀォ×ÅÖØ½éÉÜһЩ²»Í¬µã¡£
var a=["a","b","c","d","e","f","g"]
let b=a[1]
/**
* switchÖ§³ÖÒ»¸öcase¶à¸öģʽƥÅ䣬ͬʱcaseºó²»ÓÃдbreakÒ²»áÔÚÆ¥Åäµ½ÖÖÇé¿öºó×Ô¶¯Ìø³öÆ¥Å䣬²»´æÔÚÒþʽ¹á´©£¬Èç¹ûÏëÒª¹á´©ÔÚcaseÖ®ºóÌí¼Ó"fallthrough"¹Ø¼ü×Ö
*/
switch b{
case "a","b":
println("b=a or b=b")
case "c","d","e","f":
println("b in (c,d,e,f)")
default:
println("b=g")
}
/**
* Æ¥ÅäÇø¼ä,ͬʱעÒâswitch±ØÐëÆ¥ÅäËùÓÐÇé¿ö£¬·ñÔò±ØÐë¼ÓÉÏdefault
*/
let c:Int=88
switch c{
case 1...60:
println("1-60")
case 61...90:
println("61-90")
case 91...100:
println("91-100")
default:
println("1>c>100")
}
/**
* Ôª×鯥Åä¡¢Öµ°ó¶¨¡¢whereÌõ¼þÆ¥Åä
* ×¢ÒâÏÂÃæµÄÆ¥ÅäûÓÐdefault£¬ÒòΪËü°üº¬ÁËËùÓÐÇé¿ö
*/
var d=(x:900,y:0)
switch d{
case (0,0):
println("d in (0,0)")
case (_,0): //ºöÂÔxֵƥÅä
println("d in y")
case (0,let y)://Öµ°ó¶¨
println("d in x,y=\(y)")
case (-100...100,-100...100): //×¢ÒâÕâÀïÓпÉÄܺ͵ÚÒ»¡¢¶þ¡¢Èý¸öÌõ¼þÖØºÏ£¬µ«ÊÇSwiftÔÊÐí¶à¸öcaseÆ¥Åäͬһ¸öÌõ¼þ£¬µ«ÊÇÖ»»áÖ´ÐеÚÒ»¸öÆ¥Åä
println("x in£¨0-100£©£¬y in £¨0-100£©")
case let (x,y) where x==y: //whereÌõ¼þÆ¥Åä,×¢ÒâÕâÀïµÄд·¨µÈͬÓÚ£º(let
x,let y) where x==y
println("x=y=\(x)")
case let (x, y):
println("x=\(x),y=\(y)")
} |
ÔÚÆäËûÓïÑÔÖÐͨ³£¿ÉÒÔʹÓÃbreak¡¢continue¡¢return£¨SwiftÖÐÌí¼ÓÁËfallthrough£©µÈÀ´ÖÕÖ¹»òÕßÌø³öij¸öÖ´ÐÐÓï¾ä£¬µ«ÊǶÔÓÚÆäÐÐΪÍùÍùÊǾßÓй̶¨ÐԵģ¬ÀýÈçbreakÖ»ÄÜÖÕÖ¹ÆäËùÔÚµÄÄÚ²ãÑ»·£¬¶øreturnÖ»ÄÜÌø³öËüËùÔڵĺ¯Êý¡£ÔÚSwiftÖÐÕâÖÖ¿ØÖÆ×ªÒƹ¦Äܵõ½Á˼ÓÇ¿£¬ÄǾÍÊÇʹÓñêÇ©¡£ÀûÓñêÇ©Äã¿ÉÒÔËæÒâÖ¸¶¨×ªÒƵÄλÖã¬ÀýÈçÏÂÃæµÄ´úÂëÑÝʾÁËÈçºÎÖ±½Óͨ¹ý±êÇ©Ìø³ö×îÍâ²ãÑ»·£º
var a=5
whileLoop:
while --a>0 {
for var i=0;i<a;++i{
println("a=\(a),i=\(i)")
break whileLoop
//Èç¹û´Ë´¦Ö±½ÓʹÓÃbreak½«Ìø³öforÑ»·£¬¶øÓÉÓÚÕâÀïʹÓñêǩֱ½ÓÌø³öÁËwhile£¬½á¹ûÖ»»á´òÓ¡Ò»´Î£¬Æä½á¹ûΪ£ºa=4,i=0
}
} |
º¯ÊýºÍ±Õ°ü
º¯Êý
º¯ÊýÊÇÒ»¸öÍê³É¶ÀÁ¢ÈÎÎñµÄ´úÂë¿é£¬SwiftÖеĺ¯Êý²»½ö¿ÉÒÔÏñCÓïÑÔÖеĺ¯ÊýÒ»Ñù×÷Ϊº¯ÊýµÄ²ÎÊýºÍ·µ»ØÖµ£¬¶øÇÒ»¹Ö§³ÖǶÌ×£¬²¢ÇÒÓÐC#Ò»ÑùµÄº¯Êý²ÎÊýĬÈÏÖµ¡¢¿É±ä²ÎÊýµÈ¡£
//¶¨ÒåÒ»¸öº¯Êý£¬×¢Òâ²ÎÊýºÍ·µ»ØÖµ£¬
Èç¹ûûÓзµ»ØÖµ¿ÉÒÔ²»Ð´·µ»ØÖµ»òÕßд³ÉVoid¡¢¿ÕÔª×é()(×¢ÒâVoidµÄ±¾ÖʾÍÊÇ¿ÕÔª×é)
func sum(num1:Int,num2:Int)->Int{
return num1 + num2
}
sum(1, 2) |
¿ÉÒÔ¿´µ½SwiftÖеĺ¯Êý½ö½ö±í´ïÐÎʽÓÐËùÇø±ð(¶¨ÒåÐÎʽÀàËÆÓÚJavascript£¬µ«ÊÇjs²»ÓÃÊéд·µ»ØÖµ)£¬µ«ÊDZ¾Öʲ¢Ã»ÓÐÌ«´óµÄÇø±ð¡£²»¹ýSwiftÖжԺ¯Êý²ÎÊýÇ¿µ÷Á½¸ö¸ÅÄî¾ÍÊǾֲ¿²ÎÊýÃû£¨ÓֽС°ÐÎʽ²ÎÊý¡±£©ºÍÍⲿ²ÎÊýÃû£¬Õ⼫´óµÄÕչ˵½ÁËObjC¿ª·¢ÕߵĿª·¢ÌåÑé¡£ÔÚÉÏÃæµÄÀý×ÓÖе÷ÓÃsumº¯Êý²¢Ã»Óд«µÝÈκβÎÊýÃû£¬ÒòΪnum1¡¢num2½ö½ö×÷Ϊ¾Ö²¿²ÎÊýÃûÔÚº¯ÊýÄÚ²¿Ê¹Ó㬵«ÊÇÈç¹û¸øº¯ÊýÖ¸¶¨Ò»¸öÍⲿ²ÎÊýÃûÔÚµ÷ÓÃʱ¾Í±ØÐëÖ¸¶¨²ÎÊýÃû¡£ÁíÍâÇ°ÃæÒ²Ìáµ½¹ØÓÚSwiftÖеÄĬÈϲÎÊý¡¢¿É±ä³¤¶ÈµÄ²ÎÊý£¬°üÀ¨Ò»Ð©¸ß¼¶ÓïÑÔÖеÄÊäÈëÊä³ö²ÎÊý£¬Í¨¹ýÏÂÃæµÄÀý×Ó´ó¼Ò»áÓÐÒ»¸öÈ«ÃæµÄÁ˽⡣
/**
/**
* º¯Êý²ÎÊýÃû·ÖΪ¾Ö²¿²ÎÊýÃûºÍÍⲿ²ÎÊýÃû
*/
func split(string a:String,seperator b:Character)->[String]{
return split(a, maxSplit: Int.max, allowEmptySlices:
false, isSeparator: {$0==b})
}
//ÓÉÓÚ¸øsplitº¯ÊýÉèÖÃÁËÍⲿ²ÎÊýÃûstringºÍseperator£¬ËùÒÔÖ´ÐеÄʱºò±ØÐë´øÉÏÍⲿ²ÎÊýÃû£¬´Ë´¦¿ÉÒÔ¿´µ½Ò»¸öÓÐÒâÒåµÄÍⲿ²ÎÊýÃû´ó´ó½ÚÊ¡¿ª·¢ÕßʹÓóɱ¾
split(string: "hello,world,!", seperator:
",") //½á¹û£º["hello", "world",
"!"]
//ÏÂÃæÍ¨¹ýÔÚ¾Ö²¿²ÎÊýÃûǰ¼ÓÉÏ#À´¼òдÍⲿ²ÎÊýÃû£¨´Ëʱ¾Ö²¿²ÎÊýÃûºÍÍⲿ²ÎÊýÃûÏàͬ£©
func split2(#string:String,#seperator:Character)->[String]{
return split(string, maxSplit: Int.max, allowEmptySlices:
false, isSeparator: {$0==seperator})
}
split2(string: "hello,world,!", seperator:
",")
//ÉÏÃæµÄsplitº¯ÊýµÄ×îºóÒ»¸ö²ÎÊýĬÈÏÉèÖÃΪ",",×¢ÒâÈç¹ûʹÓÃĬÈϲÎÊýÄÇô´Ë²ÎÊýÃû½«Ä¬ÈÏ×÷ΪÍⲿ²ÎÊýÃû£¨´Ëʱ¾Ö²¿²ÎÊýÃûºÍÍⲿ²ÎÊýÃûÏàͬ£©
func split3(#string:String,seperator:Character=",")->[String]{
return split(string, maxSplit: Int.max, allowEmptySlices:
false, isSeparator: {$0==seperator})
}
split3(string: "hello,world,!", seperator:
",") //½á¹û£º["hello", "world",
"!"]
split3(string: "hello world !", seperator:
" ") //½á¹û£º["hello", "world",
"!"]
//µ«ÊÇÈç¹ûÓÐĬÈÏÖµ£¬ÓÖ²»ÏëÖ¸¶¨¾Ö²¿²ÎÊýÃû¿ÉÒÔʹÓá°_¡±È¡ÏûÍⲿ²ÎÊýÃû
func split4(string:String,_ seperator:Character=",")->[String]{
return split(string, maxSplit: Int.max, allowEmptySlices:
false, isSeparator: {$0==seperator})
}
split4("hello,world,!", ",")
//½á¹û£º["hello", "world", "!"]
/**
* ¿É±ä²ÎÊý,Ò»¸öº¯Êý×î¶àÓÐÒ»¸ö¿É±ä²ÎÊý²¢ÇÒ×÷Ϊ×îºóÒ»¸ö²ÎÊý
* ÏÂÃæstrings²ÎÊýÔÚÄÚ²¿ÊÇÒ»¸ö[String]£¬¶ÔÓÚÍⲿÊDz»¶¨¸öÊýµÄString²ÎÊý
*/
func joinStr(seperator:Character=",",strings:String...)->String{
var result:String=""
for var i=0;i<strings.count;++i{
if i != 0{
result.append(seperator)
}
result+=strings[i]
}
return result
}
joinStr(seperator:" ", "hello","world","!")
//½á¹û£º"hello world !"
/**
* º¯Êý²ÎÊýĬÈÏÊdz£Á¿£¬²»ÄÜÖ±½ÓÐ޸ģ¬Í¨¹ýÉùÃ÷var¿ÉÒÔ½«Æäת»¯Îª±äÁ¿£¨µ«ÊÇ×¢ÒâCÓïÑÔ²ÎÊýĬÈÏÊDZäÁ¿£©
* µ«ÊÇ×¢ÒâÕâ¸ö±äÁ¿¶ÔÓÚÍⲿÊÇÎÞЧµÄ£¬º¯ÊýÖ´ÐÐÍê¾ÍÏûʧÁË
*/
func sum2(var num1:Int,num2:Int)->Int{
num1 = num1 + num2
return num1
}
sum2(1, 2) //½á¹û£º3
/**
* ÊäÈëÊä³ö²ÎÊý
* ͨ¹ýÊäÈëÊä³ö²ÎÊý¿ÉÒÔÔÚº¯ÊýÄÚ²¿Ð޸ĺ¯ÊýÍⲿµÄ±äÁ¿£¨×¢Òâµ÷ÓÃʱ²»ÄÜÊdz£Á¿»ò×ÖÃæÁ¿£©
* ×¢Ò⣺ÏÂÃæµÄswap½ö½öΪÁËÑÝʾ£¬Êµ¼ÊʹÓÃʱÇëÓÃSwiftµÄÈ«¾Öº¯Êýswap
*/
func swap(inout a:Int ,inout b:Int){
a=a+b
b=a-b
a=a-b
}
var a=1,b=2
swap(&a, &b) //µ÷ÓÃʱ²ÎÊý¼ÓÉÏ¡°&¡±·ûºÅ
println("a=\(a),b=\(b)") //½á¹û£º"a=2,b=1" |
ºÍºÜ¶àÓïÑÔÒ»Ñù£¬SwiftÖеĺ¯Êý±¾ÉíÒ²¿ÉÒÔ¿´×öÒ»ÖÖÀàÐÍ£¬¼È¿ÉÒÔ×÷Ϊ²ÎÊýÓÖ¿ÉÒÔ×÷Ϊ·µ»ØÖµ¡£
/**
* º¯ÊýÀàÐÍ
*/
var sum3=sum //×Ô¶¯ÍƶÏsum3µÄÀàÐÍ£º(Int,Int)->Int,×¢ÒⲻͬµÄº¯ÊýÀàÐÍÖ®¼ä²»ÄÜÖ±½Ó¸³Öµ
sum3(1,2) //½á¹û£º3
//º¯Êý×÷Ϊ·µ»ØÖµ
func fn()->(Int,Int)->Int{
//ÏÂÃæµÄº¯ÊýÊÇÒ»¸öǶÌ׺¯Êý£¬×÷ÓÃÓÚÊÇÔÚfnº¯ÊýÄÚ²¿
func minus(a:Int,b:Int)->Int{
return a-b
}
return minus;
}
var minus=fn()
//º¯Êý×÷Ϊ²ÎÊý
func caculate(num1:Int,num2:Int,fn:(Int,Int)->Int)->Int{
return fn(num1,num2)
}
caculate(1, 2, sum) //½á¹û£º3
caculate(1,2, minus) //½á¹û£º-1 |
±Õ°ü
SwiftÖеıհüÆäʵ¾ÍÊÇÒ»¸öº¯Êý´úÂë¿é£¬ËüºÍObjCÖеÄBlock¼°C#¡¢JavaÖеÄlambdaÊÇÀàËÆµÄ¡£±Õ°üµÄÌØµã¾ÍÊÇ¿ÉÒÔ²¶»ñºÍ´æ´¢ÉÏÏÂÎÄÖеij£Á¿»òÕß±äÁ¿µÄÒýÓ㬼´Ê¹ÕâЩ³£Á¿»òÕß±äÁ¿ÔÚÔ×÷ÓÃÓòÒѾ±»Ïú»ÙÁËÔÚ´úÂë¿éÖÐÈÔÈ»¿ÉÒÔʹÓá£ÊÂʵÉÏÇ°ÃæµÄÈ«¾Öº¯ÊýºÍǶÌ׺¯ÊýÒ²ÊÇÒ»ÖÖ±Õ°ü£¬¶ÔÓÚÈ«¾Öº¯ÊýËü²»»á²¶»ñÈκγ£Á¿»òÕß±äÁ¿£¬¶ø¶ÔÓÚǶÌ׺¯ÊýÔò¿ÉÒÔ²¶»ñÆäËùÔÚº¯ÊýµÄ³£Á¿»òÕß±äÁ¿¡£Í¨³£ÎÒÃÇ˵µÄ±Õ°ü¸ü¶àµÄÖ¸µÄÊDZհü±í´ïʽ£¬Ò²¾ÍÊÇûÓк¯ÊýÃû³ÆµÄ´úÂë¿é£¬Òò´ËÒ²³ÆÎªÄäÃû±Õ°ü¡£
ÔÚSwiftÖбհü±í´ïʽµÄ¶¨ÒåÐÎʽÈçÏ£º
{ ( parameters ) -> returnType in
statements
}
|
ÏÂÃæÍ¨¹ýÒ»¸öÀý×Ó¿´Ò»ÏÂÈçºÎͨ¹ý±Õ°ü±í´ïʽÀ´¼ò»¯Ò»¸öº¯ÊýÀàÐ͵IJÎÊý£¬ÔÚÏÂÃæµÄÀý×ÓÖбհüµÄÐÎʽҲÊÇÒ»¶øÔÙÔÙ¶øÈýµÄ±»¼ò»¯£¬³ä·Ö˵Ã÷ÁËSwiftÓï·¨µÄ¼ò½àÐÔ£º
func sum(num1:Int,num2:Int)->Int{
return num1 + num2
}
func minus(num1:Int,num2:Int)->Int{
return num1 - num2
}
func caculate(num1:Int,num2:Int,fn:(Int,Int)->Int)->Int{
return fn(num1,num2)
}
var (a,b)=(1,2)
caculate(a, b, sum) //½á¹û£º3
caculate(a, b, minus) //½á¹û£º-1
//ÀûÓñհü±í´ïʽ¼ò»¯±Õ°üº¯Êý
caculate(a, b, {(num1:Int,num2:Int)->Int in
return num1 - num2
}) //½á¹û£º-1
//¼ò»¯ÐÎʽ,¸ù¾ÝÉÏÏÂÎÄÍÆ¶ÏÀàÐͲ¢ÇÒ¶ÔÓÚµ¥±í´ïʽ±Õ°ü£¨Ö»ÓÐÒ»¸öÓï¾ä£©¿ÉÒÔÒþ²Øreturn¹Ø¼ü×Ö
caculate(a, b, { num1,num2 in
num1 - num2
}) //½á¹û£º-1
//Ôٴμò»¯£¬Ê¹ÓòÎÊýÃûËõд,ʹÓÃ$0...$n´ú±íµÚn¸ö²ÎÊý£¬²¢ÇÒ´Ëin¹Ø¼ü×ÖҲʡÂÔÁË
caculate(a, b, {
$0 - $1
}) //½á¹û£º-1 |
¿¼Âǵ½±Õ°ü±í´ïʽµÄ¿É¶ÁÈ¡ÐÔ£¬SwiftÖÐÈç¹ûÒ»¸öº¯ÊýµÄ×îºóÒ»¸ö²ÎÊýÊÇÒ»¸öº¯ÊýÀàÐ͵IJÎÊý£¨»òÕß˵ÊDZհü±í´ïʽ£©£¬Ôò¿ÉÒÔ½«´Ë²ÎÊýдÔÚº¯ÊýÀ¨ºÅÖ®ºó£¬ÕâÖÖ±Õ°ü³ÆÖ®Îª¡°Î²Ëæ±Õ°ü¡±¡£
func sum(num1:Int,num2:Int)->Int{
return num1 + num2
}
func minus(num1:Int,num2:Int)->Int{
return num1-num2
}
func caculate(num1:Int,num2:Int,fn:(Int,Int)->Int)->Int{
return fn(num1,num2)
}
var (a,b)=(1,2)
//Î²Ëæ±Õ°ü£¬×îºóÒ»¸ö²ÎÊýÊDZհü±í´ïʽʱ¿ÉÒÔÐ¶ÔØÀ¨ºÅÖ®ºó£¬Í¬Ê±×¢ÒâÈç¹ûÕâ¸öº¯ÊýÖ»ÓÐÒ»¸ö±Õ°ü±í´ïʽ²ÎÊýʱ¿ÉÒÔÁ¬Í¨À¨ºÅÒ»¿éÊ¡ÂÔ
//Çë×¢ÒâºÍº¯Êý¶¨Òå½øÐÐÇø·Ö
caculate(a, b){
$0 - $1
} //½á¹û£º-1 |
Ç°ÃæËµ¹ý±Õ°üÖ®ËùÒÔ³ÆÖ®Îª¡°±Õ°ü¡±¾ÍÊÇÒòΪÆä¿ÉÒÔ²¶»ñÒ»¶¨×÷ÓÃÓòÄڵij£Á¿»òÕß±äÁ¿½ø¶ø±ÕºÏ²¢°ü¹ü×Å¡£
func add()->()->Int{
var total=0
var step=1
func fn()->Int{
total+=step
return total
}
return fn
}
//fn²¶»ñÁËtotalºÍstep£¬¾¡¹ÜÏÂÃæµÄadd()Ö´ÐÐÍêºótotalºÍstep±»ÊÍ·Å£¬µ«ÊÇÓÉÓÚfn²¶»ñÁ˶þÕߵĸ±±¾£¬ËùÒÔfn»áËæ×ÅÁ½¸ö±äÁ¿µÄ¸±±¾Ò»Æð±»´æ´¢
var a=add()
a() //½á¹û£º1
a() //½á¹û£º2£¬ËµÃ÷aÖб£´æÁËtotalµÄ¸±±¾£¨·ñÔò½á¹û»áÊÇ1£©
var b=add()
b() //½á¹û£º1 £¬ËµÃ÷aºÍbµ¥¶À±£´æÁËtotalµÄ¸±±¾£¨·ñÔò½á¹û»áÊÇ3£©
var c=b
c() //½á¹û£º2£¬ËµÃ÷±Õ°üÊÇÒýÓÃÀàÐÍ£¬»»¾ä»°Ëµº¯ÊýÊÇÒýÓÃÀàÐÍ£¨·ñÔò½á¹û»áÊÇ1£© |
Swift»á×Ô¶¯¾ö¶¨²¶»ñ±äÁ¿»òÕß³£Á¿¸±±¾µÄ¿½±´ÀàÐÍ£¨Öµ¿½±´»òÕßÒýÓÿ½±´£©¶ø²»ÐèÒª¿ª·¢Õß¹ØÐÄ£¬ÁíÍâ±»²¶»ñµÄ±äÁ¿»òÕß³£Á¿µÄÄÚ´æ¹ÜÀíͬÑùÊÇÓÉSwiftÀ´¹ÜÀí£¬ÀýÈçµ±ÉÏÃæµÄº¯Êýa²»ÔÙʹÓÃÁËÄÇôfn²¶»ñµÄÁ½¸ö±äÁ¿Ò²¾ÍÊÍ·ÅÁË¡£
|