Đó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 i
là 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ì If
hoặ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 return
từ khóa trong map
hàm.
Chạy Swift trực tuyến:
Mặc dù Try It Online không hỗ trợ Swift Nó hiện tại !