{"id":45931,"date":"2022-02-07T21:56:16","date_gmt":"2022-02-07T12:56:16","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=45931"},"modified":"2022-02-07T21:56:18","modified_gmt":"2022-02-07T12:56:18","slug":"%ec%9d%b4%ed%8e%99%ed%8b%b0%eb%b8%8c-%ec%bd%94%ed%8b%80%eb%a6%b0-%ec%9a%94%ec%95%bd-%ec%9e%ac%ec%82%ac%ec%9a%a9%ec%84%b1reusability%ec%97%90-%eb%8c%80%ed%95%98%ec%97%ac","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=45931","title":{"rendered":"[\uc774\ud399\ud2f0\ube0c \ucf54\ud2c0\ub9b0 \uc694\uc57d] \uc7ac\uc0ac\uc6a9\uc131(Reusability)\uc5d0 \ub300\ud558\uc5ec"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote\"><p>\ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc774\ubbf8 \uc788\ub358 \ucf54\ub4dc\ub97c \ubcf5\uc0ac\ud574\uc11c \ubd99\uc5ec\ub123\uace0 \uc788\ub2e4\uba74, \ubb34\uc5b8\uac00\uac00 \uc798\ubabb\ub41c \uac83\uc774\ub2e4.<\/p><p>-\uc774\ud399\ud2f0\ube0c \ucf54\ud2c0\ub9b0 \uc800\uc790-<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Knowledge\ub97c \ubc18\ubcf5\ud558\uc5ec \uc0ac\uc6a9\ud558\uc9c0 \ub9d0\ub77c<\/h2>\n\n\n\n<p>\uc5ec\uae30\uc11c \uc5b8\uae09\ud558\ub294 knowledge\ub294 \uc77c\ubc18\uc801\uc73c\ub85c \ud45c\ud604\ud558\ub294 &#8216;\uc9c0\uc2dd&#8217;\uacfc \uc57d\uac04 \ub2e4\ub974\uac8c &#8216;\uc758\ub3c4\uc801\uc778 \uc815\ubcf4&#8217;\ub97c \ub098\ud0c0\ub0b4\ub294 \uac1c\ub150\uc73c\ub85c, &lt;\uc2e4\uc6a9\uc8fc\uc758 \ud504\ub85c\uadf8\ub798\uba38&gt; \ub77c\ub294 \ucc45\uc5d0\uc11c \uc5b8\uae09\ub41c\ub2e4. \uc774 \ucc45\uc5d0\uc11c\ub294 &#8216;Don&#8217;t Repat Yourself&#8217;\ub77c\ub294 \uaddc\uce59\uc744 &#8216;DRY \uaddc\uce59&#8217;\uc774\ub77c\uace0 \ud45c\ud604\ud55c\ub2e4. \ub610\ub294 WET \uc548\ud2f0\ud328\ud134\uc774\ub77c\uace0\ub3c4 \ud55c\ub2e4.<\/p>\n\n\n\n<p>\ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \uc911\uc694\ud55c knowledge\ub97c \ud06c\uac8c \ub450\uac00\uc9c0 \ubf51\ub294\ub2e4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4<\/p>\n\n\n\n<ol><li>\ub85c\uc9c1: \ud504\ub85c\uadf8\ub7a8\uc774 \uc5b4\ub5a0\ud55c \uc2dd\uc73c\ub85c \ub3d9\uc791\ud558\ub294\uc9c0, \uc5b4\ub5bb\uac8c \ubcf4\uc774\ub294 \uc9c0<\/li><li>\uacf5\ud1b5 \uc54c\uace0\ub9ac\uc998: \uc6d0\ud558\ub294 \ub3d9\uc791\uc744 \ud558\uae30 \uc704\ud55c \uc54c\uace0\ub9ac\uc998<\/li><\/ol>\n\n\n\n<p>\ub458\uc758 \uac00\uc7a5 \ud070 \ucc28\uc774\uc810\uc740 \uc2dc\uac04\uc5d0 \ub530\ub978 \ubcc0\ud654\ub85c \ub85c\uc9c1\uc740 \uc2dc\uac04\uc774 \uc9c0\ub098\uba74\uc11c \uacc4\uc18d \ubcc0\ud558\uc9c0\ub9cc, \uacf5\ud1b5 \uc54c\uace0\ub9ac\uc998\uc740 \ud55c \ubc88 \uc815\uc758\ub41c \uc774\ud6c4 \ud06c\uac8c \ubcc0\ud558\uc9c0 \uc54a\ub294\ub2e4\ub294 \uc810\uc774\ub2e4.<\/p>\n\n\n\n<p>\ubaa8\ub4e0 \uac83\uc740 \ubcc0\ud654\ud558\uae30 \ub9c8\ub828\uc774\uace0, \uac1c\ubc1c\uc790\ub294 \uc774\ub97c \ub300\ube44\ud574\uc57c \ud55c\ub2e4. \ub530\ub77c\uc11c \uacf5\ud1b5 knowledge\uac00 \uc788\ub2e4\uba74, \uc774\ub97c \ucd94\ucd9c\ud574\uc11c \uc774\ub7ec\ud55c \ubcc0\ud654\uc5d0 \ub300\ube44\ud574\uc57c\ud55c\ub2e4. \ud558\uc9c0\ub9cc \uadf9\ub2e8\uc801\uc73c\ub85c \ube44\uc2b7\ud574\ubcf4\uc774\ub294 \ucf54\ub4dc\ub97c \ubaa8\ub450 \ucd94\ucd9c\ud558\ub824\uace0 \ud558\ub294 \uac83\uc740 \uc88b\uc9c0 \uc54a\ub2e4. \uc5b8\uc81c\ub098 \uade0\ud615\uc774 \uc911\uc694\ud558\uba70, \uc774\uc5d0 \ub300\ud55c \uac83\uc740 \uc218\ub9ce\uc740 \uc2dc\uac04\uacfc \uc5f0\uc2b5\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc77c\ubc18\uc801\uc778 \uc54c\uace0\ub9ac\uc998\uc744 \ubc18\ubcf5\ud574\uc11c \uad6c\ud604\ud558\uc9c0 \uc54a\uae30<\/h2>\n\n\n\n<p>\uac19\uc740 \uc54c\uace0\ub9ac\uc998\uc744 \uc5ec\ub7ec \ubc88 \ubc18\ubcf5\ud574\uc11c \uad6c\ud604\ud558\uc9c0 \uc54a\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4. \uc65c\ub0d0\ud558\uba74 \ub2e8\uc21c\ud558\uac8c \ucf54\ub4dc\uac00 \uc9e7\uc544\uc9c0\ub294 \uac83 \uc774\uc678\uc5d0\ub3c4 \ub2e4\uc74c\uacfc \uac19\uc740 \uc7a5\uc810\uc744 \uac16\uae30 \ub54c\ubb38\uc774\ub2e4<\/p>\n\n\n\n<ul><li>\ucf54\ub4dc \uc791\uc131 \uc18d\ub3c4\uac00 \ube68\ub77c\uc9d0<\/li><li>\ud568\uc218 \uc774\ub984\ub9cc \ubcf4\uace0 \ubb34\uc5c7\uc744 \ud558\ub294\uc9c0 \ud655\uc2e4\ud558\uac8c \uc54c \uc218 \uc788\uc74c(=\uac00\ub3c5\uc131)<\/li><li>\uc2e4\uc218\ub97c \uc904\uc77c \uc218 \uc788\uc74c<\/li><li>\ucd5c\uc801\ud654 \uc2dc \uc774\ub97c \uc0ac\uc6a9\ud558\ub294 \ucf54\ub4dc \uc804\uc5ed \ubaa8\ub450\uc5d0 \ucd5c\uc801\ud654 \ud61c\ud0dd\uc744 \ubc1b\uc74c<\/li><\/ul>\n\n\n\n<p>\uc77c\ubc18\uc801\uc778 \uad6c\ud604\uc740 \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac(stdlib)\uc5d0 \uad6c\ud604\uc774 \ub418\uc5b4\uc788\uc73c\ubbc0\ub85c \uc774\ub97c \ud65c\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4. \uadf8 \uc774\uc678\uc758 \uacbd\uc6b0\ub294 \ud655\uc7a5 \ud568\uc218 \ub4f1\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc790\uc2e0\ub9cc\uc758 \uc720\ud2f8 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uc5b4 \uad00\ub9ac\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc77c\ubc18\uc801\uc778 \ud504\ub85c\ud37c\ud2f0 \ud328\ud134\uc740 \ud504\ub85c\ud37c\ud2f0 \uc704\uc784\uc73c\ub85c \ub9cc\ub4e4\uae30<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ub378\ub9ac\uac8c\uc774\uc158 \ud328\ud134<\/h3>\n\n\n\n<p>\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uacf5\ud559\uc5d0\uc11c \ub378\ub9ac\uac8c\uc774\uc158 \ud328\ud134\uc740 \uac1d\uccb4\uc9c0\ud5a5 \uc124\uacc4 \ud328\ud134\uc73c\ub85c \uc0c1\uc18d\uacfc \uac19\uc740 \uac19\uc740 \ucf54\ub4dc\uc758 \uc7ac\uc0ac\uc6a9\uc744 \uc704\ud574 \uac1d\uccb4\ub97c \uc870\ud569\ud558\ub294 \uac83\uc744 \ub9d0\ud55c\ub2e4.<\/p>\n\n\n\n<p>\ub378\ub9ac\uac8c\uc774\uc158 \ud328\ud134 \uc608\uc81c\ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>class<\/strong> <strong>Rectangle<\/strong>(<strong>val<\/strong> width: Int, <strong>val<\/strong> height: Int) {\n    <strong>fun<\/strong> area() = width * height\n}\n\n<strong>class<\/strong> <strong>Window<\/strong>(<strong>val<\/strong> bounds: Rectangle) {\n    <em>\/\/ Delegation<\/em>\n    <strong>fun<\/strong> area() = bounds.area()\n}<\/pre>\n\n\n\n<p>Window \ud074\ub798\uc2a4\uc758 area \ud568\uc218 \uad6c\ud604\uc740 \ub0b4\ubd80\uc801\uc73c\ub85c Rectangle \uac1d\uccb4\uc758 area() \uac83\uc73c\ub85c \uc704\uc784(\ub378\ub9ac\uac8c\uc774\uc158)\ud55c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc5d0\uc11c\ub294 <a href=\"https:\/\/kotlinlang.org\/docs\/delegation.html#overriding-a-member-of-an-interface-implemented-by-delegation\">\ub378\ub9ac\uac8c\uc774\uc158 \ud328\ud134<\/a>\uc744 \uc704\ud55c <strong>by<\/strong>\ub77c\ub294 \ud2b9\ubcc4\ud55c \ubb38\ubc95\uc744 \uc9c0\uc6d0\ud55c\ub2e4. \uc608\uc81c\ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>interface<\/strong> <strong>ClosedShape<\/strong> {\n    <strong>fun<\/strong> area(): Int\n}\n\n<strong>class<\/strong> <strong>Rectangle<\/strong>(<strong>val<\/strong> width: Int, <strong>val<\/strong> height: Int) : ClosedShape {\n    <strong>override<\/strong> <strong>fun<\/strong> area() = width * height\n}\n\n<strong>class<\/strong> <strong>Window<\/strong>(<strong>private<\/strong> <strong>val<\/strong> bounds: ClosedShape) : ClosedShape <strong>by<\/strong> bounds<\/pre>\n\n\n\n<p>Window \ud074\ub798\uc2a4 \uc815\uc758\uc5d0 \uc0ac\uc6a9\ub41c by\uc808\uc740 bounds \ud504\ub85c\ud37c\ud2f0\ub97c Window\uc5d0 \ub0b4\ubd80\uc801\uc73c\ub85c \uc800\uc7a5\ud558\uace0, \ucef4\ud30c\uc77c\ub7ec\ub294 bounds\uac00 \uac16\ub294 ClosedShape\uc758 \ubaa8\ub4e0 \uba54\uc11c\ub4dc\ub4e4\uc744 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud558\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    val rectangle = Rectangle(100,200)\n    println(Window(<meta charset=\"utf-8\">rectangle).area()) \/\/ 20000 \ucd9c\ub825\n}<\/code><\/pre>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 by\uc808\uc744 \uc774\uc6a9\ud55c \ud45c\uc900 \ub378\ub9ac\uac8c\uc774\uc158 \ud328\ud134\uc744 \uc81c\uacf5\ud55c\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uacf5\uc2dd\ubb38\uc11c\uc758 <a href=\"https:\/\/kotlinlang.org\/docs\/delegated-properties.html\">delegated properties<\/a> \ud56d\ubaa9\uc744 \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n\n\n\n<ul><li>lazy \ud504\ub85c\ud37c\ud2f0<\/li><li>observable \ud504\ub85c\ud37c\ud2f0<\/li><li>vetoable \ud504\ub85c\ud37c\ud2f0<\/li><li>notNull<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">lazy \ud504\ub85c\ud37c\ud2f0<\/h3>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc758 stdlib\ub294 lazy \ud504\ub85c\ud37c\ud2f0 \ud328\ud134\uc744 \uc27d\uac8c \uad6c\ud604\ud560 \uc218 \uc788\uac8c lazy \ud568\uc218\ub97c \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>val value by lazy { createValue() }<\/code><\/pre>\n\n\n\n<p>\uae30\ubcf8\uc801\uc73c\ub85c\ub294 \uc2a4\ub808\ub4dc\uc5d0 \uc548\uc804\ud558\uac8c \ub3d9\uc791\ud558\ub098, \ub3d9\uc2dc\uc5d0 \uc5ec\ub7ec \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc811\uadfc\ud558\uc5ec \uac00\uc7a5 \uba3c\uc800 \ucd08\uae30\ud654 \ub418\ub294 \uac12\uc744 \uc0ac\uc6a9\ud558\uace0 \uc2f6\ub2e4\uba74 LazyThreadSafetyMode.PUBLICATION\uc744 lazy() \ud568\uc218\uc758 \uc778\uc790\ub85c \ub123\uc73c\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">observable \ud504\ub85c\ud37c\ud2f0<\/h3>\n\n\n\n<p>\ud504\ub85c\ud37c\ud2f0 \uc704\uc784\uc744 \uc0ac\uc6a9\ud558\uba74, \ud504\ub85c\ud37c\ud2f0\uc5d0 \ubcc0\ud654\uac00 \uc788\uc744 \ub54c \uc774\ub97c \uac10\uc9c0\ud558\ub294 observable \ud328\ud134\ub3c4 \uc27d\uac8c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var items: List&lt;Item&gt; by Delegates.observable(listOf()){ _, _, _ -&gt;\n    adapter.notifyDataSetChanged()\n}<\/code><\/pre>\n\n\n\n<p>\uc774\ub807\uac8c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uba74 \uc77c\ubc18\uc801\uc73c\ub85c \ub370\uc774\ud130\uc758 \ubcc0\ud654\uac00 \uac10\uc9c0\ud560 \ub54c RecyclerView\uc758 \ud56d\ubaa9\ub4e4\uc744 \uac31\uc2e0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">vetoable \ud504\ub85c\ud37c\ud2f0<\/h3>\n\n\n\n<p>\ud504\ub85c\ud37c\ud2f0\uac00 \ubcc0\uacbd\ub418\ub294 \uacbd\uc6b0 \ud2b9\uc815 \ub85c\uc9c1\uc744 \uc218\ud589\ud558\uc5ec \uc870\uac74\uc744 \ucda9\uc871\ud558\uc9c0 \ubabb\ud558\uba74 \ud504\ub85c\ud37c\ud2f0\uc758 \ubcc0\uacbd\uc744 \ucde8\uc18c\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>20\ub300\uc758 \uc80a\uc74c\uc744 \uadf8\ub9ac\uc6cc\ud558\uba70, \ub098\uc774(age)\ub97c \uba39\uc9c0 \uc54a\ub294 \uc608\uc81c\ucf54\ub4dc\ub97c \ub9cc\ub4e4\uc5c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nvar age by Delegates.vetoable(27){ property, oldValue, newValue -&gt;\n    newValue &lt; 30\n}\n\n27\uc0b4+5\uc0b4 = 29\uc0b4\nrepeat(5){\n    println(\"age = $age\")\n    age++\n}\n\/\/ \uacb0\uacfc\n\/\/ age = 27\n<meta charset=\"utf-8\">\/\/ age = 28\n<meta charset=\"utf-8\">\/\/ age = 29\n<meta charset=\"utf-8\">\/\/ age = 29\n<meta charset=\"utf-8\">\/\/ age = 29\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">notNull \ud504\ub85c\ud37c\ud2f0<\/h3>\n\n\n\n<p>notNull\uc740 \uc77c\uc2dc\uc801\uc73c\ub85c \ud504\ub85c\ud37c\ud2f0\uac00 \ucd08\uae30\ud654 \ub418\uae30 \uc804\uae4c\uc9c0 null \uc0c1\ud0dc\ub97c \ud5c8\uc6a9\ud558\ub294 \ud328\ud134\uc774\ub2e4. \uc608\uc81c\ub97c \uc0b4\ud3b4\ubcf4\uc790<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var <em>value <\/em>by Delegates.notNull&lt;Int&gt;()\n\/\/ value = 30 \nprintln(value) \/\/ \ucd08\uae30\ud654 \ud558\uc9c0 \uc54a\uace0 \uc811\uadfc \uc2dc IllegalStateException \ubc1c\uc0dd<\/pre>\n\n\n\n<p>lateinit\uacfc \ube44\uad50\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ucc28\uc774\uc810\uc744 \uac16\ub294\ub2e4.<\/p>\n\n\n\n<ul><li>notNull \uc0ac\uc6a9\uc2dc\uc5d0\ub294 \uac01 \ud504\ub85c\ud37c\ud2f0 \ubcc4\ub85c \ucd94\uac00\uc801\uc778 \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uac8c \ub41c\ub2e4.<\/li><li>\uc774 \uac1d\uccb4\ub294 \uc791\uc9c0\ub9cc, \ub9ce\uc740 \ud504\ub85c\ud37c\ud2f0 \uc120\uc5b8\uc2dc\uc5d0\ub294 \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4.<\/li><li>Dagger\uc640 \uac19\uc774 \uc790\ubc14 \ud544\ub4dc\uc758 \ud0c0\uc785\uc744 \ubcf4\uace0 \uc678\ubd80 injection\uc744 \ud558\ub294 \uacbd\uc6b0 \ud568\uaed8 \uc4f0\uae30 \uc5b4\ub835\ub2e4.<\/li><li>lateinit \uc0ac\uc6a9\uc740 \ube44\uc6a9\uc774 \uc801\uc9c0\ub9cc, \uc6d0\uc2dc \ud0c0\uc785\uc5d0\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub2e4. Delegates.notNull\uc740 \uc6d0\uc2dc\ud0c0\uc785\ub3c4 \uc120\uc5b8 \uac00\ub2a5\ud558\ub2e4.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\uc77c\ubc18\uc801\uc778 \uc54c\uace0\ub9ac\uc998\uc744 \uad6c\ud604\ud560 \ub54c \uc81c\ub124\ub9ad\uc744 \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p>\ud0c0\uc785 \ud30c\ub77c\ubbf8\ud130\ub97c \uc0ac\uc6a9\ud558\uba74 \ud568\uc218\uc5d0 \ud0c0\uc785\uc744 \uc804\ub2ec\ud560 \uc218 \uc788\ub294\ub370, \uc774\ub97c <strong>\uc81c\ub124\ub9ad \ud568\uc218<\/strong>\ub77c\uace0 \ubd80\ub978\ub2e4. \ud0c0\uc785 \ud30c\ub77c\ubbf8\ud130\ub294 \ucef4\ud30c\uc77c\ub7ec\uc5d0 \ud0c0\uc785\uacfc \uad00\ub828\ub41c \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uc5ec \ucef4\ud30c\uc77c\ub7ec\uac00 \ud0c0\uc785\uc744 \uc870\uae08 \ub354 \uc815\ud655\ud558\uac8c \ucd94\uce21\ud560 \uc218 \uc788\ub3c4\ub85d \ud55c\ub2e4. \ub530\ub77c\uc11c \ud504\ub85c\uadf8\ub7a8\uc774 \ub354 \uc548\uc804\ud574\uc9c0\uace0, \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624\uc640 \uac19\uc740 IDE\ub3c4 \uc774\ub97c \uae30\ubc18\uc73c\ub85c \uc5ec\ub7ec\uac00\uc9c0 \uc720\uc6a9\ud55c \uc81c\uc548(Suggestion)\uc744 \ud574\uc8fc\ubbc0\ub85c \uac1c\ubc1c\uc790\ub294 \ud504\ub85c\uadf8\ub798\ubc0d\uc774 \ud3b8\ub9ac\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<p>\uc81c\ub124\ub9ad\uc740 \uc77c\ubc18\uc801\uc73c\ub85c &lt;T>\uc640 \uac19\uc774 \ud45c\ud604\ud558\uc9c0\ub9cc, &lt;T:CharSequence> \ub85c \uc0ac\uc6a9\ud558\uba74 T\ub294 <meta charset=\"utf-8\">CharSequence\uc758 \uc11c\ube0c\ud0c0\uc785\ub9cc \uc9c0\uc815 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">fun <strong>&lt;T:CharSequence><\/strong> sayHello(name:T){\n    <em>println<\/em>(\"Hi, $name\")\n}\n\nval name:String = \"Charles\"\nsayHello(name) \/\/ Hi, Charles\n\nsayHello(100) \/\/ \ucef4\ud30c\uc77c \uc624\ub958<\/pre>\n\n\n\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 \ud2b9\uc815 \ud0c0\uc785 \uc870\uac74\uc73c\ub85c \uc81c\ud55c\uc744 \uac78 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">fun &lt;T:CharSequence> sayHello(name:T) <strong>where T:StringBuilder<\/strong>{ \/\/ \uc870\uac74\uc740 \ubcf5\uc218\uac1c \uc9c0\uc815 \uac00\ub2a5\n    println(\"Hi, $name\")\n}\n\nval name:String = \"Charles\"\n<em>sayHello<\/em>(name) \/\/ \ucef4\ud30c\uc77c \uc624\ub958 \n\nval builder:StringBuilder = StringBuilder(\"Charles\")\n<em>sayHello<\/em>(builder) \/\/ Hi, Charles<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud0c0\uc785 \ud30c\ub77c\ubbf8\ud130\uc758 \uc100\ub3c4\uc789\uc744 \ud53c\ud558\uae30<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>class Forest(val <strong>name<\/strong>: String) {\n    fun addTree(<strong>name<\/strong>: String) {...}\n}<\/code><\/pre>\n\n\n\n<p>\uc704 \ucf54\ub4dc\ucc98\ub7fc \ud504\ub85c\ud37c\ud2f0\uc640 \ud30c\ub77c\ubbf8\ud130(name)\uac00 \uac19\uc740 \uc774\ub984\uc744 \uac00\uc9c8 \uc218 \uc788\ub2e4. \uc774\ub97c \uc100\ub3c4\uc789(shadowing)\uc774\ub77c\uace0 \ud55c\ub2e4. \uc100\ub3c4\uc789\uc774 \ubc1c\uc0dd\ud55c \ucf54\ub4dc\ub294 \ub3d9\uc791\uc5d0\ub294 \ubb38\uc81c\uac00 \uc5c6\uc73c\ub098 \uc774\ud574\ud558\uae30 \uc5b4\ub824\uc6b0\ubbc0\ub85c \uc100\ub3c4\uc789\uc774 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub3c4\ub85d \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc81c\ub124\ub9ad \ud0c0\uc785\uacfc variance \ud55c\uc815\uc790\ub97c \ud65c\uc6a9\ud558\uae30<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">variance \ud55c\uc815\uc790\uc758 \uc774\ud574<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2022\/02\/www.charlezz.com-reusability-variance.png\" alt=\"\" class=\"wp-image-45934\" width=\"401\" height=\"171\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2022\/02\/www.charlezz.com-reusability-variance.png 802w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2022\/02\/www.charlezz.com-reusability-variance-300x128.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2022\/02\/www.charlezz.com-reusability-variance-768x328.png 768w\" sizes=\"(max-width: 401px) 100vw, 401px\" \/><\/figure><\/div>\n\n\n\n<ul><li>\ud0c0\uc785 \ud30c\ub77c\ubbf8\ud130\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ubd88\ubcc0\uc131(\ud55c\uc815\uc790 \uc9c0\uc815 \uc5c6\uc74c)\uc774\ub2e4. <\/li><li>List \ubc0f Set\uc758 \ud0c0\uc785 \ud30c\ub77c\ubbf8\ud130\ub294 \uacf5\ubcc0\uc131(out \ud55c\uc815\uc790)\uc774\ub2e4. <\/li><li>Map\uc5d0\uc11c \uac12\uc758 \ud0c0\uc785\uc744 \ub098\ud0c0\ub0b4\ub294 \ud0c0\uc785 \ud30c\ub77c\ubbf8\ud130\ub294 \uacf5\ubcc0\uc131(out \ud55c\uc815\uc790) \uc774\ub2e4.<\/li><li>Array, MutableList, MutableSet, MutableMap\uc758 \ud0c0\uc785 \ud30c\ub77c\ubbf8\ud130\ub294 \ubd88\ubcc0\uc131(\ud55c\uc815\uc790 \uc9c0\uc815 \uc5c6\uc74c)\uc774\ub2e4.<\/li><li>\ud568\uc218 \ud0c0\uc785\uc758 \ud30c\ub77c\ubbf8\ud130 \ud0c0\uc785\uc740 \ubc18\ubcc0\uc131(in \ud55c\uc815\uc790)\uc774\ub2e4. \ubc18\ud658 \ud0c0\uc785\uc740 \uacf5\ubcc0\uc131(out \ud55c\uc815\uc790)\uc774\ub2e4.<\/li><li>\ubc18\ud658\ub9cc \ub418\ub294 \ud0c0\uc785\uc5d0\ub294 \uacf5\ubcc0\uc131(out \ud55c\uc815\uc790)\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/li><li>\ud5c8\uc6a9\ub9cc \ub418\ub294 \ud0c0\uc785\uc5d0\ub294 \ubc18\ubcc0\uc131(in \ud55c\uc815\uc790)\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\uacf5\ud1b5 \ubaa8\ub4c8 \ucd94\ucd9c \ubc0f \uc7ac\uc0ac\uc6a9<\/h2>\n\n\n\n<p>\ubaa8\ub4c8\ud654\ub97c \ud1b5\ud574 \uc5ec\ub7ec \ud50c\ub7ab\ud3fc\uc5d0\uc11c \ucf54\ub4dc\ub97c \uc7ac\uc0ac\uc6a9\ud558\uc790<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc774\ubbf8 \uc788\ub358 \ucf54\ub4dc\ub97c \ubcf5\uc0ac\ud574\uc11c \ubd99\uc5ec\ub123\uace0 \uc788\ub2e4\uba74, \ubb34\uc5b8\uac00\uac00 \uc798\ubabb\ub41c \uac83\uc774\ub2e4. -\uc774\ud399\ud2f0\ube0c \ucf54\ud2c0\ub9b0 \uc800\uc790- Knowledge\ub97c \ubc18\ubcf5\ud558\uc5ec \uc0ac\uc6a9\ud558\uc9c0 \ub9d0\ub77c \uc5ec\uae30\uc11c \uc5b8\uae09\ud558\ub294 knowledge\ub294 \uc77c\ubc18\uc801\uc73c\ub85c \ud45c\ud604\ud558\ub294 &#8216;\uc9c0\uc2dd&#8217;\uacfc \uc57d\uac04 \ub2e4\ub974\uac8c &#8216;\uc758\ub3c4\uc801\uc778 \uc815\ubcf4&#8217;\ub97c \ub098\ud0c0\ub0b4\ub294 \uac1c\ub150\uc73c\ub85c, &lt;\uc2e4\uc6a9\uc8fc\uc758 \ud504\ub85c\uadf8\ub798\uba38&gt; \ub77c\ub294 \ucc45\uc5d0\uc11c \uc5b8\uae09\ub41c\ub2e4. \uc774 \ucc45\uc5d0\uc11c\ub294 &#8216;Don&#8217;t Repat Yourself&#8217;\ub77c\ub294 \uaddc\uce59\uc744 &#8216;DRY \uaddc\uce59&#8217;\uc774\ub77c\uace0 \ud45c\ud604\ud55c\ub2e4. \ub610\ub294 WET \uc548\ud2f0\ud328\ud134\uc774\ub77c\uace0\ub3c4 \ud55c\ub2e4. \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \uc911\uc694\ud55c knowledge\ub97c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45931"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=45931"}],"version-history":[{"count":2,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45931\/revisions"}],"predecessor-version":[{"id":45940,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45931\/revisions\/45940"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=45931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=45931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=45931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}