2015-03-23 20 views
10

Tôi biết rằng static từ khóa được sử dụng để khai báo kiểu biến/phương pháp trong struct, enum, vvtĩnh vs lớp như biến lớp/phương pháp (Swift)

Nhưng hôm nay tôi thấy nó cũng có thể được sử dụng trong class thực thể.

class foo { 
    static func hi() { 
    println("hi") 
    } 
    class func hello() { 
    println("hello") 
    } 
} 

Sử dụng từ khóa nào trong thực thể class?

Cảm ơn!

chỉnh sửa: Tôi đang đề cập đến Swift 1.2 nếu mà làm cho bất kỳ sự khác biệt

+0

Phiên bản Xcode nào bạn đang thử mã đó? –

+0

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html#//apple_ref/doc/uid/TP40014097-CH15-ID241? – Larme

Trả lời

18

Từ Xcode 3 beta 3 release notes:

method và thuộc tính “tĩnh” hiện đang được cho phép trong các lớp học (như một bí danh cho "lớp cuối cùng").

Vì vậy, trong Swift 1.2, hi() định nghĩa là

class foo { 
    static func hi() { 
    println("hi") 
    } 
} 

là một phương pháp loại (tức là một phương pháp mà được gọi vào loại chính nó) cũng là thức (tức là không thể ghi đè trong một phân lớp).

+0

bắt tốt. Cảm ơn! –

3

Trong các lớp được sử dụng cho cùng một mục đích. Tuy nhiên trước Swift 1.2 (hiện đang trong giai đoạn thử nghiệm) static không khả dụng - chỉ định class thay thế đã được cung cấp để khai báo các phương thức tĩnh và các thuộc tính được tính, nhưng không được lưu trữ các thuộc tính.

Các vấn đề liên quan