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