{"id":2526,"date":"2024-10-06T17:45:00","date_gmt":"2024-10-06T08:45:00","guid":{"rendered":"http:\/\/batmask.dothome.co.kr\/?p=2526"},"modified":"2024-10-06T17:45:00","modified_gmt":"2024-10-06T08:45:00","slug":"kotlin-%ec%97%90-%ec%9d%b5%ec%88%99%ed%95%b4%ec%a7%80%ea%b8%b0-%eb%82%af%ec%84%a0-%eb%ac%b8%eb%b2%95%eb%93%a4-%ec%a0%95%eb%a6%ac-2","status":"publish","type":"post","link":"http:\/\/batmask.net\/index.php\/2024\/10\/06\/2526\/","title":{"rendered":"Kotlin \uc5d0 \uc775\uc219\ud574\uc9c0\uae30 : \ub0af\uc120 \ubb38\ubc95\ub4e4 \uc815\ub9ac #2"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Destructuring : <a href=\"https:\/\/kotlinlang.org\/docs\/destructuring-declarations.html\">https:\/\/kotlinlang.org\/docs\/destructuring-declarations.html<\/a><\/h3>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc740 \ud074\ub798\uc2a4\uc758 \uc18d\uc131\uac12\uc744 \ud558\ub098\uc529 \ubc1b\uc544\uc624\uc9c0 \uc54a\uace0, \ud55c\ubc88\uc5d0 \uc5ec\ub7ec \ubcc0\uc218\uc5d0 \ubc1b\uc544\uc624\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud55c\ub2e4. \uc774\ub97c destructuring\uc774\ub77c\uace0 \ud55c\ub2e4. \uc608\ub97c\ub4e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"val (name, age) = person\n\nval name = person.component1()\nval age = person.component2()\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> (name, age) <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> person<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> name <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> person.<\/span><span style=\"color: #DCBDFB\">component1<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> age <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> person.<\/span><span style=\"color: #DCBDFB\">component2<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc704 \ucf54\ub4dc\ub294 person\uc5d0 \uc788\ub294 \uac12\uc744 name\uacfc age \ubcc0\uc218\uc5d0 \ubc1b\uc544\uc624\uace0 \uc788\ub2e4. \uc774\uac8c \uac00\ub2a5\ud55c \uc774\uc720\ub294 \uc704\uc5d0 \ud480\uc5b4\uc4f4 \ub0b4\uc6a9\ucc98\ub7fc  component1(), component2()\ub85c \ud574\uc11d\ub418\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p>component1, component2 \ub4f1\uc758 \ud568\uc218\ub294 \uacc4\uc18d 3, 4 \ub4f1\uc73c\ub85c \uc774\uc5b4\uc9c8 \uc218 \uc788\ub294\ub370, \uc774\ub97c componentN()\uc774\ub77c\uace0 \ud558\uba70, \uc774\ub294 operator\ub85c \uad6c\ud604\ud574\uc57c \ud55c\ub2e4. \uc608\ub97c\ub4e4\uba74 Map\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ub418\uc5b4 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"operator fun &lt;K, V&gt; Map&lt;K, V&gt;.iterator(): Iterator&lt;Map.Entry&lt;K, V&gt;&gt; = entrySet().iterator()\noperator fun &lt;K, V&gt; Map.Entry&lt;K, V&gt;.component1() = getKey()\noperator fun &lt;K, V&gt; Map.Entry&lt;K, V&gt;.component2() = getValue()\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">operator<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">K<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">V<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #DCBDFB\">Map<\/span><span style=\"color: #F47067\">&lt;<\/span><span style=\"color: #ADBAC7\">K, V<\/span><span style=\"color: #F47067\">&gt;<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">iterator<\/span><span style=\"color: #ADBAC7\">(): <\/span><span style=\"color: #F69D50\">Iterator<\/span><span style=\"color: #ADBAC7\">&lt;<\/span><span style=\"color: #F69D50\">Map<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #F69D50\">Entry<\/span><span style=\"color: #ADBAC7\">&lt;<\/span><span style=\"color: #F69D50\">K<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">V<\/span><span style=\"color: #ADBAC7\">&gt;&gt; <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">entrySet<\/span><span style=\"color: #ADBAC7\">().<\/span><span style=\"color: #DCBDFB\">iterator<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">operator<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">K<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">V<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #F69D50\">Map<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">Entry<\/span><span style=\"color: #F47067\">&lt;<\/span><span style=\"color: #ADBAC7\">K, V<\/span><span style=\"color: #F47067\">&gt;<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">component1<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">getKey<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">operator<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">K<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">V<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #F69D50\">Map<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">Entry<\/span><span style=\"color: #F47067\">&lt;<\/span><span style=\"color: #ADBAC7\">K, V<\/span><span style=\"color: #F47067\">&gt;<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">component2<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">getValue<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ub9cc\uc57d, \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \uac12\uc744 \ubc1b\ub294\uacbd\uc6b0 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcc0\uc218 \ub300\uc2e0\uc5d0 \uc5b8\ub354\uc2a4\ucf54\uc5b4 &#8216;_&#8217;\ub97c \uc774\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"val (_, status) = getResult()\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> (_, status) <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">getResult<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ub78c\ub2e4 \ud45c\ud604\uc2dd\uc5d0\uc11c\ub3c4 destructuring\uc744 \uc774\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"map.mapValues { entry -&gt; &quot;${entry.value}!&quot; }\nmap.mapValues { (key, value) -&gt; &quot;$value!&quot; }\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ADBAC7\">map.<\/span><span style=\"color: #DCBDFB\">mapValues<\/span><span style=\"color: #ADBAC7\"> { entry <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;${entry.<\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #96D0FF\">}!&quot;<\/span><span style=\"color: #ADBAC7\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">map.<\/span><span style=\"color: #DCBDFB\">mapValues<\/span><span style=\"color: #ADBAC7\"> { (key, <\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #ADBAC7\">) <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #6CB6FF\">$value<\/span><span style=\"color: #96D0FF\">!&quot;<\/span><span style=\"color: #ADBAC7\"> }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"57\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2020\/04\/seperator.png\" alt=\"seperator\" class=\"wp-image-381\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator.png 771w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator-300x22.png 300w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator-768x57.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">data class : <a href=\"https:\/\/kotlinlang.org\/docs\/data-classes.html\">https:\/\/kotlinlang.org\/docs\/data-classes.html<\/a><\/h3>\n\n\n\n<p> \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc5d0\uc11c \uad6c\uc870\uc801\uc778 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\uae30 \uc704\ud574 C \ub77c\uba74 \uad6c\uc870\uccb4\ub97c \uc774\uc6a9\ud558\uace0, OOP \uc5b8\uc5b4\ub77c\uba74 \ud074\ub798\uc2a4\ub97c \uc0c8\ub85c \ub9cc\ub4e4\uac8c \ub41c\ub2e4. Kotlin\uc5d0\uc11c\ub294 data class\ub77c\ub294 \uac83\uc73c\ub85c \ucf54\ub4dc\ub3c4 \ub2e8\uc21c\ud558\uac8c \ub9cc\ub4e4\uace0 \uc0ac\uc6a9\ub3c4 \uc27d\uac8c \uc9c0\uc6d0\ud574\uc8fc\uace0 \uc788\ub2e4. \ud074\ub798\uc2a4\uc5d0 data \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud55c\ub2e4. \uac00\uc7a5 \uac04\ub2e8\ud55c \ud615\ud0dc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"data class User(val name: String, val age: Int)\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">User<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> name: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> age: <\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ud074\ub798\uc2a4 \ubc14\ub514\ub3c4 \ud544\uc694\uc5c6\uace0, property\ub4e4\ub9cc \ub098\uc5f4\ub418\uc5b4 \uc788\ub294 \uac83\uc73c\ub85c \ub9e4\uc6b0 \ub2e8\uc21c\ud558\uac8c \ud45c\ud604\uc774 \uac00\ub2a5\ud558\ub2e4. \uc774\ub807\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc774\uc720\ub294 data class\uc5d0\uc11c \uae30\ubcf8\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \ub2e4\ub8e8\ub294\ub370 \ud544\uc694\ud55c equals()\/ hashCode(), toString(), componentN(), copy() \ub97c \uad6c\ud604\ud574\uc8fc\uace0 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4. \ubb3c\ub860, \ud074\ub798\uc2a4 \ubc14\ub514\ub3c4 \ud544\uc694\ud558\ub2e4\uba74 \uad6c\ud604 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<p>data class \ub294 \ub9e4\uc6b0 \uc720\uc6a9\ud55c\ub370, Sealed class\uc640 \uc9dd\uc744\uc774\ub904 \uc790\uc8fc \uc0ac\uc6a9\ub41c\ub2e4. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"57\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2020\/04\/seperator.png\" alt=\"seperator\" class=\"wp-image-381\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator.png 771w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator-300x22.png 300w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator-768x57.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">enum \uacfc sealed class : <br><a href=\"https:\/\/kotlinlang.org\/docs\/enum-classes.html\">https:\/\/kotlinlang.org\/docs\/enum-classes.html<\/a><br><a href=\"https:\/\/kotlinlang.org\/docs\/sealed-classes.html\">https:\/\/kotlinlang.org\/docs\/sealed-classes.html<\/a><br><\/h3>\n\n\n\n<p> \uc774\uc5d0 \ub300\ud574\uc120 \uc608\uc804\uc5d0 \ud55c \ubc88 \uc815\ub9ac\ud588\ub358 \uc801\uc774 \uc788\uc5b4 \uc790\uc138\ud55c \uc124\uba85\uc740 \uc0dd\ub7b5\ud55c\ub2e4 : <a href=\"http:\/\/batmask.dothome.co.kr\/index.php\/2021\/06\/29\/869\/\">http:\/\/batmask.dothome.co.kr\/index.php\/2021\/06\/29\/869\/<\/a><\/p>\n\n\n\n<p>enum\uc740 \ub2e4\ub978 \uc5b8\uc5b4\uc640 \uc720\uc0ac\ud558\uac8c \uc0c1\uc218\ub97c \ub098\uc5f4\ud558\uc5ec \uc0ac\uc6a9\ud560 \ub54c \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"enum class Direction {\n    NORTH, SOUTH, WEST, EAST\n}\n\nenum class Color(val rgb: Int) {\n    RED(0xFF0000),\n    GREEN(0x00FF00),\n    BLUE(0x0000FF)\n}\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">enum<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Direction<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    NORTH, SOUTH, WEST, EAST<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">enum<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Color<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> rgb: <\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">RED<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">0xFF0000<\/span><span style=\"color: #ADBAC7\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">GREEN<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">0x00FF00<\/span><span style=\"color: #ADBAC7\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">BLUE<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">0x0000FF<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>valueOf(), entries, name, ordinal\uc744 \uc774\uc6a9\ud574 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"enum class RGB { RED, GREEN, BLUE }\n\nfun main() {\n    for (color in RGB.entries) println(color.toString()) \/\/ prints RED, GREEN, BLUE\n    println(&quot;The first color is: ${RGB.valueOf(&quot;RED&quot;)}&quot;) \/\/ prints &quot;The first color is: RED&quot;\n}\n...\nprintln(RGB.RED.name)    \/\/ prints RED\nprintln(RGB.RED.ordinal) \/\/ prints 0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">enum<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">RGB<\/span><span style=\"color: #ADBAC7\"> { RED, GREEN, BLUE }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">main<\/span><span style=\"color: #ADBAC7\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">for<\/span><span style=\"color: #ADBAC7\"> (color <\/span><span style=\"color: #F47067\">in<\/span><span style=\"color: #ADBAC7\"> RGB.entries) <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(color.<\/span><span style=\"color: #DCBDFB\">toString<\/span><span style=\"color: #ADBAC7\">()) <\/span><span style=\"color: #768390\">\/\/ prints RED, GREEN, BLUE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;The first color is: ${RGB.<\/span><span style=\"color: #DCBDFB\">valueOf<\/span><span style=\"color: #96D0FF\">(&quot;RED&quot;)}&quot;<\/span><span style=\"color: #ADBAC7\">) <\/span><span style=\"color: #768390\">\/\/ prints &quot;The first color is: RED&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">..<\/span><span style=\"color: #ADBAC7\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(RGB.RED.name)    <\/span><span style=\"color: #768390\">\/\/ prints RED<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(RGB.RED.ordinal) <\/span><span style=\"color: #768390\">\/\/ prints 0<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc5d0\uc11c\ub294 enum\uacfc \uc720\uc0ac\ud55c \uc5ed\ud560\uc744 \ud558\ub294\ub370 sealed class\ub97c \uc790\uc8fc \uc774\uc6a9\ud55c\ub2e4. sealed class\ub098 \uc778\ud130\ud398\uc774\uc2a4\ub294 \uc6d0\ub798, \uc0c1\uc18d\uc744 \ubaa8\ub4c8\uacfc \ud328\ud0a4\uc9c0\uc5d0 \uc81c\ud55c \ud558\ub294 \ud0a4\uc6cc\ub4dc\ub85c, \ucef4\ud30c\uc77c \ud0c0\uc784\uc5d0\ub9cc \uc778\uc2dd\ud558\uc5ec \uc0c1\uc18d\uc774 \uac00\ub2a5\ud558\ub2e4. \uadf8\ub7ec\ub2c8\uae4c \ubcc4\ub3c4\ub85c \ucef4\ud30c\uc77c\ub41c \ubaa8\ub4c8\uac04 \uc0c1\uc18d\uc774 \uc81c\ud55c\ub41c\ub2e4. \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \ub0a8\uc6a9\uc744 \ub9c9\uae30 \uc704\ud574 \uc0ac\uc6a9\uac00\ub2a5\ud55c \ubc29\ubc95\uc774\uae30\ub3c4 \ud558\ub2e4.<\/p>\n\n\n\n<p> Sealed class\ub97c enum\ub300\uc2e0\uc5d0 \uc720\uc6a9\ud558\uac8c \uc0ac\uc6a9\ud558\ub294 \uc608\uac00 \uc544\uc608 \uacf5\uc2dd\ubb38\uc11c\ud654 \ub418\uc5b4 \uc788\ub2e4. ( <a href=\"https:\/\/kotlinlang.org\/docs\/sealed-classes.html#use-case-scenarios\">https:\/\/kotlinlang.org\/docs\/sealed-classes.html#use-case-scenarios<\/a> )<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"sealed class UIState {\n    data object Loading : UIState()\n    data class Success(val data: String) : UIState()\n    data class Error(val exception: Exception) : UIState()\n}\n\nfun updateUI(state: UIState) {\n    when (state) {\n        is UIState.Loading -&gt; showLoadingIndicator()\n        is UIState.Success -&gt; showData(state.data)\n        is UIState.Error -&gt; showError(state.exception)\n    }\n}\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">sealed<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">UIState<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">object<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Loading<\/span><span style=\"color: #ADBAC7\"> : <\/span><span style=\"color: #F69D50\">UIState<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Success<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\">: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">) : <\/span><span style=\"color: #F69D50\">UIState<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Error<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> exception: <\/span><span style=\"color: #F69D50\">Exception<\/span><span style=\"color: #ADBAC7\">) : <\/span><span style=\"color: #F69D50\">UIState<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">updateUI<\/span><span style=\"color: #ADBAC7\">(state: <\/span><span style=\"color: #F69D50\">UIState<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">when<\/span><span style=\"color: #ADBAC7\"> (state) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> UIState.Loading <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">showLoadingIndicator<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> UIState.Success <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">showData<\/span><span style=\"color: #ADBAC7\">(state.<\/span><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> UIState.Error <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">showError<\/span><span style=\"color: #ADBAC7\">(state.exception)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p> \uc608\uc804 \ubc29\uc2dd\uc758 \ud504\ub85c\uadf8\ub798\ubc0d\uc774\ub77c\uba74, \uc544\ub9c8\ub3c4 enum\uc73c\ub85c \ucc98\ub9ac\ud588\uc744 \uc0c1\ud0dc\ub4e4\uc774\ub2e4. sealed class UIState\ub97c \uc0c1\uc18d\ubc1b\uc544 data object \uc640 class\ub4e4\uc744 \ub9cc\ub4e4\uc5c8\ub2e4. \uc774\ub97c UI state\ub97c \uccb4\ud06c\ud558\ub294 when\ubb38\uc5d0\uc11c \uc0ac\uc6a9\ud558\uace0 \uc788\ub2e4. data object\ub85c \ub9cc\ub4e4\uba74 \ud558\ub098\uc758 \uac1d\uccb4\ub9cc \ub2e4\ub8e8\uae30 \ub54c\ubb38\uc5d0 enum\uacfc \uac19\uc774 \uc0c1\uc218\ucc98\ub7fc \ub2e4\ub8f0 \uc218 \uc788\uc73c\uba70, data class \ub85c \uc0dd\uc131\ud558\uba74 enum\uacfc\ub294 \ub2e4\ub974\uac8c \uc5ec\ub7ec\uac1c\uc758 \uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131\uc774 \uac00\ub2a5\ud558\ub2e4. \ub610\ud55c, data class\uc5d0 \uc5ec\ub7ec \uc815\ubcf4\ub4e4\uc744 \uc800\uc7a5\ud558\uace0 \uc0ac\uc6a9\ud558\ub294\uac8c enum\ubcf4\ub2e4 \ud6e8\uc52c \uac04\ud3b8\ud558\uace0 \uc720\uc6a9\ud558\ub2e4. \ub610\ud558\ub098\uc758 \uc608\uac00 \ub098\uc640\uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"sealed class Payment {\n    data class CreditCard(val number: String, val expiryDate: String) : Payment()\n    data class PayPal(val email: String) : Payment()\n    data object Cash : Payment()\n}\n\nfun processPayment(payment: Payment) {\n    when (payment) {\n        is Payment.CreditCard -&gt; processCreditCardPayment(payment.number, payment.expiryDate)\n        is Payment.PayPal -&gt; processPayPalPayment(payment.email)\n        is Payment.Cash -&gt; processCashPayment()\n    }\n}\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">sealed<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Payment<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">CreditCard<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> number: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> expiryDate: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">) : <\/span><span style=\"color: #F69D50\">Payment<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">PayPal<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> email: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">) : <\/span><span style=\"color: #F69D50\">Payment<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">data<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">object<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Cash<\/span><span style=\"color: #ADBAC7\"> : <\/span><span style=\"color: #F69D50\">Payment<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">processPayment<\/span><span style=\"color: #ADBAC7\">(payment: <\/span><span style=\"color: #F69D50\">Payment<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">when<\/span><span style=\"color: #ADBAC7\"> (payment) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> Payment.CreditCard <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">processCreditCardPayment<\/span><span style=\"color: #ADBAC7\">(payment.number, payment.expiryDate)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> Payment.PayPal <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">processPayPalPayment<\/span><span style=\"color: #ADBAC7\">(payment.email)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> Payment.Cash <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">processCashPayment<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uac01\uac01\uc758 payment \ubc29\ubc95\uc5d0 \ub530\ub77c \ub2e4\ub978 \uc815\ubcf4\ub4e4\uc744 \ub4e4\uace0 \uc788\uace0, \uc774\ub97c \ub9e4\uc6b0 \ud3b8\ub9ac\ud558\uac8c \ucc98\ub9ac\ud558\uace0 \uc788\ub2e4. \uac19\uc740 \uc288\ud37c\ud074\ub798\uc2a4\uc778 payment\ub97c \uac00\uc9c0\uace0 CreditCard, PayPal, Cash \uac01\uac01\uc744 \uce90\uc2a4\ud305 \uc5c6\uc774 \ucc98\ub9ac\ud558\uace0 \uc788\ub294\ub370, \uc774\ub294 \ucf54\ud2c0\ub9b0\uc758 \uc2a4\ub9c8\ud2b8 \uce90\uc2a4\ud2b8( <a href=\"https:\/\/kotlinlang.org\/docs\/typecasts.html#smart-casts\">https:\/\/kotlinlang.org\/docs\/typecasts.html#smart-casts<\/a> ) \uae30\ub2a5 \ub355\ubd84\uc774\ub2e4. \uc2a4\ub9c8\ud2b8 \uce90\uc2a4\ud2b8\ub294 \ud0c0\uc785\uc744 \uccb4\ud06c\ud558\ub294 \uacbd\uc6b0, \uc54c\uc544\uc11c \uce90\uc2a4\ud305\uc744 \ud574\uc8fc\uac8c \ub41c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Destructuring : https:\/\/kotlinlang.org\/docs\/destructuring-declarations.html \ucf54\ud2c0\ub9b0\uc740 \ud074\ub798\uc2a4\uc758 \uc18d\uc131\uac12\uc744 \ud558\ub098\uc529 \ubc1b\uc544\uc624\uc9c0 \uc54a\uace0, \ud55c\ubc88\uc5d0 \uc5ec\ub7ec \ubcc0\uc218\uc5d0 \ubc1b\uc544\uc624\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud55c\ub2e4. \uc774\ub97c destructuring\uc774\ub77c\uace0 \ud55c\ub2e4. \uc608\ub97c\ub4e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ud55c\ub2e4. \uc704 \ucf54\ub4dc\ub294 person\uc5d0 \uc788\ub294 \uac12\uc744 name\uacfc age \ubcc0\uc218\uc5d0 \ubc1b\uc544\uc624\uace0 \uc788\ub2e4. \uc774\uac8c \uac00\ub2a5\ud55c \uc774\uc720\ub294 \uc704\uc5d0 \ud480\uc5b4\uc4f4 \ub0b4\uc6a9\ucc98\ub7fc component1(), component2()\ub85c \ud574\uc11d\ub418\uae30 \ub54c\ubb38\uc774\ub2e4. component1, component2 \ub4f1\uc758 \ud568\uc218\ub294 \uacc4\uc18d 3, 4 \ub4f1\uc73c\ub85c \uc774\uc5b4\uc9c8 \uc218 \uc788\ub294\ub370, \uc774\ub97c componentN()\uc774\ub77c\uace0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34],"tags":[38,41],"class_list":["post-2526","post","type-post","status-publish","format-standard","hentry","category-kotlin","tag-kotlin","tag-kotlin-kr"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/2526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/comments?post=2526"}],"version-history":[{"count":25,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/2526\/revisions"}],"predecessor-version":[{"id":2585,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/2526\/revisions\/2585"}],"wp:attachment":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/media?parent=2526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/categories?post=2526"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/tags?post=2526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}