ปิดกิจการ
การใช้ตัวแปรที่เก็บฟังก์ชันกับการใช้ฟังก์ชันสามารถช่วย:
65 ไบต์:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
66 ไบต์:
func r(s:String,i:Int)->String{return String(repeating:s,count:i)}
ความแตกต่างเล็กน้อยที่นี่ แต่มันจะแสดงเพิ่มเติมในปริศนาบางอย่าง
ฟังก์ชั่นการตัดทอน:
การดูตัวอย่างก่อนหน้าทำให้ฉันนึกถึงบางสิ่ง บางครั้งถ้าคุณจะใช้ฟังก์ชั่นเพียงพอครั้งมันก็คุ้มค่าที่จะเปลี่ยนชื่อ:
นี้:
String(repeating:$0,count:$1)
สำหรับสิ่งนี้:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
หรืออันที่จริงดีกว่า:
var r=String.init(repeating:count:)
ด้วยวิธีนี้คุณเพียงแค่โทรหาr("Hello World",8)
แทนString(repeating:"Hello World",count:8)
ออกจากการประกาศประเภท:
ฉันเคยสร้างการปิดโดยไม่ตั้งค่าประเภทอาร์กิวเมนต์ดังนั้นการสร้างคำตอบที่สั้นกว่า:
var f={(i)->Int in i-1+i%2*2}
คอมไพเลอร์เหมาเอาว่าอยู่ในi
Int
สร้างอาร์เรย์อย่างรวดเร็ว:
หากคุณต้องการอาเรย์Ints
ให้ใช้Range
เพื่อสร้าง:
Array(0...5)
สิ่งนี้ทำเช่นเดียวกับ:
[0,1,2,3,4,5]
อาร์เรย์แทนIf
หรือSwitch
:
แทนที่จะทำสิ่งนี้:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
คุณอาจจะทำสิ่งนี้:
return ["a","b","c"][n]
ร่นประเภท:
หากคุณใช้การแปลงประเภทมากคุณอาจต้องการสร้างนามแฝงประเภท:
typealias f=Float
แผนที่:
โปรดจำไว้ว่าคุณไม่จำเป็นต้องใช้return
คำหลักในmap
ฟังก์ชั่น
ใช้งาน Swift Online:
แม้ว่าTry It Onlineไม่รองรับ Swift It now !