2014-11-07 2 views
5

자바에서는 인터페이스에서 최종 정적 문자열을 초기화 할 수 있습니다. 스위프트에도 방법이 있습니까?Swift 프로토콜의 상수 변수 초기화

+0

왜이 코드를 읽지 않는 것이 좋을까요? https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/Protocols.html? Swift의 프로토콜에 대한 모든 것을 알려줍니다. –

+0

일반적으로 인터페이스에서 상수를 선언하는 것은 좋은 아키텍처가 아닙니다. 나는 많은 자바 개발자들이 그렇게하고 있다는 것을 알고있다. 그리고 나서 그것들은 클래스에 상수가있는 인터페이스를 구현하고 있지만 인터페이스의 개념을 악용하고있다. 인터페이스는 공통 인터페이스, 즉 일반적인 메소드를 제공해야합니다. 상수가 아닙니다. – Sulthan

답변

3

빠른 대응은 지원하지 않습니다. 내 충고는 프로토콜과 함께 구조체를 정의하고 모든 상수를 고정 된 정적 저장 속성으로 정의하는 것입니다. 구조체는 적어도 하나의 이유로, 클래스에 선호된다

protocol MyProtocol { 
} 

struct MyProtocolConstants { 
    static let myConstant = 10 
} 

참고 : 예를 들어 클래스가

+0

빠른 답변 주셔서 감사합니다. –

2

사실 (아직) 정적 저장 속성을 지원하지 않습니다, 당신은 프로토콜 확장을 사용하여 신속한에서이 작업을 수행 할 수 있습니다 :

protocol Order { 
    var MAX_ORDER_ITEMS: Int { get } 
    func getItem(item: Int) -> OrderItem 
    // etc 
} 

는 프로토콜 확장을 정의 :

당신이 게터와 원하는 변수를 프로토콜을 만들고 정의

extension Order { 
    var MAX_ORDER_ITEMS: Int { return 1000 } 
} 

이점은 평소와 같이 프로토콜 이름 앞에 Swift 및 통계를 추가 할 필요가 없다는 것입니다.

유일한 문제는 프로토콜을 구현하는 클래스 내에서만 변수에 액세스 할 수 있다는 것입니다 (어쨌든 가장 일반적인 경우 일 수 있습니다).