Swift 5๋ถํฐ ์ง์ํ๋ ๋ฌธ์์ด ํํ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์ ์ ์ ๊ฐ์ด ์์๋ด ์๋ค.
SE-0200 Enhancing String Literals Delimiters to Support Raw Text
๋ง์ ๋ค๋ฅธ ์ธ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก Swift๋ ์ด์ค์ผ์ดํ ๋ฌธ์( \ )๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ด์์ ํ์ ๋ฌธ์์ ํน๋ณํ ํด์์ ๋ง๋ญ๋๋ค. ์ด์ค์ผ์ดํ ๋ฌธ์ ์ํ์ค๋ ๋ฌธ์์ด ๊ตฌ๋ถ ๊ธฐํธ(ํฐ ๋ฐ์ดํ), ์ด์ค์ผ์ดํ ๋ฌธ์(๋ฐฑ ์ฌ๋์), ๋ฌธ์์ด ๋ณด๊ฐ ๋ฑ์ ๋ํ ๋ฌธ์ ์งํฉ์ ๋ํ๋ ๋๋ค. ์ฌ์ค ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ฌด ๊ท์ฐฎ์ ์ผ์ด๊ณ , ๋ฌธ์์ด ๋ฆฌํฐ๋ด ์์ ๋ง์ ์ด์ค์ผ์ดํ ์ํ์ค๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ฝ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด๋ฅผ Apple์์ ์์์ฃผ์๋์ง Swift 5๋ถํฐ๋ ์กฐ๊ธ ๋ ๋จ์ํ๊ณ ๊น๋ํ๊ฒ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๊ตฌ๋ฌธ์ ์์ฑํ ์ ์๊ฒ ๋์์ต๋๋ค.
์ฌ์ฉ๋ฒ: Hash(#) ๊ตฌ๋ถ ๊ธฐํธ ์ฌ์ฉ
ํด์(#) ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํด์ ๋จ์ํ๊ณ ๊น๋ํ ๊ตฌ๋ฌธ์ ์์ฑํ ์ ์์ต๋๋ค.
1. ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
let rawStrings = "Hello, \"Raw Strings\"."
let rawStrings = #"Hello, "Raw Strings"."#
Output)
Hello, "Raw Strings".
Hello, "Raw Strings".
2. ์ด์ค์ผ์ดํ ์ํ์ค์ ์ญํ ์ ์ ์งํ๊ณ ์ถ์ ๋
Raw String์์๋ ๋ชจ๋ ๋ฌธ์์ ์ด์ค์ผ์ดํ ์ํ์ค๊ฐ ๊ทธ๋๋ก ์ถ๋ ฅ์ด ๋ฉ๋๋ค. ์ค๋ฐ๊ฟ๋ ํ๊ณ ์ถ๊ณ , ๊ทธ๋ฅ ๋ฐฑ ์ฌ๋์๋ ์ฐ๊ณ ์ถ์๋ฐ ์ด๋กํ์ฃ ? ๋ ๋ฒ์งธ ์ฝ๋์ฒ๋ผ ์์ฑํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
let escapeStrings = #"์ค์ ๋ฐ๊พธ๊ณ ์ถ์ด์. \n\n ์ฌ๊ธฐ์ ๋ถํฐ์."#
// output)
// ์ค์ ๋ฐ๊พธ๊ณ ์ถ์ด์. \n\n ์ฌ๊ธฐ์ ๋ถํฐ์.
let escapeStrings = #"์ค์ ๋ฐ๊พธ๊ณ ์ถ์ด์. \#n\#n์ฌ๊ธฐ์ ๋ถํฐ์."#
// output)
// ์ค์ ๋ฐ๊พธ๊ณ ์ถ์ด์.
//
// ์ฌ๊ธฐ์ ๋ถํฐ์.
3. ๋ณ์์ ํจ๊ป ์ฌ์ฉํ๊ณ ์ถ์ ๋ (- ๋ฌธ์์ด ๋ณด๊ฐ๋ฒ)
ํด์ ๊ธฐํธ์ ๊ฐ์๋ ์ฌ์ฉํ๋ ๋ถ๋ถ์์ ๋์ผํ๊ฒ ๋ง์ถฐ์ฃผ๊ธฐ๋ง ํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํน๋ณํ ์ด์ ๊ฐ ์๋ค๋ฉด 1๊ฐ๋ง ์ฐ๋ ๊ฒ์ด ๋ซ๊ฒ ์ฃ ?
var onlineService = "WhaleOn"
var finalNotice = ##"์จ๋ผ์ธ ๋ผ์ด๋ธ ์์
์ \##(onlineService)์ผ๋ก ์งํํฉ๋๋ค."##
// output)
// ์จ๋ผ์ธ ๋ผ์ด๋ธ ์์
์ WhaleOn์ผ๋ก ์งํํฉ๋๋ค.
4. ์ฌ๋ฌ ์ค์์ ์ฌ์ฉํ๊ณ ์ถ์ ๋
์์๊ณผ ๋์ ํด์ ๊ธฐํธ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋ฉ๋๋ค.
let number: Int = 2
let multiline = #"""
This is
SeSAC \#(number).
"""#
5. ์ ๊ท์ ์ฌ์ฉ ์
How to use raw strings in Swift 5 ์ํฐํด์ ์ฝ์ด๋ณด๋ฉด ์ ๊ท์์ ์ฌ์ฉํ ๋์๋ Raw String์ด ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ธฐ์กด์ ์ ๊ท์์ ์์ฑํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ๋ฐฑ ์ฌ๋์()๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒ์ ๊ฒฝํํด๋ณด์ จ์ ๊ฒ์ ๋๋ค. ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ด์์ ๋ฐฑ ์ฌ๋์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ค๋ฉด ๋ ํ๋์ ๋ฐฑ ์ฌ๋์๋ฅผ ๋ถ์ฌ์ค์ผ ํ์์ฃ . ์ด๋ฌํ ๊ท์ฐฎ์, ๋ณต์กํจ์ ํด์(#) ๊ธฐํธ๋ฅผ ๋ถ์์ผ๋ก์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
let regex = try NSRegularExpression(pattern: "\\\\\\([^)]+\\)")
let regex = try NSRegularExpression(pattern: #"\\\([^)]+\)"#)
๊ธฐ์กด ์ ๊ท์์ ์ฌ์ฉ๋๋ ๋ฐฑ ์ฌ๋์์ ์๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ผ ์ ์๊ณ , ๋ํ ๊ฐ์ ธ์จ ์ ๊ท์ ํํ์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
'๐ iOS & Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
forEach์ for-in์ ๋ํ ๊ณ ์ฐฐ (0) | 2022.07.19 |
---|---|
์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ Contributor ๋์ด๋ณด๊ธฐ(with FSCalendar) (10) | 2022.07.14 |
Image Rendering Mode (Original Image vs Template Image) (0) | 2022.07.12 |
Alpha vs Opacity (0) | 2022.07.11 |
IBOutlet Collection์ฐ๊ฒฐ ์ weak ์์์ด๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ (1) | 2022.07.11 |