SwiftUI.Text 에 Int 가 변수 전개된 String 를 건네주면 3 자리수 단락이 된다
도대체 어떻게 되어 있다면! !
print(String(1234))
// -> 1234
print("\(1234)")
// -> 1234
물론, 보통으로 변수 전개된 String 를 print 해도 3 자리수 단락은 되지 않습니다.
분명히, 변수 전개하고 있는 개소에 이 이상한 거동의 비밀이 있을 것 같습니다.
이 행동은 도대체 무엇입니까?
조사해 보니 여기 기사를 만났습니다. 굉장히 잘 정리되어 있고, Int 이외의 변수 전개에 대해서도 쓰여져 있으므로 꼭 이쪽도 봐 주세요. (텍스트 변수 확장에 이미지와 다른 텍스트 넣을 수 몰랐어 ...)
요약하면
LocalizedStringKey
를받습니다 LocalizedStringKey
는 ExpressibleByStringInterpolation
에 준거하는 형태로, StringInterpolationProtocol
에 준거한 형 StringInterpolation
를 내부적으로 가지고 있다 LocalizedStringKey.StringInterpolation
를 확장하여 appendInterpolation
를 정의하여 사용자 정의 변수 배포를 사용할 수 있습니다. 이러한 구현에 의해, 커스터마이즈 된 변수 전개를 할 수 있게 되어 있습니다.
게다가 이번 거동에 대해 소개
SwiftUI에 정의되어 있는
appendInterpolation
에는 public mutating func appendInterpolation<T>(_ value: T) where T : _FormatSpecifiable
라는 메소드가 있어, 이번의 거동은 이것이 관계하고 있습니다.public protocol _FormatSpecifiable : Swift.Equatable {
associatedtype _Arg : Swift.CVarArg
var _arg: Self._Arg { get }
var _specifier: Swift.String { get }
}
_FormatSpecifiable
의 정의는 위와 같습니다.extension Int : SwiftUI._FormatSpecifiable
extension Int8 : SwiftUI._FormatSpecifiable
extension Int16 : SwiftUI._FormatSpecifiable
extension Int32 : SwiftUI._FormatSpecifiable
extension Int64 : SwiftUI._FormatSpecifiable
extension UInt : SwiftUI._FormatSpecifiable
extension UInt8 : SwiftUI._FormatSpecifiable
extension UInt16 : SwiftUI._FormatSpecifiable
extension UInt32 : SwiftUI._FormatSpecifiable
extension UInt64 : SwiftUI._FormatSpecifiable
extension Float : SwiftUI._FormatSpecifiable
extension Double : SwiftUI._FormatSpecifiable
extension CGFloat : SwiftUI._FormatSpecifiable
Int
또는 Double
와 같은 숫자 형식이 _FormatSpecifiable
를 준수함을 알 수 있습니다.그건 그렇고, Double을 통과하면
%.6f
상당의 포맷이 되어 있어 포맷의 되는 방법도 수치형에 따라서 달라 있는 것 같습니다.이
_FormatSpecifiable
를 확장한 구현의 내용까지는 확인할 수 없었습니다만, appendInterpolation
에는 그 밖에도 public mutating func appendInterpolation<T>(_ value: T, specifier: String) where T : _FormatSpecifiable
메소드가 나오고,와 같은 사용법을 할 수 있기 (위해)때문에, 각종의 수치형에 대해서 위와 같은 캐릭터 라인 포맷 지정자가
_specifier
로 각각 설정되어 있는 것이라고 생각됩니다.참고 자료
Reference
이 문제에 관하여(SwiftUI.Text 에 Int 가 변수 전개된 String 를 건네주면 3 자리수 단락이 된다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/natmark/items/0c260271637e4bec005b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)