자바에서는 인터페이스에서 최종 정적 문자열을 초기화 할 수 있습니다. 스위프트에도 방법이 있습니까?Swift 프로토콜의 상수 변수 초기화
5
A
답변
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 및 통계를 추가 할 필요가 없다는 것입니다.
유일한 문제는 프로토콜을 구현하는 클래스 내에서만 변수에 액세스 할 수 있다는 것입니다 (어쨌든 가장 일반적인 경우 일 수 있습니다).
관련 문제
- 1. Swift 프로토콜의 초기화 프로그램을 지정해야합니다. 왜 이렇게이다?
- 2. 변수 값으로 상수 초기화
- 3. Objective-C 프로토콜의 Swift Extensions
- 4. C++ 문자열 상수 및 정적 변수 초기화
- 5. 구조체의 상수 배열 초기화
- 6. angularjs - 템플릿에서 상수 초기화
- 7. 공유 NSUserDefaults 초기화 Swift
- 8. 키의 초기화 값 - Swift
- 9. Swift : 중첩 클래스 초기화
- 10. 메모리 Swift 클래스 외부의 변수 및 상수 할당
- 11. PHP 상수 멤버 변수
- 12. 런타임에 초기화해야하는 상수 변수
- 13. 상수 변수 대 상수 참조
- 14. 리플렉션에 의한 초기화 문자열 상수
- 15. 레일에서 DB의 값으로 상수 초기화
- 16. 경고 : 이미 초기화 된 상수
- 17. 상수 타입으로 변환, 배열 초기화
- 18. Directx11 상수 셰이더 버퍼 초기화
- 19. PHP의 생성자에서 클래스 상수 초기화
- 20. 상수 초기화 처리 방법은 무엇입니까?
- 21. 사용자가 정의한 C++ 상수 변수
- 22. ObjC 프로토콜의 프로토콜 확장
- 23. 변수 초기화
- 24. 변수 초기화
- 25. 변수 초기화
- 26. 변수 초기화
- 27. 변수 초기화
- 28. "이미 초기화 된 상수"경고의 원인은 무엇입니까?
- 29. NSCoding 프로토콜의 변경 내용
- 30. PHP - 상수/전역 변수/구성
왜이 코드를 읽지 않는 것이 좋을까요? https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/Protocols.html? Swift의 프로토콜에 대한 모든 것을 알려줍니다. –
일반적으로 인터페이스에서 상수를 선언하는 것은 좋은 아키텍처가 아닙니다. 나는 많은 자바 개발자들이 그렇게하고 있다는 것을 알고있다. 그리고 나서 그것들은 클래스에 상수가있는 인터페이스를 구현하고 있지만 인터페이스의 개념을 악용하고있다. 인터페이스는 공통 인터페이스, 즉 일반적인 메소드를 제공해야합니다. 상수가 아닙니다. – Sulthan