Đóng cửa:
Việc sử dụng các biến giữ một hàm so với sử dụng một hàm có thể giúp:
65 byte:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
66 byte:
func r(s:String,i:Int)->String{return String(repeating:s,count:i)}
Sự khác biệt nhỏ ở đây, nhưng nó sẽ hiển thị nhiều hơn trong một số câu đố.
Chức năng rút ngắn:
Nhìn vào ví dụ trước làm tôi nhớ đến một cái gì đó. Đôi khi, nếu bạn sẽ sử dụng một hàm đủ số lần, thì đáng để đổi tên nó:
Điều này:
String(repeating:$0,count:$1)
Về điều này:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
Hoặc, thực sự, điều này là tốt hơn:
var r=String.init(repeating:count:)
Bằng cách đó bạn chỉ cần gọi r("Hello World",8)thay vìString(repeating:"Hello World",count:8)
Rời khỏi Tuyên bố loại:
Tôi đã từng tạo một bao đóng mà không đặt loại đối số, do đó tạo ra một câu trả lời ngắn hơn:
var f={(i)->Int in i-1+i%2*2}
Trình biên dịch suy ra ilà trong Int.
Tạo mảng theo cách nhanh:
Nếu bạn cần một mảng Ints, sử dụng một Rangeđể tạo nó:
Array(0...5)
Điều này thực hiện tương tự như:
[0,1,2,3,4,5]
Mảng thay vì Ifhoặc Switch:
Thay vì làm điều này:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
Bạn có thể làm điều này:
return ["a","b","c"][n]
Rút ngắn các loại:
Nếu bạn đang sử dụng chuyển đổi loại nhiều, bạn có thể muốn tạo bí danh loại:
typealias f=Float
Bản đồ:
Hãy nhớ rằng bạn thường không cần sử dụng returntừ khóa trong maphàm.
Chạy Swift trực tuyến:
Mặc dù Try It Online không hỗ trợ Swift Nó hiện tại !