Tôi đang cố gắng hiểu cách thức hoạt động của tính năng lười biếng nhanh chóng. Mã sau đây biên dịch mà không có bất kỳ lỗi nào.Lỗi biên dịch khi sử dụng biến số lười
import UIKit
class Test : UIViewController{
let i = 1
lazy var j:Int = self.i
}
Trong khi đó nếu tôi loại bỏ các loại j và làm cho nó suy ra như mã dưới đây,
import UIKit
class Test : UIViewController{
let i = 1
lazy var j = self.i
}
tôi nhận được lỗi biên dịch "Giá trị của loại 'NSObject ->() -> Test' có không có thành viên 'i' "
Ai đó có thể giải thích những gì đang diễn ra với trình biên dịch. Cảm ơn
Tôi không nghĩ rằng kiểu dữ liệu là cần thiết khi khai báo var lười biếng. Mã "lazy var name =" một số tên "' biên dịch mà không có bất kỳ vấn đề –
Nếu bạn đang đi qua bất kỳ giá trị hardcoded để lười var nó không yêu cầu trình biên dịch kiểu dữ liệu sẽ hiểu loại đó là lý do tại sao lười biếng var name = "some name" đang làm việc. Trong mã của bạn, bạn không gán giá trị trực tiếp, bạn đang cố gắng gán giá trị của tôi với sự giúp đỡ của bản thân. Ở đây trình biên dịch không biết về kiểu dữ liệu tự, i và i. Đó là lý do tại sao kiểu dữ liệu được yêu cầu trong các trường hợp như vậy cũng như trong trường hợp bạn đang viết đóng của bạn lười var. –