let val = (Double)6
Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Cơ bản: Hằng số và Biến
let x = 5
guard x == 5 { return }
else trong guard then trong guard Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Luồng điều khiển: Thoát sớm
enum Direction {
case north, south, east, west
}
String Any Int Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Các loại liệt kê: Giá trị gốc
Tham khảo: Apple Developer: Tài liệu: Dispatch: Dispatch Group
let val = 5
print("Giá trị là: \(val)")
Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Chuỗi và Ký tự: Nội suy chuỗi
vals sẽ là gì sau khi đoạn mã này được thực thi?var vals = [10, 2]
vals.sort { (s1, s2) -> Bool in
s1 > s2
}
[10, 2] [2, 10] nil typealias Thing = [String: Any]
var stuff: Thing
print(type(of: stuff))
Dictionary<String, Any> Dictionary Lỗi Thing Tham khảo: Ngôn ngữ lập trình Swift: Tài liệu tham khảo: Loại: Nhận dạng kiểu
let x = ["1", "2"].dropFirst()
let y = x[0]
1 2 nil giải thích
dropFirst() từ Swift.Collection.Array trả về một kiểu ArraySlice<Element>
như trong trang tài liệu:
@inlinable public func dropFirst(_ k: Int = 1) -> ArraySlice<Element>
Kiểu ArraySlice làm cho việc thực hiện các hoạt động trên các phần của một mảng lớn trở nên nhanh chóng và hiệu quả. Thay vì sao chép các phần tử của một lát cắt sang bộ nhớ mới, một thể hiện ArraySlice trình bày một cái nhìn vào bộ nhớ của một mảng lớn hơn. Và vì ArraySlice trình bày cùng một giao diện như Array, bạn có thể thực hiện các hoạt động tương tự trên một lát cắt như bạn có thể trên mảng gốc.
Lát cắt bảo quản các chỉ số bắt đầu cho một thể hiện ArraySlice không luôn luôn là không. Lát cắt duy trì các chỉ số giống như của mảng lớn hơn cho các phần tử tương tự, vì vậy chỉ số bắt đầu của một lát cắt phụ thuộc vào cách nó được tạo ra, cho phép bạn thực hiện các hoạt động dựa trên chỉ số tr
ên một mảng hoặc một lát cắt.
Đoạn mã trên trả về một lát cắt giá trị ["2"] nhưng chỉ số không thay đổi. let y = x[1] sẽ cho kết quả mong đợi.
Để tham chiếu an toàn tới các chỉ số bắt đầu và kết thúc của một lát cắt, luôn sử dụng các thuộc tính startIndex và endIndex thay vì các giá trị cụ thể.
Tham khảo
var test = 1 == 1
true YES 1 Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Toán tử cơ bản: Toán tử so sánh
var x: Int?
let y = x ?? 5
5 0 nil Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Toán tử cơ bản: Toán tử Nil-Coalescing
func add(a: Int, b: Int) -> Int { return a+b }
Int (Int, Int) -> Int Int<Optional> Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Hàm: Kiểu hàm
func myFunc(_ a: Int, b: Int) -> Int {
return a + b
}
myFunc(5, b: 6) myFunc(5, 6) myFunc(a: 5, b: 6) myFunc(a, b) Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Hàm: Nhãn tham số và tên tham số
Encodable và Decodable Tham khảo:
let value1 = "\("test".count)"
String Int null test.count Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Chuỗi và Ký tự: Nội suy chuỗi
Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Closures: Closures thoát
class Person {
var name: String
var address: String
}
var name không được định dạng đúng cách. address là một từ khóa. Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Khởi tạo: Kế thừa lớp và khởi tạo
let names = ["Bear", "Joe", "Clark"]
names.map { (s) -> String in
return s.uppercased()
}
["BEAR", "JOE", "CLARK"] ["B", "J", "C"] "Clark"]`
let val = 5
Int item Number Int Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Cơ bản: An toàn kiểu và Suy luận kiểu
extension String {
var firstLetter: Character = "c" {
didSet {
print("giá trị mới")
}
}
}
didSet cần một tham số. c không phải là một ký tự. Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Extensions: Các thuộc tính tính toán
newOld gọi Tham khảo: Ngôn ngữ lập trình Swift: Hướng dẫn ngôn ngữ: Thuộc tính