{"id":286,"date":"2021-12-10T21:56:25","date_gmt":"2021-12-10T12:56:25","guid":{"rendered":"http:\/\/batmask.dothome.co.kr\/?p=286"},"modified":"2025-09-12T17:22:34","modified_gmt":"2025-09-12T08:22:34","slug":"kotlin-scope-functions","status":"publish","type":"post","link":"http:\/\/batmask.net\/index.php\/2021\/12\/10\/286\/","title":{"rendered":"Kotlin: \uc2a4\ucf54\ud504 \ud568\uc218\ub4e4(Scope functions) let, run, with, apply, also"},"content":{"rendered":"\n<p><strong><span class=\"has-inline-color has-vivid-red-color\"> \uc791\ub144\uc5d0 \uc791\uc131\ud588\ub358 \uae00\uc778\ub370, \uc81c\ub300\ub85c \uc774\ud574\ud558\uc9c0 \ubabb\ud558\uace0 \uc37b\ub358 \uae00\uc774\ub77c, \ub2e4\uc2dc\ubd10\ub3c4 \ubb34\uc2a8\ub9d0\uc778\uc9c0 \ubaa8\ub974\uaca0\ub354\ub77c. \uc774\uc81c \uc880 \uac10\uc774\uc640\uc11c \ub2e4\uc2dc \uc815\ub9ac\ud574 \uc5c5\ub370\uc774\ud2b8 \ud55c\ub2e4.<\/span><\/strong><\/p>\n\n\n\n<p>Kotlin\ub9cc\uc758 \ud2b9\uc9d5\uc911 \ud558\ub098\ub85c scope functions \ub77c\uace0 \ubd88\ub9ac\ub294\uac8c \uc788\ub2e4. &#8216;let&#8217;, &#8216;run&#8217;, &#8216;with&#8217;, &#8216;apply&#8217;, &#8216;also&#8217; \uc758 5\uac00\uc9c0\uac00 \uadf8\uac83\uc774\ub2e4. \uac1d\uccb4 \uc0dd\uc131\uc2dc, \uc0ac\uc6a9\ud558\ub294 \ud568\uc218\ub4e4\uc778\ub370, \uc790\uccb4\uc801\uc778 scope\ub97c \uac16\ub294 \ucf54\ub4dc\ube14\ub7ed\uc744 \uc0ac\uc6a9\ud574\uc11c scope function\uc774\ub77c \ubd88\ub9b0\ub2e4. <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/scope-functions.html\">Kotlin \uacf5\uc2dd\ubb38\uc11c \ucc38\uc870.<\/a> \uacf5\uc2dd\ubb38\uc11c\uc758 \uc608\ub97c \uac00\uc838\uc640\ubcf4\uba74 \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(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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class Person(private var name: String, var age: Int, var city: String){\n    fun moveTo(city: String){\n        this.city = city\n    }\n\n    fun incrementAge(){\n        age += 1\n    }\n}\n\n\/\/ scope function 'let'\nPerson(\"Alice\", 20, \"Amsterdam\").let {\n    println(it)\n    it.moveTo(\"London\")\n    it.incrementAge()\n    println(it)\n}<\/textarea><\/pre><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\">Person<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">var<\/span><span style=\"color: #ADBAC7\"> name: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F47067\">var<\/span><span style=\"color: #ADBAC7\"> age: <\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F47067\">var<\/span><span style=\"color: #ADBAC7\"> city: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">moveTo<\/span><span style=\"color: #ADBAC7\">(city: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">this<\/span><span style=\"color: #ADBAC7\">.city <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> city<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">incrementAge<\/span><span style=\"color: #ADBAC7\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        age <\/span><span style=\"color: #F47067\">+=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">1<\/span><\/span>\n<span class=\"line\"><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: #768390\">\/\/ scope function &#39;let&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">Person<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Alice&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #6CB6FF\">20<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;Amsterdam&quot;<\/span><span style=\"color: #ADBAC7\">).<\/span><span style=\"color: #DCBDFB\">let<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(it)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    it.<\/span><span style=\"color: #DCBDFB\">moveTo<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;London&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    it.<\/span><span style=\"color: #DCBDFB\">incrementAge<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(it)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Person \ud074\ub798\uc2a4\ub294 \uc0d8\ud50c\ucf54\ub4dc\uc5d0 \ub9de\ucdb0 \uc784\uc758\ub85c \ub9cc\ub4e4\uc5c8\ub2e4. let \ud568\uc218\ub97c \uc608\ub85c \ub4e4\uace0 \uc788\ub294\ub370, \uac1d\uccb4\uc5d0 \ubd99\uc5b4\uc11c \ucf54\ub4dc\ube14\ub7ed\uc744 \uc2e4\ud589\ud558\uac8c\ub41c\ub2e4. lambda function \ud615\uc2dd\uc73c\ub85c it\uc740 let\uc774 \uc0ac\uc6a9\ub41c \uac1d\uccb4 \uc989, context object\ub97c \uc758\ubbf8\ud55c\ub2e4. \uc774 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \ub3d9\uc77c\ud55c \ub0b4\uc6a9\uc774\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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val alice = Person(\"Alice\", 20, \"Amsterdam\")\nprintln(alice)\nalice.moveTo(\"London\")\nalice.incrementAge()\nprintln(alice)<\/textarea><\/pre><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\"> alice <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">Person<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Alice&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #6CB6FF\">20<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;Amsterdam&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(alice)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">alice.<\/span><span style=\"color: #DCBDFB\">moveTo<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;London&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">alice.<\/span><span style=\"color: #DCBDFB\">incrementAge<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(alice)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ube44\uad50\ud574\ubcf4\uba74 \uc54c \uc218 \uc788\ub4ef\uc774, scope function\uc744 \uc0ac\uc6a9\ud568\uc73c\ub85c\uc368, \ucf54\ub4dc\uac00 \uac00\ub3c5\uc131\uc744 \ub192\uc774\uba74\uc11c \uac04\uacb0\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<p>\uadfc\ub370 \uc65c \ud5f7\uac08\ub9ac\uac8c 5\uac1c\ub098 \ub2e4 \ub2e4\ub978\uc774\ub984\uc73c\ub85c \ub418\uc5b4\uc788\ub098? \uc870\uae08\uc529 \ucc28\uc774\uac00 \uc788\ub294\ub370, 1) \uac1d\uccb4\ub97c &#8216;it&#8217;\uc73c\ub85c \uc4f0\ub290\ub0d0, &#8216;this&#8217;\ub97c \uc4f0\ub290\ub0d0, 2) \ub9ac\ud134\uac12\uc774 lambda result\uc774\ub0d0, context object\uc774\ub0d0\uc5d0 \ub530\ub77c \ub098\ub25c\ub2e4. 4\uac1c\uba74 \ub418\ub294\ub370? extension function \ud615\uc2dd\uc678\uc5d0 argument\ub85c context object\ub97c \ubc1b\ub294 &#8216;with&#8217;\uac00 \ucd94\uac00\ub85c \ud558\ub098 \uc874\uc7ac\ud55c\ub2e4. \ud45c\ub85c \uc815\ub9ac\ud55c \uacf5\uc2dd \ubb38\uc11c\ub97c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-background\" style=\"background-color:#e7f5fe\"><thead><tr><th>Function<\/th><th>Object reference<\/th><th>Return value<\/th><th>Is extension function<\/th><\/tr><\/thead><tbody><tr><td><code>let<\/code><\/td><td><code>it<\/code><\/td><td>Lambda result<\/td><td>Yes<\/td><\/tr><tr><td><code>run<\/code><\/td><td><code>this<\/code><\/td><td>Lambda result<\/td><td>Yes<\/td><\/tr><tr><td><code>run<\/code><\/td><td>&#8211;<\/td><td>Lambda result<\/td><td>No: called without the context object<\/td><\/tr><tr><td><code>with<\/code><\/td><td><code>this<\/code><\/td><td>Lambda result<\/td><td>No: takes the context object as an argument.<\/td><\/tr><tr><td><code>apply<\/code><\/td><td><code>this<\/code><\/td><td>Context object<\/td><td>Yes<\/td><\/tr><tr><td><code>also<\/code><\/td><td><code>it<\/code><\/td><td>Context object<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p> \uc5b4\ub290 \uc0c1\ud669\uc5d0\uc11c \ubb34\uc5c7\uc744 \uc368\uc57c\ud560\uc9c0, \ucc98\uc74c\uc5d4 \ub9e4\uc6b0 \ud5f7\uac08\ub9ac\ub294\ub370 \uc0ac\uc6a9\uc608\ub4e4\uc744 \ubcf4\ub2e4\ubcf4\ub2c8 \uc775\uc219\ud574\uc9c0\uace0 \uc774\ud574\ub418\uae30 \uc2dc\uc791\ud558\ub354\ub77c. \uc0ac\uc2e4, \ub9e4\uc6b0 \ud070 \ucc28\uc774\uac00 \uc788\ub294\uac8c \uc544\ub2c8\uace0 \ube44\uc2b7\ube44\uc2b7\ud55c \ubd80\ubd84\ub4e4\uc774 \uc788\uace0 \ubb58 \uc368\ub3c4 \uc0c1\uad00 \uc5c6\ub294 \uc0c1\ud669\ub4e4\uc774 \uc874\uc7ac\ud558\ub294\ub370, \uc0c1\ud669\uc5d0 \ub530\ub77c \uc870\uae08 \ub354 \ud3b8\ud558\uac8c \uc4f8 \uc218 \uc788\ub294\uac8c \ubcf4\uc774\uac8c\ub41c\ub2e4.<\/p>\n\n\n\n<p>\uc2e4 \uc0ac\uc6a9\uc2dc, \uc5b8\uc81c \uc5b4\ub5a4 \ud568\uc218\ub97c \uc4f8\uc9c0 \uac00\uc774\ub4dc\uac00 \uc5ed\uc2dc \uacf5\uc2dd \ubb38\uc11c\uc5d0 \uc788\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Executing a lambda on non-null objects:\u00a0<code>let<\/code><\/li>\n\n\n\n<li>Introducing an expression as a variable in local scope:\u00a0<code>let<\/code><\/li>\n\n\n\n<li>Object configuration:\u00a0<code>apply<\/code><\/li>\n\n\n\n<li>Object configuration and computing the result:\u00a0<code>run<\/code><\/li>\n\n\n\n<li>Running statements where an expression is required: non-extension\u00a0<code>run<\/code><\/li>\n\n\n\n<li>Additional effects:\u00a0<code>also<\/code><\/li>\n\n\n\n<li>Grouping function calls on an object:\u00a0<code>with<\/code><\/li>\n<\/ul>\n\n\n\n<p>\uc74c&#8230; \uadf8\ub798\uc11c \uc2e4\uc81c \uc5b8\uc81c \uc5b4\ub5bb\uac8c \uc4f0\ub77c\ub294\uac78\uae4c? <a href=\"https:\/\/proandroiddev.com\/kotlin-standard-functions-or-scoping-functions-let-apply-run-also-with-af1d93a444f1\">\uc870\uae08 \ub354 \uce5c\uc808\ud558\uac8c \uc815\ub9ac\ud574\ub193\uc740 \uae00\uc744 \ucc3e\uc558\ub2e4. \uce68\uc870.<\/a> \ub610 \ud558\ub098, <a href=\"https:\/\/kotlinexpertise.com\/coping-with-kotlins-scope-functions\/\">\ucc38\uc870\ud558\uae30 \uc88b\uc740 \uae00<\/a>\ub3c4 \ucc3e\uc558\ub2e4. \uc774\uac78 \ucc38\uc870 \ud558\uba74\uc11c \uad81\uae08\uc99d\uc744 \ud480\uc5b4\ubcf4\uc790.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">with<\/h3>\n\n\n\n<p>\uac00\uc7a5\uba3c\uc800 \uc0b4\ud3b4\ubcfc \uac83\uc740 with\uc774\ub2e4. \uc0ac\uc6a9\ub3c4 \ub9e4\uc6b0 \uc9c1\uad00\uc801\uc778\ub370, with\ub97c \uc0ac\uc6a9\ud558\uba74, <strong><span class=\"has-inline-color has-very-dark-gray-color\">\uae38\ub2e4\ub780 dot notation\uc5c6\uc774 local scope \ube14\ub7ed\uc744 \uc0dd\uc131\ud574\uc11c \ucf54\ub4dc\ub97c \uac04\ub7b5\ud558\uac8c \uc4f8 \uc218 \uc788\ub2e4. <\/span><\/strong>\uacf5\uc2dd \uac00\uc774\ub4dc\uc5d0 &#8216;Grouping function calls on an object&#8217; \uc758 \uc758\ubbf8\uac00 \uc774\uac83\uc774\ub2e4. \ucc38\uc870\uae00\uc758 \uc0d8\ud50c\uc744 \ubcf4\uba74 \uc27d\uac8c \uc774\ud574\ub41c\ub2e4. gist \uc0d8\ud50c\uc744 \uac00\uc838\uc624\ub824 \ud588\uc73c\ub098, \uc65c\uc778\uc9c0 \uc5d0\ub7ec\uac00 \ub098\uc11c \ucf54\ub4dc\ub97c \ub530\uc654\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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>webView.settings.javaScriptEnabled = true\nwebView.settings.domStorageEnabled = true\nwebView.settings.userAgentString = \u201cmobile_app_webview\u201d\n\nwith(webView.settings){\n    javaScriptEnabled = true\n    domStorageEnabled = true\n    userAgentString = \u201cmobile_app_webview\u201d\n    webview \/\/ this is last statement, so it will be return type of with\n}<\/textarea><\/pre><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\">webView.settings.javaScriptEnabled <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">webView.settings.domStorageEnabled <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">webView.settings.userAgentString <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> \u201cmobile_app_webview\u201d<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">with<\/span><span style=\"color: #ADBAC7\">(webView.settings){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    javaScriptEnabled <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    domStorageEnabled <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    userAgentString <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> \u201cmobile_app_webview\u201d<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    webview <\/span><span style=\"color: #768390\">\/\/ this is last statement, so it will be return type of with<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uac1d\uccb4\uc5d0 dot notation\uc73c\ub85c \uc0ac\uc6a9\ud574\uc57c\ud558\ub294 \ucf54\ub4dc\ub4e4\uc744 with\uc5d0 \uac1d\uccb4\ub97c \uba85\uc2dc\ud558\uace0 \ud558\ub098\uc758 \uc2a4\ucf54\ud504\ub85c \ubb36\uc5b4\uc11c dot notation\uc5c6\uc774 \uc0ac\uc6a9\ud558\uace0 \uc788\ub2e4. \ube14\ub7ed\uc73c\ub85c \ubb36\uc5ec\uc11c \ucf54\ub4dc \uc77d\uae30\ub3c4 \uc26c\uc6cc\uc9c0\uace0, \ucf54\ub4dc\uc0c1\uc5d0\uc11c \ubc18\ubcf5\ud558\ub358 dot notation\uc744 \uc81c\uac70\ud574\uc11c \uc0ac\uc6a9\ub3c4 \uac04\ud3b8\ud574\uc84c\ub2e4.  <\/p>\n\n\n\n<p><a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/with.html\">with \uc758 \uc815\uc758<\/a>\ub97c \ub808\ud37c\ub7f0\uc2a4\ubb38\uc11c\uc5d0\uc11c \uc0b4\ud3b4\ubcf4\uba74 \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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>inline fun &lt;T, R> with(receiver: T, block: T.() -> R): R<\/textarea><\/pre><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\">inline<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">R<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #DCBDFB\">with<\/span><span style=\"color: #ADBAC7\">(receiver: <\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">, block: <\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">.() <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> R): <\/span><span style=\"color: #F69D50\">R<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ub450\uac1c\uc758 \uc778\uc790\ub97c \ubc1b\ub294\ub370, receiver\ub85c generic T \ub97c \ubc1b\uace0, \ub450\ubc88\uc9f8 \uc778\uc790\ub294 T\uc5d0 \ub300\ud55c \ub78c\ub2e4\ud568\uc218\ub85c \uc815\uc758\ud558\uace0 \uc788\ub2e4. \ub9ac\ud134\uac12\uc740 \ub78c\ub2e4\ud568\uc218\uc758 \ub9ac\ud134\uac12\uc73c\ub85c \uc815\uc758\ud558\uace0 \uc788\ub2e4. \uc989, \uc704 \uc608\uc81c\uc5d0\uc11c \uc0ac\uc6a9\ud55c with\uc758 \ucf54\ub4dc\ube14\ub7ed\uc740 \ub78c\ub2e4\ud568\uc218\uc774\uba70, \ub78c\ub2e4\ud568\uc218 \ud2b9\uc131\uc0c1 \ub9c8\uc9c0\ub9c9\uc904\uc758 webview\uac00 \ub9ac\ud134\ub41c\ub2e4.<\/p>\n\n\n\n<p>with\ub294 \uac1d\uccb4\ub97c \uc778\uc790\ub85c \ubc1b\uc73c\ubbc0\ub85c, \uc774\ubbf8 \uc0dd\uc131\ub41c \uac1d\uccb4\uc5d0 \uc5ec\ub7ec\uc791\uc5c5\uc744 \uc77c\uad04\uc801\uc73c\ub85c \ud574\uc57c\ud560 \ub54c, \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">let<\/h3>\n\n\n\n<p><strong><span class=\"has-inline-color has-very-dark-gray-color\"> <\/span><\/strong><a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/let.html\">let\uc758 \uc815\uc758\ub97c \uacf5\uc2dd\ubb38\uc11c<\/a>\uc5d0\uc11c \ucc3e\uc544\ubcf4\uba74 \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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>inline fun &lt;T, R> T.let(block: (T) -> R): R<\/textarea><\/pre><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\">inline<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">R<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">let<\/span><span style=\"color: #ADBAC7\">(block: (<\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">) -&gt; <\/span><span style=\"color: #F69D50\">R<\/span><span style=\"color: #ADBAC7\">): <\/span><span style=\"color: #F69D50\">R<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>T.let()\uc73c\ub85c \uc815\uc758\ud558\uace0 \uc788\ub294\ub370, generics\ub97c \uc774\uc6a9\ud55c extension function\uc73c\ub85c \uc815\uc758\ud558\uace0 \uc788\ub294 \ubaa8\uc2b5\uc774\ub2e4. \uc778\uc790\ub294 \ub78c\ub2e4\ud568\uc218 \ud558\ub098\ub85c, \ub78c\ub2e4\ud568\uc218\uc5d0 \ud574\ub2f9\ud558\ub294 \uc2a4\ucf54\ud504 \ube14\ub7ed\uc744 \ubc14\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. \ub9ac\ud134\uac12\uc740 \ub78c\ub2e4\ud568\uc218\uc758 \ub9ac\ud134\uac12\uc73c\ub85c \uc815\uc758\ub418\uc5b4 \uc788\uc73c\uba70 \uc989, \ub9c8\uc9c0\ub9c9 \uc904\uc758 \uac12\uc774 \ub420 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p>let\ub3c4 \uc55e\uc11c with\ucc98\ub7fc \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud558\uae34 \ud558\ub2e4. scope function\ub4e4\uc774 \ub2e4 \ube44\uc2b7\ube44\uc2b7\ud558\uace0, \ud5f7\uac08\ub9ac\ub294 \uc774\uc720\uc774\ub2e4. with\uc758 \uc608\uc81c\ub97c let\uc73c\ub85c \ubc14\uafd4\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ub41c\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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>webView.settings.let { setting ->\n    setting.javaScriptEnabled = true\n    setting.domStorageEnabled = true\n    setting.userAgentString = \u201cmobile_app_webview\u201d\n\n    webview\n}<\/textarea><\/pre><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\">webView.settings.<\/span><span style=\"color: #DCBDFB\">let<\/span><span style=\"color: #ADBAC7\"> { setting <\/span><span style=\"color: #F47067\">-&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    setting.javaScriptEnabled <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    setting.domStorageEnabled <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    setting.userAgentString <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> \u201cmobile_app_webview\u201d<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    webview<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ub78c\ub2e4\ud568\uc218\uc774\uae30 \ub54c\ubb38\uc5d0, \uac1d\uccb4\ub294 \ud2b9\ubcc4\ud788 \uba85\uc2dc\ud558\uc9c0 \uc54a\uc73c\uba74 &#8216;it&#8217;\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. \uc704\uc758 \uc608\uc81c\uc5d0\uc120 &#8216;setting&#8217;\uc73c\ub85c \uba85\uc2dc\ud574\uc92c\uc73c\ubbc0\ub85c, \uc774\ub97c \uc774\uc6a9\ud558\uace0 \uc788\ub2e4. <\/p>\n\n\n\n<p>\uc774\ud574\ub97c \ub3d5\uae30\uc704\ud574, \uc704\uc758 \uc608\uc81c\ub97c \ub4e4\uc5c8\uc9c0\ub9cc, \ucf54\ub4dc\ube14\ub7ed \ub0b4\uc5d0\uc11c &#8216;it&#8217;\uc774\ub098 &#8216;setting&#8217;\ucc98\ub7fc \ub9e4\ubc88 \uac1d\uccb4\ub97c \ud45c\uc2dc\ud574\uc918\uc57c \ud558\uae30 \ub54c\ubb38\uc5d0 with\uac00 \uac00\ub2a5\ud55c \uc0c1\ud669\uc5d0\uc11c \uad73\uc774 let\uc744 \uc0ac\uc6a9\ud560 \ud544\uc694\uac00 \uc5c6\ub2e4. \uadf8\ub7fc \uc5b8\uc81c\uc0ac\uc6a9\ud560\uae4c? <\/p>\n\n\n\n<p><strong>\ubcf4\ud1b5 null \uccb4\ud06c\ub97c \uac04\ud3b8\ud558\uac8c \ud558\uae30\uc704\ud574 \uc0ac\uc6a9\ud55c\ub2e4.<span class=\"has-inline-color has-very-dark-gray-color\"> null \uccb4\ud06c \ud6c4, \uc2e4\ud589\uc744 let\uc744 \uc774\uc6a9\ud574 \ub300\uccb4 \uac00\ub2a5\ud558\ub2e4.<\/span><\/strong> \uacf5\uc2dd \uac00\uc774\ub4dc\uc5d0\uc11c &#8216;Executing a lambda on non-null objects&#8217; \uac00 \uc774\uc5d0 \ud574\ub2f9\ud55c\ub2e4. \uc608\uc81c\ub97c\ubcf4\uc790.<\/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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val len = text?.let {\n    println(\"get length of $it\")\n    it.length\n} ?: 0<\/textarea><\/pre><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\"> len <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> text?.<\/span><span style=\"color: #DCBDFB\">let<\/span><span style=\"color: #ADBAC7\"> {<\/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;get length of <\/span><span style=\"color: #6CB6FF\">$it<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    it.length<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">} ?: <\/span><span style=\"color: #6CB6FF\">0<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>text\uac00 null \uc774\uba74, let \ube14\ub7ed\uc740 \uc2e4\ud589\ub418\uc9c0 \uc54a\ub294\ub2e4. \uc774\ub294 <code>if(text != null){}<\/code> \uacfc \ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uac16\uc9c0\ub9cc, \ubcf4\ub2e4 \uac04\ud3b8\ud558\ub2e4.<\/p>\n\n\n\n<p><strong>\ub458\uc9f8\ub85c, context object\ub97c \ub2e4\ub978\uac12\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \uacbd\uc6b0, \uc774\ub97c local scope\ub85c \ubb36\uc5b4\uc11c \uae54\ub054\ud558\uac8c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/strong> \ubcc0\uc218\ub294 local scope\uc548\uc5d0\uc11c\ub9cc \uc720\ud6a8\ud558\ubbc0\ub85c, \uc678\ubd80\uc5d0\uc11c \uc798\ubabb\uc0ac\uc6a9\ud558\uac70\ub098 \uc774\ub984\uc774 \uacb9\uce58\ub294\ub4f1\uc758 \uace0\ubbfc\uc744 \uc548\ud574\ub3c4 \ub41c\ub2e4. \uacf5\uc2dd \uac00\uc774\ub4dc\uc5d0\uc11c &#8216;Introducing an expression as a variable in local scope&#8217; \uac00 \uc774\uc5d0 \ud574\ub2f9\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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val numbers = listOf(\"one\", \"two\", \"three\", \"four\")\nval modifiedFirstItem = numbers.first().let { firstItem ->\n    println(\"The first item of the list is '$firstItem'\")\n    if (firstItem.length >= 5) firstItem else \"!\" + firstItem + \"!\"\n}.toUpperCase()\nprintln(\"First item after modifications: '$modifiedFirstItem'\")<\/textarea><\/pre><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\"> numbers <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">listOf<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;one&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;two&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;three&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;four&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> modifiedFirstItem <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> numbers.<\/span><span style=\"color: #DCBDFB\">first<\/span><span style=\"color: #ADBAC7\">().<\/span><span style=\"color: #DCBDFB\">let<\/span><span style=\"color: #ADBAC7\"> { firstItem <\/span><span style=\"color: #F47067\">-&gt;<\/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 item of the list is &#39;<\/span><span style=\"color: #6CB6FF\">$firstItem<\/span><span style=\"color: #96D0FF\">&#39;&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (firstItem.length <\/span><span style=\"color: #F47067\">&gt;=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">5<\/span><span style=\"color: #ADBAC7\">) firstItem <\/span><span style=\"color: #F47067\">else<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;!&quot;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> firstItem <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;!&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}.<\/span><span style=\"color: #DCBDFB\">toUpperCase<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;First item after modifications: &#39;<\/span><span style=\"color: #6CB6FF\">$modifiedFirstItem<\/span><span style=\"color: #96D0FF\">&#39;&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc704\uc640 \uac19\uc774 \uc0ac\uc6a9\ud558\uba74, firstItem\uc5d0 \ub300\ud574 \ub78c\ub2e4\ube14\ub7ed\uc774 \ube14\ub799\ubc15\uc2a4\ucc98\ub7fc \uc0ac\uc6a9\ub41c\ub2e4. \uc678\ubd80\uc5d0\uc11c\ub294 firstItem\uc5d0 \ub300\ud574\uc120 \uc2e0\uacbd\uc4f0\uc9c0 \uc54a\uace0 \uc624\ub85c\uc9c0, \ubcc0\ud658\ub41c modifiedFirstItem\ub9cc \ucc38\uc870\ud574\uc11c \uc0ac\uc6a9\ud560 \ubfd0\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">apply<\/h3>\n\n\n\n<p> <a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/apply.html\">\uba3c\uc800 \uacf5\uc2dd\ubb38\uc11c\uc758 \uc815\uc758<\/a>\ub97c \uc0b4\ud3b4\ubcf4\uc790.<\/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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>inline fun &lt;T> T.apply(block: T.() -> Unit): T<\/textarea><\/pre><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\">inline<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\">(block: <\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">.() <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> Unit): <\/span><span style=\"color: #F69D50\">T<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>apply\ub294 extension function\uc73c\ub85c \uc815\uc758\ub418\uba70, \ub78c\ub2e4\ud568\uc218\uc758 \ub9ac\ud134\uac12\uc740 \uc5c6\uace0, context object T\ub97c \ub9ac\ud134\ud558\uac8c \ub418\uc5b4\uc788\ub2e4. \uc989, \ub78c\ub2e4\ud568\uc218 \ube14\ub7ed\ub0b4\uc5d0\uc11c\ub294 \ub9ac\ud134\uac12\uc744 \uc2e0\uacbd\uc4f0\uc9c0 \uc54a\uc73c\uba70, \ube4c\ub354\ud328\ud134\ucc98\ub7fc apply\ub4a4\uc5d0\ub3c4 dot notation\uc744 \ucd94\uac00\ub85c \uc774\uc5b4\uac08 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>apply \ub78c\ub2e4\ud568\uc218 \ube14\ub7ed\ub0b4\uc5d0\uc120, context object\ub97c \uc0ac\uc6a9\ud558\ubbc0\ub85c, \uac1d\uccb4\ub294 this\ub85c \ucc38\uc870\uac00 \ub41c\ub2e4. \uc989, with\uc640 \ub3d9\uc77c\ud558\uac8c \ube14\ub7ed\ub0b4\uc5d0\uc11c \uac1d\uccb4\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \ud45c\uc2dc\ud560 \ud544\uc694\uc5c6\uc774 \ub2e4\uc74c \uc608\uc81c\ucc98\ub7fc \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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val adam = Person(\"Adam\").apply {\n    age = 32\n    city = \"London\"        \n}\nprintln(adam)<\/textarea><\/pre><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\"> adam <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">Person<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Adam&quot;<\/span><span style=\"color: #ADBAC7\">).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    age <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">32<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    city <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;London&quot;<\/span><span style=\"color: #ADBAC7\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(adam)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p> \ub2e4\ub9cc, with\ub294 \uc778\uc790\ub85c context object\uc778 \uac1d\uccb4\ub97c \ub118\uaca8\uc8fc\uc9c0\ub9cc, apply\ub294 extension function\ud615\ud0dc\uc774\ub2e4. extension function\uc758 \uc7a5\uc810\uc740, \uc704\uc758 \uc608\uc81c\ucc98\ub7fc \uac1d\uccb4\ub97c \uc0dd\uc131\ud574\uc11c \ud560\ub2f9\ud558\uae30 \uc774\uc804\uc5d0, \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4\ub294 \uc810\uc774\ub2e4. \uc704\uc758 \uc608\uc81c\uc5d0\uc11c Person \uac1d\uccb4\ub294 adam\uc5d0 \ud560\ub2f9\ub418\uae30 \uc774\uc804\uc5d0, apply \ube14\ub7ed\ub0b4\uc758 \uac12\ub4e4\uc774 \ucc44\uc6cc\uc9c0\uace0\ub098\uc11c adam\uc5d0 \ud560\ub2f9\ub41c\ub2e4. \uc774\uc640\uac19\uc740 \ucc28\uc774\uc810\uc73c\ub85c, \uac1d\uccb4\uc758 \uc0dd\uc131\uc2dc\uc810\uc5d0\uc11c \uac1d\uccb4\uc758 \ucd08\uae30\ud654\uc5d0 \ub9ce\uc774 \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">also<\/h3>\n\n\n\n<p> \uba3c\uc800 \uacf5\uc2dd\ubb38\uc11c\uc758 \uc815\uc758\ub97c \uc0b4\ud3b4\ubcf4\uc790.<\/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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>inline fun &lt;T> T.also(block: (T) -> Unit): T<\/textarea><\/pre><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\">inline<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">also<\/span><span style=\"color: #ADBAC7\">(block: (<\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">) -&gt; <\/span><span style=\"color: #F69D50\">Unit<\/span><span style=\"color: #ADBAC7\">): <\/span><span style=\"color: #F69D50\">T<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>also\ub294 apply\uc640 \uc720\uc0ac\ud558\uac8c, extension function\uc73c\ub85c \uc815\uc758\ub418\ub294 \ub78c\ub2e4\ud568\uc218\uc774\uba70, \ub78c\ub2e4\ud568\uc218\uc758 \ub9ac\ud134\uac12\uc740 \uc5c6\uace0, context object T\ub97c \ub9ac\ud134\ud574\uc8fc\uace0 \uc788\ub2e4. \uc989, apply\uc640 \ub3d9\uc77c\ud558\uac8c, \ub78c\ub2e4\ud568\uc218 \ube14\ub7ed\ub0b4\uc5d0\uc11c \ud2b9\ubcc4\ud788 \ub9ac\ud134\uac12\uc744 \uc2e0\uacbd\uc4f0\uc9c0 \uc54a\uace0, also \ub4a4\uc5d0\ub3c4 dot notation\uc744 \uc774\uc6a9\ud574\uc11c \ube4c\ub354\ud328\ud134\ucc98\ub7fc \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud558\ub2e4. \uadf8\ub807\ub2e4\uba74, apply\uc640 \ucc28\uc774\uc810\uc740 \ubb34\uc5c7\uc77c\uae4c? apply\ub294 \ub78c\ub2e4\ud568\uc218\uc5d0 \uc778\uc790\ub97c \ub118\uaca8\uc8fc\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 this\ub85c \ucc38\uc870\ud574\uc57c\ud558\uc9c0\ub9cc, also\ub294 context object T\ub97c \uc778\uc790\ub85c \ub118\uaca8\uc8fc\uae30 \ub54c\ubb38\uc5d0, &#8216;it&#8217;\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 \ub2e4\ub978 \uba85\uc2dc\uc801\uc778 \uc774\ub984\uc73c\ub85c \ucc38\uc870\uac00\ub2a5\ud558\ub2e4. \uc608\uc81c\ub97c \ubcf4\uc790.<\/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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun getRandomInt(): Int {\n    return Random.nextInt(100).also {\n        writeToLog(\"getRandomInt() generated value $it\")\n    }\n}\n\nval i = getRandomInt()<\/textarea><\/pre><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\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">getRandomInt<\/span><span style=\"color: #ADBAC7\">(): <\/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: #F47067\">return<\/span><span style=\"color: #ADBAC7\"> Random.<\/span><span style=\"color: #DCBDFB\">nextInt<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">100<\/span><span style=\"color: #ADBAC7\">).<\/span><span style=\"color: #DCBDFB\">also<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">writeToLog<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;getRandomInt() generated value <\/span><span style=\"color: #6CB6FF\">$it<\/span><span style=\"color: #96D0FF\">&quot;<\/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>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> i <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">getRandomInt<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p> &#8216;it&#8217;\uc774\ub098 \ub2e4\ub978 \uba85\uc2dc\uc801\uc778 \uc774\ub984\uc73c\ub85c context object\ub97c \ucc38\uc870\ud558\uae30 \ub54c\ubb38\uc5d0, \uc704\uc640\uac19\uc774 \uc774\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc5d0 apply\ubcf4\ub2e4 \uac00\ub3c5\uc131\uc744 \ub192\uc77c \uc218\ub3c4 \uc788\uace0, \uac04\ud3b8\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<p>apply\uc640 also\ub294 \ub9ac\ud134\uac12\uc774 context object\ub85c, \ube4c\ub354\ud328\ud134\ucc98\ub7fc \ub4a4\uc5d0 \uc774\uc5b4\uc11c dot notation\uc744 \ubc14\ub85c \uc0ac\uc6a9\uac00\ub2a5\ud558\ub2e4. \uac04\ub2e8\ud55c \uc608\uc81c\ub97c \uc0b4\ud3b4\ubcf4\uba74, \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val numbers = mutableListOf(\"one\", \"two\", \"three\")\nnumbers\n    .also { println(\"The list elements before adding new one: $it\") }\n    .add(\"four\")<\/textarea><\/pre><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\"> numbers <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">mutableListOf<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;one&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;two&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;three&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">numbers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    .<\/span><span style=\"color: #DCBDFB\">also<\/span><span style=\"color: #ADBAC7\"> { <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;The list elements before adding new one: <\/span><span style=\"color: #6CB6FF\">$it<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">) }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    .<\/span><span style=\"color: #DCBDFB\">add<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;four&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">run<\/h3>\n\n\n\n<p><a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/run.html\">\uba3c\uc800 \uacf5\uc2dd\ubb38\uc11c\uc758 \uc815\uc758<\/a>\ub97c \uc0b4\ud3b4\ubcf4\uc790. \ub450\uac00\uc9c0 \uc815\uc758\uac00 \uc788\ub2e4\ub294\uac78 \ud655\uc778\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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>inline fun &lt;R> run(block: () -> R): R\ninline fun &lt;T, R> T.run(block: T.() -> R): R<\/textarea><\/pre><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\">inline<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">R<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #DCBDFB\">run<\/span><span style=\"color: #ADBAC7\">(block: () <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> R): <\/span><span style=\"color: #F69D50\">R<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">inline<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> &lt;<\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">R<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">run<\/span><span style=\"color: #ADBAC7\">(block: <\/span><span style=\"color: #F69D50\">T<\/span><span style=\"color: #ADBAC7\">.() <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> R): <\/span><span style=\"color: #F69D50\">R<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>context object\uac00 \uc5c6\uc774 \ub2e8\uc77c \ub78c\ub2e4\ud568\uc218 R\ub85c \ub418\uc5b4\uc788\ub294 \uac83\uacfc, context object T\uc758 extension funcion\uc73c\ub85c \uc815\uc758\ub41c \ub450\uac00\uc9c0 \ubc84\uc804\uc774 \uc788\ub2e4. \ub458 \ub2e4, \ub9ac\ud134\uac12\uc740 \ub78c\ub2e4\ud568\uc218\uc758 \ub9ac\ud134\uac12\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p>context object\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 run\uc740 \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(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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val hexNumberRegex = run {\n    val digits = \"0-9\"\n    val hexDigits = \"A-Fa-f\"\n    val sign = \"+-\"\n\n    Regex(\"&#91;$sign&#93;?&#91;$digits$hexDigits&#93;+\")\n}\n\nfor (match in hexNumberRegex.findAll(\"+123 -FFFF !%*&amp; 88 XYZ\")) {\n    println(match.value)\n}<\/textarea><\/pre><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\"> hexNumberRegex <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">run<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> digits <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;0-9&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> hexDigits <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;A-Fa-f&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> sign <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;+-&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">Regex<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;&#91;<\/span><span style=\"color: #6CB6FF\">$sign<\/span><span style=\"color: #96D0FF\">&#93;?&#91;<\/span><span style=\"color: #6CB6FF\">$digits$hexDigits<\/span><span style=\"color: #96D0FF\">&#93;+&quot;<\/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\">for<\/span><span style=\"color: #ADBAC7\"> (match <\/span><span style=\"color: #F47067\">in<\/span><span style=\"color: #ADBAC7\"> hexNumberRegex.<\/span><span style=\"color: #DCBDFB\">findAll<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;+123 -FFFF !%*&amp; 88 XYZ&quot;<\/span><span style=\"color: #ADBAC7\">)) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(match.<\/span><span style=\"color: #F47067\">value<\/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>\uadf8\uc800 \ub85c\uceec \uc2a4\ucf54\ud504\ub97c \uac16\ub294 \ub78c\ub2e4\ud568\uc218 \ube14\ub7ed\uc774\uae30 \ub54c\ubb38\uc5d0, \uc0ac\uc6a9 \uc608\ub97c \uc8fc\ubcc0\uc5d0\uc11c \ub9ce\uc774 \uc811\ud558\uc9c4 \ubabb\ud588\ub358\uac70 \uac19\ub2e4. <\/p>\n\n\n\n<p>\ub450\ubc88\uc9f8, context object\uc758 extension function\uc73c\ub85c \uc0ac\uc6a9\ub418\ub294 \uacbd\uc6b0\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ub41c\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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val service = MultiportService(\"https:\/\/example.kotlinlang.org\", 80)\n\nval result = service.run {\n    port = 8080\n    query(prepareRequest() + \" to port $port\")\n}<\/textarea><\/pre><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\"> service <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">MultiportService<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;https:\/\/example.kotlinlang.org&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #6CB6FF\">80<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> result <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> service.<\/span><span style=\"color: #DCBDFB\">run<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    port <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">8080<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">query<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #DCBDFB\">prepareRequest<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot; to port <\/span><span style=\"color: #6CB6FF\">$port<\/span><span style=\"color: #96D0FF\">&quot;<\/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>\uc0ac\uc2e4\uc0c1, with\uc640 \ub3d9\uc77c\ud558\ub098 extension function\ud615\ud0dc\ub77c\ub294\uac8c \ub2e4\ub97c \ubfd0\uc774\ub2e4. extension function\uc758 \uc7a5\uc810\uc774 \ubb34\uc5c7\uc77c\uae4c? \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\ub294 \uc2dc\uc810\uc5d0 \uac1d\uccb4\ub97c \ubcc0\uc218\uc5d0 \ud560\ub2f9\ud558\uc9c0 \uc54a\uace0 \uba3c\uc800 \uc0ac\uc6a9 \uac00\ub2a5\ud558\ub2e4\ub294 \uc810\uc774\ub2e4. \uc5ec\uae30\uc5d0 \ub354\ud574, apply \ub098 also\ub294 context object\ub97c \ub9ac\ud134\ud558\uc9c0\ub9cc, run\uc5d0\uc11c\ub294 \ub78c\ub2e4\ud568\uc218\uc758 \ub9ac\ud134\uac12\uc774 \uc0ac\uc6a9\ub418\ubbc0\ub85c \uc6b0\ub9ac\uac00 \uc784\uc758\ub85c \uc0dd\uc131\ud55c \uac12\uc774\ub098 \uac1d\uccb4\ub97c \ub9ac\ud134\ud560 \uc218 \uc788\ub2e4. \uc774\uac78 \uc774\uc6a9\ud55c \uc608\uc81c\ub97c \ubcf4\uba74, \ube4c\ub354 \ud328\ud134\uc5d0 \uac00\uc7a5 \uc801\ud569\ud568\uc744 \uc54c \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\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val password: Password = PasswordGenerator().run {\n       seed = \"someString\"\n       hash = {s -> someHash(s)}\n       hashRepetitions = 1000\n\n       generate()\n   }<\/textarea><\/pre><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\"> password: <\/span><span style=\"color: #F69D50\">Password<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">PasswordGenerator<\/span><span style=\"color: #ADBAC7\">().<\/span><span style=\"color: #DCBDFB\">run<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">       seed <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;someString&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">       hash <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> {s <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">someHash<\/span><span style=\"color: #ADBAC7\">(s)}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">       hashRepetitions <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">1000<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">       <\/span><span style=\"color: #DCBDFB\">generate<\/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>\ube4c\ub354 \ud328\ud134\uc744 \uc0ac\uc6a9\ud55c \ud328\uc2a4\uc6cc\ub4dc\ub97c \uc0dd\uc131\ud558\ub294 \ucf54\ub4dc\uc774\ub2e4. \ube4c\ub354\uc5d0 \ud574\ub2f9\ud558\ub294 PasswordGenerator\ub97c \ub530\ub85c \ud560\ub2f9\ud558\uc9c0 \uc54a\uace0, \ubc14\ub85c run \ube14\ub7ed\uc5d0\uc11c \ube4c\ub529\uc744 \uc644\ub8cc\ud55c \ud6c4, \ube4c\ub4dc \ud328\ud134\uc758 build()\ucc98\ub7fc generate()\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0dd\uc131\ub41c \ud328\uc2a4\uc6cc\ub4dc\ub9cc \ub3cc\ub824\uc8fc\uace0 \uc788\ub2e4. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc815\ub9ac\ud574\ubcf4\uc790.<\/h3>\n\n\n\n<p> \uc2a4\ucf54\ud504 \ud568\uc218\ub4e4\uc740 \ube44\uc2b7\ube44\uc2b7\ud574\uc11c \ubb58 \uc0ac\uc6a9\ud558\ub4e0 \uc2e4\ud589\uc5d0\ub294 \ud070 \ucc28\uc774\uac00 \uc5c6\ub2e4. \ud544\uc218\ub294 \uc544\ub2c8\uc9c0\ub9cc, \uac00\ub3c5\uc131\uc744 \ub192\uc774\uace0 \ucf54\ub4dc\uc791\uc131\uc744 \uac04\uacb0\ud558\uac8c \ud574\uc900\ub2e4\uace0 \uc54c\uba74 \ub418\uba70, \uc5ec\uae30\uc5d0 \uc801\uc751\ub418\uba74, \uc774\ub97c \uc0ac\uc6a9\ud558\ub294\uac8c \ubb34\uc870\uac74 \ub354 \uc88b\uace0 \ud3b8\ud574\uc9c8 \uac83\uc774\ub2e4. <\/p>\n\n\n\n<p> \uc4f0\uace0\uc790 \ud55c\ub2e4\uba74, \uc5ec\ub7ec\uc0c1\ud669\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud558\uae30 \ub54c\ubb38\uc5d0, \uc0dd\uac01\uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud544\uc218 \uc0c1\ud669\ub9cc \uc815\ub9ac\ud574\ubcf4\uc790.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><span class=\"has-inline-color has-black-color\">null \uccb4\ud06c\ud560 \ub54c : let<\/span><\/strong><\/li>\n\n\n\n<li><strong><span class=\"has-inline-color has-black-color\">\uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uba70 \ucd08\uae30\ud654\ud560 \ub54c : apply<\/span><\/strong><\/li>\n\n\n\n<li><strong><span class=\"has-inline-color has-black-color\">\uc0dd\uc131\ub41c \uac1d\uccb4\uc758 \uba54\uc18c\ub4dc \uc5ec\ub7ec\uac1c\ub97c \ud55c\ubc88\uc5d0 \uc0ac\uc6a9\ud558\uac70\ub098, \uc18d\uc131\uc744 \ud55c\ubc88\uc5d0 \uc124\uc815\ud560 \ub54c : with, \ub2e4\ub978\uac78 \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc with\uac00 \uac00\ub3c5\uc131\uc774 \uc88b\ub2e4\uace0 \uc0dd\uac01\ub41c\ub2e4.<\/span><\/strong><\/li>\n\n\n\n<li><strong><span class=\"has-inline-color has-black-color\">\uac1d\uccb4\uc758 \uc0dd\uc131 \uc2dc\uc810\uc774\ub098, \uc0dd\uc131\ud55c \uac1d\uccb4\ub97c \uc0ac\uc6a9\ud560 \ub54c, \uba85\uc2dc\uc801\uc73c\ub85c \uac1d\uccb4\ub97c \ucc38\uc870\ud558\ub294 \uc791\uc5c5\uc774 \ud544\uc694\ud560 \ub54c : also, \ub78c\ub2e4\ud568\uc218 \uc778\uc790\ub85c &#8216;it&#8217;\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 \uba85\uc2dc\uc801\uc778 \ub2e4\ub978 \uc774\ub984\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 this\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\ubcf4\ub2e4 \uac00\ub3c5\uc131\uc774 \uc88b\ub2e4. <\/span><\/strong><\/li>\n\n\n\n<li><strong><span class=\"has-inline-color has-black-color\">\ube4c\ub354 \ud328\ud134 : run<\/span><\/strong><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p> \ub300\ud45c\uc801\uc778 \uc0ac\uc6a9 \uc608\uc77c \ubfd0\uc774\uace0 \uac1c\ubc1c\uc744 \ub3c4\uc640\uc8fc\uae30 \uc704\ud55c \uac83\ub4e4\uc774\ub2c8 \ub108\ubb34 \uac15\ubc15\uc744 \uac00\uc9c8 \ud544\uc694\ub294 \uc5c6\uc744\uac70 \uac19\ub2e4. <strong><span class=\"has-inline-color has-vivid-red-color\">this\uc640 it(\ub610\ub294 \uba85\uc2dc\uc801 \uc774\ub984)\uc73c\ub85c \ube14\ub7ed\ub0b4\uc5d0\uc11c context object\ub97c \ucc38\uc870\ud558\ub294 \ubc29\ubc95\uc758 \ucc28\uc774\uc640 \ub9ac\ud134\uac12\uc774 context object\uc778\uc9c0 lambda function\uc758 \ub9ac\ud134\uac12\uc778\uc9c0 \ucc28\uc774\ub9cc \uc798 \uc0dd\uac01<\/span><\/strong>\ud558\uba74 \ucf54\ub4dc\ub97c \uc77d\uac70\ub098 \uc0ac\uc6a9\ud558\ub294\ub370 \ubb38\uc81c\uac00 \uc5c6\uc744 \uac83\uc774\ub77c \uc0dd\uac01\ub41c\ub2e4.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc791\ub144\uc5d0 \uc791\uc131\ud588\ub358 \uae00\uc778\ub370, \uc81c\ub300\ub85c \uc774\ud574\ud558\uc9c0 \ubabb\ud558\uace0 \uc37b\ub358 \uae00\uc774\ub77c, \ub2e4\uc2dc\ubd10\ub3c4 \ubb34\uc2a8\ub9d0\uc778\uc9c0 \ubaa8\ub974\uaca0\ub354\ub77c. \uc774\uc81c \uc880 \uac10\uc774\uc640\uc11c \ub2e4\uc2dc \uc815\ub9ac\ud574 \uc5c5\ub370\uc774\ud2b8 \ud55c\ub2e4. Kotlin\ub9cc\uc758 \ud2b9\uc9d5\uc911 \ud558\ub098\ub85c scope functions \ub77c\uace0 \ubd88\ub9ac\ub294\uac8c \uc788\ub2e4. &#8216;let&#8217;, &#8216;run&#8217;, &#8216;with&#8217;, &#8216;apply&#8217;, &#8216;also&#8217; \uc758 5\uac00\uc9c0\uac00 \uadf8\uac83\uc774\ub2e4. \uac1d\uccb4 \uc0dd\uc131\uc2dc, \uc0ac\uc6a9\ud558\ub294 \ud568\uc218\ub4e4\uc778\ub370, \uc790\uccb4\uc801\uc778 scope\ub97c \uac16\ub294 \ucf54\ub4dc\ube14\ub7ed\uc744 \uc0ac\uc6a9\ud574\uc11c scope function\uc774\ub77c \ubd88\ub9b0\ub2e4. Kotlin \uacf5\uc2dd\ubb38\uc11c \ucc38\uc870. \uacf5\uc2dd\ubb38\uc11c\uc758 <a href=\"http:\/\/batmask.net\/index.php\/2021\/12\/10\/286\/\" class=\"btn btn-link continue-link\">\ub354 \uc77d\uae30<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,34],"tags":[180,38,179,181,178,71,263,20,41],"class_list":["post-286","post","type-post","status-publish","format-standard","hentry","category-android","category-kotlin","tag-also","tag-kotlin","tag-let","tag-run","tag-scope-function","tag-with","tag-263","tag-android","tag-kotlin-kr"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/286","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=286"}],"version-history":[{"count":28,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/286\/revisions"}],"predecessor-version":[{"id":3476,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/286\/revisions\/3476"}],"wp:attachment":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/media?parent=286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/categories?post=286"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/tags?post=286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}