Tôi đang đập đầu vào tường bằng đoạn mã sau trong Swift. Tôi đã xác định một giao thức đơn giản:Không thể gán cho thuộc tính trong giao thức - Lỗi biên dịch Swift
protocol Nameable {
var name : String { get set }
}
và thực hiện điều đó với:
class NameableImpl : Nameable {
var name : String = ""
}
và sau đó tôi có các phương pháp sau đây trong tập tin khác (đừng hỏi tôi tại sao):
func nameNameable(nameable: Nameable, name: String) {
nameable.name = name
}
Vấn đề là trình biên dịch cung cấp lỗi sau cho việc gán thuộc tính trong phương thức này:
không thể gán cho 'tên' trong 'nameable'
Tôi không thể nhìn thấy những gì tôi đang làm sai ... Các mã sau biên dịch tốt:
var nameable : Nameable = NameableImpl()
nameable.name = "John"
Tôi chắc chắn nó là một cái gì đó đơn giản tôi đã bỏ qua - tôi đang làm gì sai?
tl; dr thay đổi "để myProtocolConformingItem" thành "var myProtocolConformingItem" –
@ Matt Trong khi đề xuất này/giải pháp chắc chắn công trình và hiện tại thậm chí được đề xuất bởi trình biên dịch, bạn có cho rằng đó là một mã nguồn không? – damirstuhec
tôi đang gặp lỗi 'sử dụng loại không khai báo có thể đặt tên' – Jack