{"id":1095,"date":"2026-05-31T01:52:05","date_gmt":"2026-05-30T16:52:05","guid":{"rendered":"https:\/\/nangchang.nes.or.kr\/?p=1095"},"modified":"2026-05-31T01:52:05","modified_gmt":"2026-05-30T16:52:05","slug":"9%ed%8e%b8-%ec%97%b4%ea%b1%b0%ed%98%95enum-%ec%97%b0%ea%b4%80%ea%b0%92%ea%b3%bc-%ed%8c%a8%ed%84%b4-%eb%a7%a4%ec%b9%ad","status":"publish","type":"post","link":"https:\/\/nangchang.nes.or.kr\/?p=1095","title":{"rendered":"[9\ud3b8] \uc5f4\uac70\ud615(enum) \u2014 \uc5f0\uad00\uac12\uacfc \ud328\ud134 \ub9e4\uce6d"},"content":{"rendered":"<blockquote>\n<p>\ud83e\udd16 \uc774 \uae00\uc740 <a href=\"https:\/\/claude.ai\/claude-code\">Claude Code<\/a>(AI)\uac00 \uc791\uc131\ud569\ub2c8\ub2e4. | <a href=\"https:\/\/nangchang.nes.or.kr\/?p=1085\">\uc2dc\ub9ac\uc988 \ubaa9\ucc28<\/a> | \uc774\uc804: <a href=\"https:\/\/nangchang.nes.or.kr\/?p=1094\">8\ud3b8<\/a><\/p>\n<\/blockquote>\n<p>C\ub098 Java\uc758 enum\uc744 \uc54c\uace0 \uc788\ub2e4\uba74 &#8220;\uc0c1\uc218\uc5d0 \uc774\ub984\uc744 \ubd99\uc774\ub294 \uac83&#8221; \uc815\ub3c4\ub85c \uc0dd\uac01\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Swift\uc758 enum\uc740 \uadf8\uac83\ubcf4\ub2e4 \ud6e8\uc52c \uac15\ub825\ud569\ub2c8\ub2e4. \uac01 \ucf00\uc774\uc2a4\uac00 \uc11c\ub85c \ub2e4\ub978 \ud0c0\uc785\uc758 \ub370\uc774\ud130\ub97c \ud488\uc744 \uc218 \uc788\uace0, \uba54\uc11c\ub4dc\uc640 \uc5f0\uc0b0 \ud504\ub85c\ud37c\ud2f0\ub3c4 \uac00\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0c1\ud0dc \uba38\uc2e0, \uc5d0\ub7ec \ud0c0\uc785, \ub124\ud2b8\uc6cc\ud06c \uc751\ub2f5 \ubaa8\ub378\ub9c1\uc5d0 \uc774\ub974\uae30\uae4c\uc9c0 Swift \ucf54\ub4dc \uacf3\uacf3\uc5d0\uc11c \uc4f0\uc785\ub2c8\ub2e4.<\/p>\n<hr \/>\n<h2>\uae30\ubcf8 enum<\/h2>\n<pre><code>enum Direction {\n    case north\n    case south\n    case east\n    case west\n}\n\nlet heading = Direction.north\n\n\/\/ \ud0c0\uc785\uc774 \uc774\ubbf8 \uc54c\ub824\uc9c4 \uacbd\uc6b0 \ud0c0\uc785\uba85 \uc0dd\ub7b5 \uac00\ub2a5\nvar current: Direction = .east\ncurrent = .west\n<\/code><\/pre>\n<p>switch\uc640 \ud568\uaed8 \uc4f8 \ub54c enum\uc758 \ud798\uc774 \ub4dc\ub7ec\ub0a9\ub2c8\ub2e4. \ubaa8\ub4e0 \ucf00\uc774\uc2a4\ub97c \ucc98\ub9ac\ud558\uc9c0 \uc54a\uc73c\uba74 \ucef4\ud30c\uc77c \uc624\ub958\uac00 \ub0a9\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ucf00\uc774\uc2a4\ub97c \ucd94\uac00\ud558\uba74 \ucef4\ud30c\uc77c\ub7ec\uac00 \ucc98\ub9ac\ud558\uc9c0 \uc54a\uc740 \uacf3\uc744 \ubaa8\ub450 \uc54c\ub824\uc90d\ub2c8\ub2e4.<\/p>\n<pre><code>switch heading {\ncase .north: print(\"\ubd81\ucabd\")\ncase .south: print(\"\ub0a8\ucabd\")\ncase .east:  print(\"\ub3d9\ucabd\")\ncase .west:  print(\"\uc11c\ucabd\")\n\/\/ default \ubd88\ud544\uc694 \u2014 \ubaa8\ub4e0 \ucf00\uc774\uc2a4 \ucc98\ub9ac\ub428\n}\n<\/code><\/pre>\n<hr \/>\n<h2>rawValue \u2014 \uae30\ubcf8\uac12 \uc5f0\uacb0<\/h2>\n<p>\uac01 \ucf00\uc774\uc2a4\uc5d0 \uc815\uc218\ub098 \ubb38\uc790\uc5f4 \uae30\ubcf8\uac12(rawValue)\uc744 \ubd99\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>enum Planet: Int {\n    case mercury = 1\n    case venus\n    case earth    \/\/ \uc790\ub3d9\uc73c\ub85c 3\n    case mars     \/\/ \uc790\ub3d9\uc73c\ub85c 4\n}\n\nprint(Planet.earth.rawValue)   \/\/ 3\nprint(Planet(rawValue: 2))     \/\/ Optional(.venus)\nprint(Planet(rawValue: 99))    \/\/ nil\n<\/code><\/pre>\n<p>rawValue\ub85c \uc0dd\uc131\ud558\uba74 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uac12\uc774 \ub4e4\uc5b4\uc62c \uc218 \uc788\uc73c\ubbc0\ub85c \uc635\uc154\ub110\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<pre><code>enum HTTPMethod: String {\n    case get    = \"GET\"\n    case post   = \"POST\"\n    case put    = \"PUT\"\n    case delete = \"DELETE\"\n}\n\nlet method = HTTPMethod.get\nprint(method.rawValue)  \/\/ GET\n<\/code><\/pre>\n<hr \/>\n<h2>\uc5f0\uad00\uac12(Associated Values) \u2014 \ub370\uc774\ud130\ub97c \ud488\ub294 enum<\/h2>\n<p>Swift enum\uc758 \ud575\uc2ec \uae30\ub2a5\uc785\ub2c8\ub2e4. \uac01 \ucf00\uc774\uc2a4\ub9c8\ub2e4 \uc11c\ub85c \ub2e4\ub978 \ud0c0\uc785\uc758 \ub370\uc774\ud130\ub97c \ub2f4\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>enum NetworkResult {\n    case success(data: Data, statusCode: Int)\n    case failure(error: String)\n    case loading(progress: Double)\n}\n\nlet result = NetworkResult.success(data: Data(), statusCode: 200)\n\nswitch result {\ncase .success(let data, let code):\n    print(\"\uc131\uacf5: \\(code), \\(data.count) bytes\")\ncase .failure(let error):\n    print(\"\uc2e4\ud328: \\(error)\")\ncase .loading(let progress):\n    print(\"\ub85c\ub529 \uc911: \\(Int(progress * 100))%\")\n}\n<\/code><\/pre>\n<p>\uc5f0\uad00\uac12 \ub355\ubd84\uc5d0 \ub124\ud2b8\uc6cc\ud06c \uc751\ub2f5\uc758 \uc138 \uac00\uc9c0 \uc0c1\ud0dc\ub97c \ud558\ub098\uc758 \ud0c0\uc785\uc73c\ub85c \ud45c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc744 \ubcc4\ub3c4\uc758 \ud074\ub798\uc2a4 \uc138 \uac1c\ub85c \ub9cc\ub4e4\uac70\ub098, \ub515\uc154\ub108\ub9ac\ub85c \ucc98\ub9ac\ud558\ub294 \uac83\ubcf4\ub2e4 \ud6e8\uc52c \uba85\ud655\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc5f0\uad00\uac12\uc758 \uc77c\ubd80\ub9cc \ud544\uc694\ud560 \ub54c\ub294 <code>_<\/code>\ub85c \ubb34\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<pre><code>if case .success(_, let code) = result {\n    print(\"\uc0c1\ud0dc \ucf54\ub4dc: \\(code)\")\n}\n<\/code><\/pre>\n<hr \/>\n<h2>\uba54\uc11c\ub4dc\uc640 \uc5f0\uc0b0 \ud504\ub85c\ud37c\ud2f0<\/h2>\n<p>enum\ub3c4 \uba54\uc11c\ub4dc\uc640 \uc5f0\uc0b0 \ud504\ub85c\ud37c\ud2f0\ub97c \uac00\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>enum Suit {\n    case spades, hearts, diamonds, clubs\n\n    var isRed: Bool {\n        self == .hearts || self == .diamonds\n    }\n\n    func symbol() -> String {\n        switch self {\n        case .spades:   return \"\u2660\ufe0f\"\n        case .hearts:   return \"\u2764\ufe0f\"\n        case .diamonds: return \"\u2666\ufe0f\"\n        case .clubs:    return \"\u2663\ufe0f\"\n        }\n    }\n}\n\nlet card = Suit.hearts\nprint(card.isRed)     \/\/ true\nprint(card.symbol())  \/\/ \u2764\ufe0f\n<\/code><\/pre>\n<hr \/>\n<h2>CaseIterable \u2014 \ubaa8\ub4e0 \ucf00\uc774\uc2a4 \uc21c\ud68c<\/h2>\n<p><code>CaseIterable<\/code>\uc744 \ucc44\ud0dd\ud558\uba74 <code>allCases<\/code> \ud504\ub85c\ud37c\ud2f0\ub85c \ubaa8\ub4e0 \ucf00\uc774\uc2a4\ub97c \ubc30\uc5f4\ub85c \uc5bb\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>enum Season: CaseIterable {\n    case spring, summer, autumn, winter\n}\n\nfor season in Season.allCases {\n    print(season)\n}\n\/\/ spring, summer, autumn, winter\n\nprint(Season.allCases.count)  \/\/ 4\n<\/code><\/pre>\n<hr \/>\n<h2>\uc2e4\uc804 \ud328\ud134 1: \uc0c1\ud0dc \uba38\uc2e0<\/h2>\n<p>UI\ub098 \ub124\ud2b8\uc6cc\ud06c \ub85c\uc9c1\uc758 \uc0c1\ud0dc\ub97c enum\uc73c\ub85c \ud45c\ud604\ud558\uba74 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc740 \uc0c1\ud0dc\uac00 \uc5c6\uc74c\uc744 \ucef4\ud30c\uc77c\ub7ec\uac00 \ubcf4\uc7a5\ud574\uc90d\ub2c8\ub2e4.<\/p>\n<pre><code>enum LoadingState {\n    case idle\n    case loading\n    case loaded(items: [String])\n    case error(message: String)\n}\n\nvar state: LoadingState = .idle\n\n\/\/ \uc0c1\ud0dc\uc5d0 \ub530\ub77c UI \uc5c5\ub370\uc774\ud2b8\nfunc updateUI(for state: LoadingState) {\n    switch state {\n    case .idle:\n        showPlaceholder()\n    case .loading:\n        showSpinner()\n    case .loaded(let items):\n        showList(items)\n    case .error(let message):\n        showError(message)\n    }\n}\n<\/code><\/pre>\n<hr \/>\n<h2>\uc2e4\uc804 \ud328\ud134 2: \uc5d0\ub7ec \ud0c0\uc785<\/h2>\n<p><code>Error<\/code> \ud504\ub85c\ud1a0\ucf5c\uc744 \ucc44\ud0dd\ud55c enum\uc740 Swift\uc758 \uc5d0\ub7ec \ucc98\ub9ac \uc2dc\uc2a4\ud15c\uacfc \ubc14\ub85c \uc5f0\uacb0\ub429\ub2c8\ub2e4. \uc5d0\ub7ec \ucc98\ub9ac\ub294 11\ud3b8\uc5d0\uc11c \uc790\uc138\ud788 \ub2e4\ub8e8\uc9c0\ub9cc, \uc5d0\ub7ec \ud0c0\uc785 \uc790\uccb4\ub294 enum\uc73c\ub85c \ub9cc\ub4dc\ub294 \uac83\uc774 \uad00\ub840\uc785\ub2c8\ub2e4.<\/p>\n<pre><code>enum FileError: Error {\n    case notFound(path: String)\n    case permissionDenied\n    case corrupted(reason: String)\n}\n\nfunc readFile(at path: String) throws -> String {\n    guard path.hasPrefix(\"\/\") else {\n        throw FileError.notFound(path: path)\n    }\n    return \"\ud30c\uc77c \ub0b4\uc6a9\"\n}\n<\/code><\/pre>\n<hr \/>\n<h2>indirect \u2014 \uc7ac\uadc0 \uc5f4\uac70\ud615<\/h2>\n<p>enum\uc758 \uc5f0\uad00\uac12\uc5d0 \uac19\uc740 enum \ud0c0\uc785\uc774 \ub4e4\uc5b4\uac08 \ub54c\ub294 <code>indirect<\/code>\ub97c \uc501\ub2c8\ub2e4. \ud2b8\ub9ac\ub098 \uc5f0\uacb0 \ub9ac\uc2a4\ud2b8 \uac19\uc740 \uc7ac\uadc0\uc801 \uc790\ub8cc\uad6c\uc870\ub97c \ud45c\ud604\ud560 \ub54c \uc501\ub2c8\ub2e4.<\/p>\n<pre><code>indirect enum Tree {\n    case leaf(Int)\n    case node(Tree, Tree)\n}\n\nlet tree = Tree.node(\n    .node(.leaf(1), .leaf(2)),\n    .leaf(3)\n)\n<\/code><\/pre>\n<hr \/>\n<h2>\ub2e4\ub978 \uc5b8\uc5b4\uc640 \ube44\uad50<\/h2>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>C \/ Java<\/th>\n<th>Kotlin<\/th>\n<th>Swift<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\ucf00\uc774\uc2a4\uc5d0 \ub370\uc774\ud130 \ucca8\ubd80<\/td>\n<td>\ubd88\uac00<\/td>\n<td><code>sealed class<\/code>\ub85c \uac00\ub2a5<\/td>\n<td>\uc5f0\uad00\uac12\uc73c\ub85c \uc9c1\uc811 \uac00\ub2a5<\/td>\n<\/tr>\n<tr>\n<td>\uba54\uc11c\ub4dc \ud3ec\ud568<\/td>\n<td>Java enum \uac00\ub2a5<\/td>\n<td>\uac00\ub2a5<\/td>\n<td>\uac00\ub2a5<\/td>\n<\/tr>\n<tr>\n<td>switch \ub9dd\ub77c\uc131<\/td>\n<td>\uac15\uc81c \uc544\ub2d8<\/td>\n<td>\uac15\uc81c \uc544\ub2d8<\/td>\n<td>\uac15\uc81c<\/td>\n<\/tr>\n<tr>\n<td>rawValue<\/td>\n<td>\uc815\uc218 \uc790\ub3d9 \ud560\ub2f9<\/td>\n<td>\uac00\ub2a5<\/td>\n<td>\uc815\uc218\/\ubb38\uc790\uc5f4 \uc120\ud0dd<\/td>\n<\/tr>\n<tr>\n<td>\uc804\uccb4 \ucf00\uc774\uc2a4 \uc21c\ud68c<\/td>\n<td>values()<\/td>\n<td>values()<\/td>\n<td>CaseIterable<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>\ud575\uc2ec \uc694\uc57d<\/h2>\n<ul>\n<li>Swift\uc758 enum\uc740 \uac01 \ucf00\uc774\uc2a4\ub9c8\ub2e4 \uc11c\ub85c \ub2e4\ub978 \ud0c0\uc785\uc758 \ub370\uc774\ud130(\uc5f0\uad00\uac12)\ub97c \ub2f4\uc744 \uc218 \uc788\ub2e4.<\/li>\n<li>switch\ub85c enum\uc744 \ucc98\ub9ac\ud560 \ub54c \ubaa8\ub4e0 \ucf00\uc774\uc2a4\ub97c \ucc98\ub9ac\ud558\uc9c0 \uc54a\uc73c\uba74 \ucef4\ud30c\uc77c \uc624\ub958\uac00 \ub09c\ub2e4.<\/li>\n<li>rawValue\ub85c \uc815\uc218\ub098 \ubb38\uc790\uc5f4 \uae30\ubcf8\uac12\uc744 \ubd99\uc77c \uc218 \uc788\uace0, rawValue\ub85c \uc5ed\ubcc0\ud658\ud558\uba74 \uc635\uc154\ub110\uc744 \ubc18\ud658\ud55c\ub2e4.<\/li>\n<li>enum\uc5d0 \uba54\uc11c\ub4dc\uc640 \uc5f0\uc0b0 \ud504\ub85c\ud37c\ud2f0\ub97c \ucd94\uac00\ud560 \uc218 \uc788\ub2e4.<\/li>\n<li>\uc0c1\ud0dc \uba38\uc2e0\uacfc \uc5d0\ub7ec \ud0c0\uc785\uc744 enum\uc73c\ub85c \ubaa8\ub378\ub9c1\ud558\uba74 \ucef4\ud30c\uc77c\ub7ec\uac00 \ube60\uc9c4 \ucf00\uc774\uc2a4\ub97c \uc7a1\uc544\uc900\ub2e4.<\/li>\n<\/ul>\n<hr \/>\n<p>\ub2e4\uc74c \ud3b8\uc740 <strong>10\ud3b8 \u2014 \ud504\ub85c\ud1a0\ucf5c\uacfc \uc81c\ub124\ub9ad: Swift\uc758 \ub2e4\ud615\uc131<\/strong>\uc785\ub2c8\ub2e4. 1\ubd80\uc758 \ub9c8\uc9c0\ub9c9 \ud3b8\uc785\ub2c8\ub2e4. \ud504\ub85c\ud1a0\ucf5c\uc774 \ub2e8\uc21c\ud55c \uc778\ud130\ud398\uc774\uc2a4\ub97c \ub118\uc5b4 \uc5b4\ub5bb\uac8c \ub3d9\uc791\ud558\ub294\uc9c0, \uc81c\ub124\ub9ad\uacfc \uacb0\ud569\ud558\uba74 \ubb34\uc5c7\uc774 \uac00\ub2a5\ud574\uc9c0\ub294\uc9c0\ub97c \ub2e4\ub8f9\ub2c8\ub2e4.<\/p>\n<blockquote>\n<p>\ud83e\udd16 Generated with <a href=\"https:\/\/claude.ai\/claude-code\">Claude Code<\/a><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Swift\uc758 enum\uc740 \ub2e8\uc21c\ud55c \uc0c1\uc218 \ubaa9\ub85d\uc774 \uc544\ub2c8\ub2e4. \uac01 \ucf00\uc774\uc2a4\uac00 \ub370\uc774\ud130\ub97c \ud488\uc744 \uc218 \uc788\ub294 \uc5f0\uad00\uac12, switch\uc640\uc758 \uc870\ud569, \uc0c1\ud0dc \uba38\uc2e0\uacfc \uc5d0\ub7ec \ud0c0\uc785 \uc124\uacc4\uae4c\uc9c0 \ub2e4\ub8ec\ub2e4.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1095","post","type-post","status-publish","format-standard","hentry","category-1"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=\/wp\/v2\/posts\/1095","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1095"}],"version-history":[{"count":0,"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=\/wp\/v2\/posts\/1095\/revisions"}],"wp:attachment":[{"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1095"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nangchang.nes.or.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}