{"id":138481,"date":"2021-04-26T06:40:54","date_gmt":"2021-04-26T05:40:54","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=138481"},"modified":"2023-09-15T03:28:52","modified_gmt":"2023-09-15T02:28:52","slug":"kotlin-1-5-0-rc-released","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/ko\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/","title":{"rendered":"Kotlin 1.5.0-RC \ucd9c\uc2dc: \ud45c\uc900 \ubc0f \ud14c\uc2a4\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ubcc0\uacbd \uc0ac\ud56d"},"content":{"rendered":"<p>Kotlin 1.5.0-RC\ub294 1.5.0\uc5d0 \uacc4\ud68d\ub41c \ubaa8\ub4e0 \uae30\ub2a5\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud5a5\ud6c4 \ub9b4\ub9ac\uc2a4\uc758 \uc804\uccb4 \ub0b4\uc6a9\uc744 \ud655\uc778\ud558\uc138\uc694! \uc0c8\ub85c\uc6b4 \uc5b8\uc5b4 \uae30\ub2a5, stdlib \uc5c5\ub370\uc774\ud2b8, \ud5a5\uc0c1\ub41c \ud14c\uc2a4\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ub4f1 \ub2e4\uc591\ud55c \ubcc0\uacbd \uc0ac\ud56d\uc774 \ub9c8\ubb34\ub9ac \ub2e8\uacc4\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc218\uc815 \uc0ac\ud56d\ub9cc \ub354\ud574\uc9c0\uba74 \ucd9c\uc2dc \uc900\ube44\uac00 \ub05d\ub0a9\ub2c8\ub2e4.<\/p>\n<p>1.5.0-RC\ub97c \ud65c\uc6a9\ud574 \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \ucd5c\uc2e0 Kotlin API\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uace0 \ub9b4\ub9ac\uc2a4 \ubc84\uc804\uc744 \uac1c\uc120\ud560 \uc218 \uc788\ub3c4\ub85d \ud53c\ub4dc\ubc31\uc744 \ubcf4\ub0b4\uc8fc\uc138\uc694! \ubc1c\uacac\ud55c \ubaa8\ub4e0 \ubb38\uc81c\ub294 \uc774\uc288 \ud2b8\ub798\ucee4 <a href=\"https:\/\/kotl.in\/issue\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>\uc5d0 \ubcf4\uace0\ud574 \uc8fc\uc138\uc694.<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"\uc124\uce58\" href=\"https:\/\/kotlinlang.org\/docs\/install-eap-plugin.html\" target=\"_blank\" rel=\"noopener\">1.5.0-RC \uc124\uce58<\/a><\/p>\n<p>\uc774 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 1.5.0-RC\uc758 Kotlin \ud45c\uc900 \ubc0f \ud14c\uc2a4\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc548\ub0b4\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/#stable-unsigned-integer-types\">\uc548\uc815\uc801\uc778 \ubd80\ud638 \uc5c6\ub294 \uc815\uc218 \uc720\ud615<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/#extensions-for-java-nio-path\">java.nio.file.Path\uc6a9 \ud655\uc7a5 \uae30\ub2a5<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/#locale-agnostic-upper-lowercase\">String API \ubc0f Char API \uac1c\uc120<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/#duration-api-changes\">Duration API \ubcc0\uacbd \uc0ac\ud56d<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/#math-operations-floordiv-mod\">\ubaa8\ub4c8\uc2dd \uc0b0\uc220\uc744 \uc704\ud55c \uc0c8\ub85c\uc6b4 \uc218\ud559 \uc5f0\uc0b0<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/#collections-firstnotnullof\">\uc0c8\ub85c\uc6b4 \uceec\ub809\uc158 \ud568\uc218<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/#test-library-changes\">\ud14c\uc2a4\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ubcc0\uacbd<\/a><\/li>\n<\/ul>\n<p>\uc774\uc5b4\uc11c \uac01\uac01\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc744 \uc54c\uc544\ubcf4\uc138\uc694!<\/p>\n<p><a name = \"stable-unsigned-integer-types\"><\/a><\/p>\n<h2>\uc548\uc815\uc801\uc778 \ubd80\ud638 \uc5c6\ub294 \uc815\uc218 \uc720\ud615<\/h2>\n<p>\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0\ub294 \uc74c\uc218\uac00 \uc544\ub2cc \uc815\uc218 \uc5f0\uc0b0\uc744 \ucc98\ub9ac\ud558\ub294 \ub370 \uc720\uc6a9\ud55c \ubd80\ud638 \uc5c6\ub294 \uc815\uc218 API\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubc84\uc804\uc5d0\ub294 \ub2e4\uc74c\uc758 \uae30\ub2a5\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li>\ubd80\ud638 \uc5c6\ub294 \uc22b\uc790 \uc720\ud615: <code>UInt<\/code>, <code>ULong<\/code>, <code>UByte<\/code>, <code>UShort<\/code> \ubc0f \uad00\ub828 \ud568\uc218(\uc608: \ubcc0\ud658).<\/li>\n<li>\uc9d1\uacc4 \uc720\ud615: \ubd80\ud638 \uc5c6\ub294 \uc815\uc218\uc758 \ubc30\uc5f4, \ubc94\uc704 \ubc0f \uc9c4\ud589: <code>UIntArray<\/code>, <code>UIntRange<\/code> \ubc0f \uae30\ud0c0 \uc720\ud615\uc5d0 \ub300\ud55c \uc720\uc0ac \ucee8\ud14c\uc774\ub108.<\/li>\n<\/ul>\n<p>\ubd80\ud638 \uc5c6\ub294 \uc815\uc218 \uc720\ud615\uc740 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew13.html#unsigned-integers\" target=\"_blank\" rel=\"noopener\">Kotlin 1.3<\/a> \uc774\ud6c4 \ubca0\ud0c0\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ubd80\ud638 \uc5c6\ub294 \uc815\uc218 \uc720\ud615\uacfc \uc5f0\uc0b0\uc744 \uc548\uc815\uc801\uc778 \uac83\uc73c\ub85c \ubd84\ub958\ud558\uc5ec \ubcc4\ub3c4\uc758 \uc120\ud0dd \uacfc\uc815 \uc5c6\uc774 \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc548\uc804\ud558\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc0c8\ub85c \ub3c4\uc785\ub41c \uc548\uc815\uc801 API\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ubd80\ud638 \uc5c6\ub294 \uc815\uc218 \uc720\ud615<\/li>\n<li>\ubd80\ud638 \uc5c6\ub294 \uc815\uc218 \uc720\ud615\uc758 \ubc94\uc704\uc640 \uc9c4\ud589<\/li>\n<li>\ubd80\ud638 \uc5c6\ub294 \uc815\uc218 \uc720\ud615\uc73c\ub85c \uc791\ub3d9\ud558\ub294 \ud568\uc218<\/li>\n<\/ul>\n<pre class=\"kotlin-code\" data-min-compiler-version=\"1.5.0\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun main() {\n\/\/sampleStart\nval zero = 0U \/\/ Define unsigned numbers with literal suffixes\nval ten = 10.toUInt() \/\/ or by converting non-negative signed numbers\n\/\/val minusOne: UInt = -1U \/\/ Error: unary minus is not defined\nval range: UIntRange = zero..ten \/\/ Separate types for ranges and progressions\n\nfor (i in range) print(i)\nprintln()\nprintln(&quot;UInt covers the range from ${UInt.MIN_VALUE} to ${UInt.MAX_VALUE}&quot;) \/\/ UInt covers the range from 0 to 4294967295\n\/\/sampleEnd\n}\n<\/pre>\n<p>\ubd80\ud638 \uc5c6\ub294 \uc815\uc218\uc758 \ubc30\uc5f4\uc740 \ubca0\ud0c0 \ubc84\uc804\uc5d0\uc11c \uc720\uc9c0\ub429\ub2c8\ub2e4. \ubc30\uc5f4\uc774 \uae30\ubcf8\uc801\uc73c\ub85c \uc9c0\uc6d0\ub418\ub294 \ubd80\ud638 \uc5c6\ub294 \uc815\uc218 <a href=\"https:\/\/kotlinlang.org\/docs\/functions.html#variable-number-of-arguments-varargs\" target=\"_blank\" rel=\"noopener\">varargs<\/a>\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\uc785\ub2c8\ub2e4. \ucf54\ub4dc\uc5d0\uc11c \uc774 \ubd80\ubd84\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 <code>@ExperimentalUnsignedTypes<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ub123\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/kotlinlang.org\/docs\/basic-types.html#unsigned-integers\" target=\"_blank\" rel=\"noopener\">Kotlin\uc5d0\uc11c \ubd80\ud638 \uc5c6\ub294 \uc815\uc218<\/a>\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694.<\/p>\n<p><a name = \"extensions-for-java-nio-path\"><\/a><\/p>\n<h2>java.nio.file.Path API\uc6a9 \ud655\uc7a5 \uae30\ub2a5<\/h2>\n<p>Kotlin\uc740 \uc774\uc81c <a href=\"https:\/\/docs.oracle.com\/javase\/7\/docs\/api\/java\/nio\/file\/Path.html\" target=\"_blank\" rel=\"noopener\"><code>java.nio.file.Path<\/code><\/a>\uc758 \ud655\uc7a5 \ud568\uc218\ub97c \ud1b5\ud574 Kotlin \uad00\uc6a9 \uc2a4\ud0c0\uc77c\uc5d0\uc11c \ucd5c\uc2e0\uc758 <a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/nio\/package-summary.html\" target=\"_blank\" rel=\"noopener\">\ube14\ub85d\ub418\uc9c0 \uc54a\uc740 Java IO<\/a>\ub97c \uc989\uc2dc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uac04\ub2e8\ud55c \uc608\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlin.io.path.*\nimport java.nio.file.Path\n\nfun main() {\n\/\/ construct path with the div (\/) operator\nval baseDir = Path(&quot;\/base&quot;)\nval subDir = baseDir \/ &quot;subdirectory&quot;\n\n\/\/ list files in a directory\nval kotlinFiles = Path(&quot;\/home\/user&quot;).listDirectoryEntries(&quot;*.kt&quot;)\n\/\/ count lines in all kotlin files\nval totalLines = kotlinFiles.sumOf { file -&gt; file.useLines { lines -&gt; lines.count() } }\n}\n<\/pre>\n<p>\uc774\ub7ec\ud55c \ud655\uc7a5 \uae30\ub2a5\uc740 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1420.html#extensions-for-java-nio-file-path\" target=\"_blank\" rel=\"noopener\">Kotlin 1.4.20\uc5d0\uc11c<\/a> \uc2e4\ud5d8\uc801 \uae30\ub2a5\uc73c\ub85c \ub3c4\uc785\ub418\uc5c8\uc73c\uba70, \uc774\uc81c \ubcc4\ub3c4\uc758 \uc120\ud0dd \uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud568\uc218 \ubaa9\ub85d\uc740 <a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.io.path\/\" target=\"_blank\" rel=\"noopener\"><code>kotlin.io.path<\/code><\/a> \ud328\ud0a4\uc9c0\ub97c \ud655\uc778\ud558\uc138\uc694.<\/p>\n<p>File API\uc758 \uae30\uc874 \ud655\uc7a5 \uae30\ub2a5\uc740 \uacc4\uc18d \uc0ac\uc6a9\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uc990\uaca8 \uc774\uc6a9\ud558\ub294 API\ub97c \uc790\uc720\ub86d\uac8c \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a name = \"locale-agnostic-upper-lowercase\"><\/a><\/p>\n<h2>\ub300\uc18c\ubb38\uc790 \uad6c\ubd84 \uc5c6\uc774 \ub85c\ucf00\uc77c\uc5d0 \uad6c\uc560\ubc1b\uc9c0 \uc54a\ub294 API<\/h2>\n<p>\ubb38\uc790\uc5f4\uacfc \ubb38\uc790\uc758 \ub300\uc18c\ubb38\uc790\ub97c \ubcc0\uacbd\ud558\uae30 \uc704\ud55c \ub2e4\uc74c stdlib \ud568\uc218\ub294 \ub9ce\uc740 \ubd84\ub4e4\uaed8 \uc775\uc219\ud560 \uac83\uc785\ub2c8\ub2e4: <code>toUpperCase()<\/code>, <code>toLowerCase()<\/code>, <code>toTitleCase()<\/code> \uc774\ub7ec\ud55c \ud568\uc218\ub294 \uc77c\ubc18\uc801\uc73c\ub85c \uc798 \uc791\ub3d9\ud558\uc9c0\ub9cc \ucc98\ub9ac\ud558\ub294 \ud50c\ub7ab\ud3fc \ub85c\ucf00\uc77c\uc5d0 \ub530\ub77c \uace8\uce58\uc544\ud508 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubaa8\ub450 \ub85c\ucf00\uc77c\uc5d0 \ubbfc\uac10\ud558\uc5ec \ub85c\ucf00\uc77c\uc5d0 \ub530\ub77c \uacb0\uacfc\uac00 \ub2e4\ub97c \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, <code>\u201dKotlin\u201d.toUpperCase()<\/code>\ub85c \uc5b4\ub5a4 \uacb0\uacfc\uac00 \ubc18\ud658\ub420\uae4c\uc694? \uc5ec\ub7ec\ubd84\uc740 \u201c\ubb3c\ub860 <code>KOTLIN<\/code>\uc774\uc8e0\u201d\ub77c\uace0 \ub9d0\ud560 \uac83\uc785\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ud130\ud0a4\uc5b4 \ub85c\ucf00\uc77c\uc5d0\uc11c \ub300\ubb38\uc790 <code>i<\/code>\ub294 <code>\u0130<\/code>\uc774\ubbc0\ub85c KOTL\u0130N\uc774\ub77c\ub294 \ub2e4\ub978 \uacb0\uacfc\uac00 \uc5bb\uc5b4\uc9d1\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \ubb38\uc790\uc5f4\uacfc \ubb38\uc790\uc758 \ub300\uc18c\ubb38\uc790\ub97c \ubcc0\uacbd\ud558\uc5ec \ub85c\ucf00\uc77c\uc758 \uad6c\uc560\ub97c \ubc1b\uc9c0 \uc54a\ub294 \uc0c8\ub85c\uc6b4 API\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4: <code>uppercase()<\/code>, <code>lowercase()<\/code>, <code>titlecase()<\/code> \ud655\uc7a5 \uae30\ub2a5\uacfc \uc774\uc5d0 \ub300\uc751\ud558\ub294 <code>*Char()<\/code> \uc774\ubbf8 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1430.html#locale-agnostic-api-for-upper-lowercasing-text\" target=\"_blank\" rel=\"noopener\">1.4.30\uc758 \ud14c\uc2a4\ud2b8 \ubc84\uc804<\/a>\uc5d0\uc11c \uc774 API\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc0c8\ub85c\uc6b4 \ud568\uc218\ub294 \ud50c\ub7ab\ud3fc \ub85c\ucf00\uc77c \uc124\uc815\uc5d0 \uad00\uacc4\uc5c6\uc774 \ub3d9\uc77c\ud55c \ubc29\uc2dd\uc73c\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4. \uc774\ub4e4 \ud568\uc218\ub97c \ud638\ucd9c\ud558\uae30\ub9cc \ud558\uba74 \ub098\uba38\uc9c0\ub294 stdlib\uc774 \uc54c\uc544\uc11c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc0c8\ub85c\uc6b4 \ud568\uc218\ub294 \ud50c\ub7ab\ud3fc \ub85c\ucf00\uc77c \uc124\uc815\uc5d0 \uad00\uacc4\uc5c6\uc774 \ub3d9\uc77c\ud55c \ubc29\uc2dd\uc73c\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4. \uc774\ub4e4 \ud568\uc218\ub97c \ud638\ucd9c\ud558\uae30\ub9cc \ud558\uba74 \ub098\uba38\uc9c0\ub294 stdlib\uc774 \uc54c\uc544\uc11c \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-min-compiler-version=\"1.5.0\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun main() {\n\/\/sampleStart\n\/\/ replace the old API\nprintln(&quot;Kotlin&quot;.toUpperCase()) \/\/ KOTLIN or KOTL\u0130N or?..\n\n\/\/ with the new API\nprintln(&quot;Kotlin&quot;.uppercase()) \/\/ Always KOTLIN\n\/\/sampleEnd\n}\n<\/pre>\n<p>JVM\uc5d0\uc11c \ud604\uc7ac \ub85c\ucf00\uc77c\uc744 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc5ec \uc0c8\ub85c\uc6b4 \ud568\uc218\ub97c \ud638\ucd9c\ud558\uba74 \ub85c\ucf00\uc77c\uc744 \uad6c\ubd84\ud558\ub294 \ub300\uc18c\ubb38\uc790 \ubcc0\uacbd\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\n&quot;Kotlin&quot;.uppercase(Locale.getDefault()) \/\/ Locale-sensitive uppercasing\n<\/pre>\n<p>\uc774\uc804 \ud568\uc218\uac00 \uc0c8\ub85c\uc6b4 \ud568\uc218\ub85c \uc644\uc804\ud788 \ub300\uccb4\ub418\uc5b4 \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uba85\ud655\ud55c \ubb38\uc790-\ucf54\ub4dc \ubc0f \ubb38\uc790-\uc22b\uc790 \ubcc0\ud658<\/h2>\n<p>\ubb38\uc790\uc758 UTF-16 \ucf54\ub4dc\ub97c \uac00\uc838\uc624\ub294 \uc5f0\uc0b0\uc778 <code>toInt()<\/code> \ud568\uc218\ub294 \ud55c \uc790\ub9ac \ubb38\uc790\uc5f4\uc5d0\uc11c <code>String.toInt()<\/code>\uc640 \ub9e4\uc6b0 \uc720\uc0ac\ud558\uc5ec \uc790\uc8fc \uc2e4\uc218\ub97c \uc720\ubc1c\ud558\uace0\ub294 \ud588\uc2b5\ub2c8\ub2e4. \uc774 \uacbd\uc6b0 \uc774 \uc22b\uc790\uac00 \ub098\ud0c0\ub0b4\ub294 <code>Int<\/code>\uac00 \uc0dd\uc131\ub418\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\n&quot;4&quot;.toInt() \/\/ returns 4\n&#039;4&#039;.toInt() \/\/ returns 52\n<\/pre>\n<p>\ub610\ud55c <code>Char<\/code> <code>'4'<\/code>\uc5d0 \ub300\ud574 \uc22b\uc790 \uac12 <code>4<\/code>\ub97c \ubc18\ud658\ud558\ub294 \uacf5\ud1b5 \ud568\uc218\ub3c4 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uc774\uc81c \ubb38\uc790\uc640 \ud574\ub2f9 \uc815\uc218 \ucf54\ub4dc \ubc0f \uc22b\uc790 \uac12 \uc0ac\uc774\uc5d0\uc11c \ubcc0\ud658\uc744 \uc218\ud589\ud558\ub294 \uc0c8\ub85c\uc6b4 \ud568\uc218 \uc138\ud2b8\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>Char(code)<\/code> \ubc0f <code>Char.code<\/code>\ub294 \ubb38\uc790\uc640 \ud574\ub2f9 \ucf54\ub4dc \uc0ac\uc774\uc5d0\uc11c \ubcc0\ud658\ud569\ub2c8\ub2e4.<\/li>\n<li><code>Char.digitToInt(radix: Int)<\/code>\uc640 \ud574\ub2f9 <code>*OrNull<\/code> \ubc84\uc804\uc740 \uc9c0\uc815\ub41c \uae30\uc218\uc758 \uc22b\uc790\uc5d0\uc11c \uc815\uc218\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/li>\n<li><code>Int.digitToChar(radix: Int)<\/code>\ub294 \uc9c0\uc815\ub41c \uae30\uc218\uc758 \uc815\uc218\ub97c \ub098\ud0c0\ub0b4\ub294 \uc22b\uc790\uc5d0\uc11c \ubb38\uc790\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc774\ub7ec\ud55c \ud568\uc218\ub294 \uba85\ud655\ud55c \uc774\ub984\uc744 \uac00\uc9c0\uba70 \ucf54\ub4dc\ub97c \ub354 \uc77d\uae30 \uc27d\uac8c \ub9cc\ub4ed\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-min-compiler-version=\"1.5.0\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun main() {\n\/\/sampleStart\nval capsK = Char(75) \/\/ \u2018K\u2019\nval one = &#039;1&#039;.digitToInt(10) \/\/ 1\nval digitC = 12.digitToChar(16) \/\/ hexadecimal digit \u2018C\u2019\n\nprintln(&quot;${capsK}otlin ${one}.5.0-R${digitC}&quot;) \/\/ \u201cKotlin 1.5.0-RC\u201d\nprintln(capsK.code) \/\/ 75\n\/\/sampleEnd\n}\n<\/pre>\n<p>\uc0c8\ub85c\uc6b4 \ud568\uc218\ub294 <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1430.html#clear-char-to-code-and-char-to-digit-conversions\" target=\"_blank\" rel=\"noopener\">Kotlin 1.4.30\ubd80\ud130 \ud14c\uc2a4\ud2b8 \ubc84\uc804 \ubaa8\ub4dc\ub85c \uc0ac\uc6a9 \uac00\ub2a5\ud588\uc73c\uba70<\/a> \uc774\uc81c \uc548\uc815\uc801\uc73c\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4. \ubb38\uc790\uc5d0\uc11c \uc22b\uc790\ub85c \ubcc0\ud658(<code>Char.toInt()<\/code> \ubc0f \ub2e4\ub978 \uc22b\uc790 \uc720\ud615\uc5d0 \ub300\ud55c \uc720\uc0ac\ud55c \ud568\uc218) \ubc0f \uc22b\uc790\uc5d0\uc11c \ubb38\uc790\ub85c \ubcc0\ud658(<code>Int.toChar()<\/code>\ub97c \uc81c\uc678\ud55c <code>Long.toChar()<\/code> \ubc0f \uc720\uc0ac \ud568\uc218)\ud558\uae30 \uc704\ud55c \uc774\uc804\uc758 \ud568\uc218\ub294 \uc774\uc81c \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ud655\uc7a5\ub41c \uba40\ud2f0\ud50c\ub7ab\ud3fc Char API<\/h2>\n<p>\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uba40\ud2f0 \ud50c\ub7ab\ud3fc \ubd80\ubd84\uc744 \uacc4\uc18d \ud655\uc7a5\ud558\uc5ec \uba40\ud2f0 \ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8\uc758 \uacf5\ud1b5 \ucf54\ub4dc\uc5d0 \uc774\ub7ec\ud55c \uae30\ub2a5\uc774 \uc774\uc6a9\ub420 \uc218 \uc788\ub3c4\ub85d \ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \ubaa8\ub4e0 \ud50c\ub7ab\ud3fc\uacfc \uacf5\ud1b5 \ucf54\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc5ec\ub7ec <code>Char<\/code> \ud568\uc218\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ubb38\uc790\uac00 \uae00\uc790 \ud639\uc740 \uc22b\uc790\uc778\uc9c0 \uc5ec\ubd80\ub97c \ud655\uc778\ud558\ub294 <code>Char.isDigit()<\/code>, <code>Char.isLetter()<\/code>, <code>Char.isLetterOrDigit()<\/code><\/li>\n<li>\ubb38\uc790\uc758 \ub300\uc18c\ubb38\uc790\ub97c \ud655\uc778\ud558\ub294 <code>Char.isLowerCase()<\/code>, <code>Char.isUpperCase()<\/code>, <code>Char.isTitleCase()<\/code><\/li>\n<li>\ubb38\uc790\uc5d0 <code>Cn<\/code>(<em>undefined<\/em>)\uc774 \uc544\ub2cc <a href=\"https:\/\/unicode.org\/reports\/tr44\/#General_Category_Values\" target=\"_blank\" rel=\"noopener\">Unicode \uc77c\ubc18 \uce74\ud14c\uace0\ub9ac<\/a>\uac00 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ud655\uc778\ud558\ub294 <code>Char.isDefined()<\/code><\/li>\n<li>\ubb38\uc790\uac00 <code>\\u0000<\/code>..<code>\\u001F<\/code> \ub610\ub294 <code>\\u007F<\/code>..<code>\\u009F<\/code> \ubc94\uc704\uc758 \ucf54\ub4dc\ub97c \uac00\uc9c4 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Control_character\" target=\"_blank\" rel=\"noopener\">ISO \uc81c\uc5b4 \ubb38\uc790<\/a>\uc778\uc9c0 \uc5ec\ubd80\ub97c \ud655\uc778\ud558\ub294 <code>Char.isISOControl()<\/code><\/li>\n<\/ul>\n<p>Unicode\uc5d0 \ub530\ub77c \ubb38\uc790\uc758 \uc77c\ubc18 \ubc94\uc8fc\ub97c \ub098\ud0c0\ub0b4\ub294 <code>Char.category<\/code> \ud504\ub85c\ud37c\ud2f0 \ubc0f \uadf8 \ubc18\ud658 \uc720\ud615 \uc5f4\uac70\ud615 \ud074\ub798\uc2a4\uc778 <code>CharCategory<\/code>\ub97c \uc774\uc81c \uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-min-compiler-version=\"1.5.0\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun main() {\n\/\/sampleStart\nval array = &quot;Kotlin 1.5.0-RC&quot;.toCharArray()\nval (letterOrDigit, punctuation) = array.partition { it.isLetterOrDigit() }\nval (upperCase, notUpperCase ) = array.partition { it.isUpperCase() }\n\nprintln(&quot;$letterOrDigit, $punctuation&quot;) \/\/ [K, o, t, l, i, n, 1, 5, 0, R, C], [ , ., ., -]\nprintln(&quot;$upperCase, $notUpperCase&quot;) \/\/ [K, R, C], [o, t, l, i, n, , 1, ., 5, ., 0, -]\n\nif (array[0].isDefined()) println(array[0].category)\n\/\/sampleEnd\n}\n<\/pre>\n<h2>String?.toBoolean()\uc758 \uc5c4\uaca9\ud55c \ubc84\uc804<\/h2>\n<p>Kotlin\uc758 <code>String?.toBoolean()<\/code> \ud568\uc218\ub294 \ubb38\uc790\uc5f4\ub85c\ubd80\ud130 \ubd80\uc6b8 \uac12\uc744 \ub9cc\ub4dc\ub294 \ub370 \ub110\ub9ac \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc791\ub3d9\uc740 \ub9e4\uc6b0 \uac04\ub2e8\ud569\ub2c8\ub2e4. \ub300\uc18c\ubb38\uc790\uc5d0 \uad00\uacc4 \uc5c6\uc774 \ubb38\uc790\uc5f4 &quot;true&quot;\uc5d0\uc11c <code>true<\/code>\uc774\uace0, <code>null<\/code>\uc744 \ud3ec\ud568\ud55c \ub2e4\ub978 \ubaa8\ub4e0 \ubb38\uc790\uc5f4\uc5d0\uc11c\ub294 <code>false<\/code>\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ub3d9\uc791\uc740 \uc790\uc5f0\uc2a4\ub7ec\uc6b4 \uac83\ucc98\ub7fc \ubcf4\uc774\uc9c0\ub9cc \uc7a0\uc7ac\uc801\uc73c\ub85c \uc798\ubabb\ub41c \uc0c1\ud669\uc774 \uac04\uacfc\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud568\uc218\ub85c \ubb34\uc5c7\uc744 \ubcc0\ud658\ud558\ub4e0 \ubb38\uc790\uc5f4\uc5d0 \uc608\uc0c1\uce58 \ubabb\ud55c \uac12\uc774 \uc788\uc5b4\ub3c4 \ubd80\uc6b8\uc774 \ubc18\ud658\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub7ec\ud55c \uc2e4\uc218\ub97c \ubc29\uc9c0\ud558\uae30 \uc704\ud574 \ub300\uc18c\ubb38\uc790\ub97c \uad6c\ubd84\ud558\ub294 <a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.text\/to-boolean.html\" target=\"_blank\" rel=\"noopener\">String?.toBoolean()<\/a>\uc758 \uc0c8\ub85c\uc6b4 \uc5c4\uaca9 \ud55c \ubc84\uc804\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>String.toBooleanStrict()<\/code>\ub294 \ub9ac\ud130\ub7f4 &#8220;true&#8221; \ubc0f &#8220;false&#8221;\ub97c \uc81c\uc678\ud55c \ubaa8\ub4e0 \uc785\ub825\uc5d0 \ub300\ud574 \uc608\uc678\ub97c \ub358\uc9d1\ub2c8\ub2e4.<\/li>\n<li><code>String.toBooleanStrictOrNull()<\/code>\uc740 \ub9ac\ud130\ub7f4 &#8220;true&#8221; \ubc0f &#8220;false&#8221;\ub97c \uc81c\uc678\ud55c \ubaa8\ub4e0 \uc785\ub825\uc5d0 \ub300\ud574 null\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre class=\"kotlin-code\" data-min-compiler-version=\"1.5.0\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun main() {\n\/\/sampleStart\nprintln(&quot;true&quot;.toBooleanStrict()) \/\/ True\n\/\/ println(&quot;1&quot;.toBooleanStrict()) \/\/ Exception\nprintln(&quot;1&quot;.toBooleanStrictOrNull()) \/\/ null\nprintln(&quot;True&quot;.toBooleanStrictOrNull()) \/\/ null: the function is case-sensitive\n\/\/sampleEnd\n}\n<\/pre>\n<p><a name = \"duration-api-changes\"><\/a><\/p>\n<h2>Duration API \ubcc0\uacbd \uc0ac\ud56d<\/h2>\n<p>stdlib \ubc84\uc804 1.3.50\ubd80\ud130 \uc2e4\ud5d8\uc801\uc73c\ub85c \ub3c4\uc785\ud55c <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2019\/08\/kotlin-1-3-50-released\/#time-measurement-api\">Duration and Time Measurement API<\/a>\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uc2dc\uac04 \uac04\uaca9\uc744 \uc815\ud655\ud558\uac8c \uce21\uc815\ud558\uae30 \uc704\ud55c API\uac00 \uc81c\uacf5\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc774 API\uc758 \uc8fc\uc694 \ud074\ub798\uc2a4 \uc911 \ud558\ub098\ub294 <a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin.time\/-duration\/\" target=\"_blank\" rel=\"noopener\"><code>Duration<\/code><\/a>\uc785\ub2c8\ub2e4. \uc774 \ud074\ub798\uc2a4\ub294 \ub450 \uc2dc\uc810 \uc0ac\uc774\uc758 \uc2dc\uac04\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4. 1.5.0\uc5d0\uc11c <code>Duration<\/code>\uc740 API\uc640 \ub0b4\ubd80 \ud45c\ud604 \ubaa8\ub450\uc5d0\uc11c \uc0c1\ub2f9\ud55c \ubcc0\uacbd\uc774 \uc774\ub8e8\uc5b4\uc84c\uc2b5\ub2c8\ub2e4.<\/p>\n<p><code>Duration<\/code>\uc740 \uc774\uc81c <code>Double<\/code> \ub300\uc2e0 \ub0b4\ubd80 \ud45c\ud604\uc5d0 <code>Long<\/code> \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. <code>Long<\/code> \uac12\uc758 \ubc94\uc704\ub97c \uc0ac\uc6a9\ud558\uba74 \ub098\ub178\ucd08 \uc815\ubc00\ub3c4\ub85c 100\ub144 \uc774\uc0c1\uc744, \ubc00\ub9ac\ucd08 \uc815\ubc00\ub3c4\ub85c 1\uc5b5\ub144 \uc774\uc0c1\uc744 \ub098\ud0c0\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc774\uc804\uc5d0 \uc9c0\uc6d0\ub418\uc5c8\ub358 \ub098\ub178\ucd08 \ubbf8\ub9cc\uc758 \uae30\uac04\uc740 \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c \uae30\uac04\uc744 <code>Long<\/code> \uac12\uc73c\ub85c \uac80\uc0c9\ud558\uae30 \uc704\ud55c \uc0c8\ub85c\uc6b4 \ud504\ub85c\ud37c\ud2f0\ub3c4 \ub3c4\uc785\ub420 \uc608\uc815\uc785\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud504\ub85c\ud37c\ud2f0\ub294 <code>Duration.inWholeMinutes<\/code>, <code>Duration.inWholeSeconds<\/code> \ub4f1 \ub2e4\uc591\ud55c \uc2dc\uac04 \ub2e8\uc704\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud568\uc218\ub294 <code>Duration.inMinutes<\/code>\uc640 \uac19\uc740 <code>Double<\/code> \uae30\ubc18 \ud504\ub85c\ud37c\ud2f0\ub97c \ub300\uccb4\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub610 \ub2e4\ub978 \ubcc0\uacbd \uc0ac\ud56d\uc740 \uc815\uc218 \uac12\uc5d0\uc11c <code>Duration<\/code> \uc778\uc2a4\ud134\uc2a4\ub97c \ub9cc\ub4dc\ub294 \uc0c8\ub85c\uc6b4 \ud329\ud1a0\ub9ac \ud568\uc218 \uc9d1\ud569\uc785\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud568\uc218\ub294 <code>Duration<\/code> \uc720\ud615\uc5d0\uc11c \uc9c1\uc811 \uc815\uc758\ub418\uba70 <code>Int.seconds<\/code>\uc640 \uac19\uc740 \uc22b\uc790 \uc720\ud615\uc758 \uc774\uc804 \ud655\uc7a5 \ud504\ub85c\ud37c\ud2f0\ub97c \ub300\uccb4\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-min-compiler-version=\"1.5.0\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlin.time.ExperimentalTime\nimport kotlin.time.Duration\n\n@ExperimentalTime\nfun main() {\nval duration = Duration.milliseconds(120000)\nprintln(&quot;There are ${duration.inWholeSeconds} seconds in ${duration.inWholeMinutes} minutes&quot;)\n}\n<\/pre>\n<p>\ubcc0\uacbd\ub418\ub294 \ubd80\ubd84\uc774 \ub9ce\uc740 \uc810\uc744 \uac10\uc548\ud558\uc5ec \uc804\uccb4 \uae30\uac04 \ubc0f \uc2dc\uac04 \uce21\uc815 API\ub294 1.5.0\uc5d0\uc11c \uc2e4\ud5d8\uc801\uc73c\ub85c \uc720\uc9c0\ub418\uba70 <code>@ExperimentalTime<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc73c\ub85c \uc120\ud0dd\uc744 \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc0c8 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud574\ubcf4\uace0 \uc774\uc288 \ud2b8\ub798\ucee4 <a href=\"https:\/\/kotl.in\/issue\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>\uc5d0\uc11c \uc758\uacac\uc744 \uacf5\uc720\ud574\uc8fc\uc138\uc694.<\/p>\n<p><a name = \"math-operations-floordiv-mod\"><\/a><\/p>\n<h2>\uc218\ud559 \uc5f0\uc0b0: \ub0b4\ub9bc \ub098\ub204\uae30 \ubc0f mod \uc5f0\uc0b0\uc790<\/h2>\n<p>Kotlin\uc5d0\uc11c \uc815\uc218\uc5d0 \ub300\ud55c <a href=\"https:\/\/kotlinlang.org\/docs\/basic-types.html#operations\" target=\"_blank\" rel=\"noopener\">\ub098\ub204\uae30 \uc5f0\uc0b0\uc790(<code>\/<\/code>)<\/a>\ub294 \ub098\ub217\uc148 \uacb0\uacfc\uc758 \uc18c\uc218 \ubd80\ubd84\uc744 \uc81c\uac70\ud558\ub294 <em>\ubc84\ub9bc \ub098\ub217\uc148<\/em>\uc744 \uc218\ud589\ud569\ub2c8\ub2e4. \ubaa8\ub4c8\uc2dd \uc0b0\uc220\uc5d0\ub294 \uacb0\uacfc\ub97c \ubc18\ub0b4\ub9bc\ud558\uc5ec(\ub354 \uc791\uc740 \uc815\uc218\ub85c) \uc74c\uc218\uc5d0 \ub300\ud574 \ub2e4\ub978 \uacb0\uacfc\ub97c \uc0dd\uc131\ud558\ub294 \ub300\uc548\uc778 <em>\ub0b4\ub9bc \ub098\ub217\uc148<\/em>\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc804\uc5d0\ub294 \ub0b4\ub9bc \ub098\ub217\uc148\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ud568\uc218\uac00 \ud544\uc694\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun floorDivision(i: Int, j: Int): Int {\nvar result = i \/ j\nif (i != 0 &amp;&amp; result &lt;= 0) result--\nreturn result\n}\n<\/pre>\n<p>1.5.0-RC\uc5d0\uc11c\ub294 \uc815\uc218\uc5d0 \ub300\ud574 \ub0b4\ub9bc \ub098\ub204\uae30\ub97c \uc218\ud589\ud558\ub294 <code>floorDiv()<\/code> \ud568\uc218\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-min-compiler-version=\"1.5.0\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun main() {\n\/\/sampleStart\nprintln(&quot;Truncated division -5\/3: ${-5 \/ 3}&quot;)\nprintln(&quot;Floored division -5\/3: ${(-5).floorDiv(3)}&quot;)\n\/\/sampleEnd\n}\n<\/pre>\n<p>1.5.0\uc5d0\uc11c\ub294 \uc0c8\ub85c\uc6b4 <code>mod()<\/code> \ud568\uc218\ub97c \ub3c4\uc785\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uc774 \ud568\uc218\uac00 \uc774\ub984\uc5d0\uc11c \uc54c \uc218 \uc788\ub4ef\uc774 \ub0b4\ub9bc \ub098\ub204\uae30\uc758 \ub098\uba38\uc9c0 \ubd80\ubd84\uc778 <em>\ub098\uba38\uc9c0<\/em>\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\uac83\uc740 Kotlin\uc758 <code>rem()<\/code>(\ub610\ub294 <code>%<\/code> \uc5f0\uc0b0\uc790)\uc640\ub294 \ub2e4\ub985\ub2c8\ub2e4. \ub098\uba38\uc9c0\ub294 <code>a<\/code>\uc640 <code>a.floorDiv(b) * b<\/code> \uc0ac\uc774\uc758 \ucc28\uc774\uc785\ub2c8\ub2e4. 0\uc774 \uc544\ub2cc \uacc4\uc218\ub294 \ud56d\uc0c1 <code>b<\/code>\uc640 \uac19\uc740 \ubd80\ud638\ub97c \uac00\uc9c0\uba70 <code>a % b<\/code>\ub294 \ub2e4\ub978 \ubd80\ud638\ub97c \uac00\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubd80\ubd84\uc740 \uc608\ub97c \ub4e4\uc5b4 \uc21c\ud658 \ubaa9\ub85d\uc744 \uad6c\ud604\ud560 \ub54c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-min-compiler-version=\"1.5.0\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun main() {\n\/\/sampleStart\nfun getNextIndexCyclic(current: Int, size: Int ) = (current + 1).mod(size)\nfun getPreviousIndexCyclic(current: Int, size: Int ) = (current - 1).mod(size)\n\/\/ unlike %, mod() produces the expected non-negative value even if (current - 1) is less than 0\n\nval size = 5\nfor (i in 0..(size * 2)) print(getNextIndexCyclic(i, size))\nprintln()\nfor (i in 0..(size * 2)) print(getPreviousIndexCyclic(i, size))\n\/\/sampleEnd\n}\n<\/pre>\n<p><a name = \"collections-firstnotnullof\"><\/a><\/p>\n<h2>\uceec\ub809\uc158: firstNotNullOf() \ubc0f firstNotNullOfOrNull()<\/h2>\n<p>Kotlin \uceec\ub809\uc158 API\ub294 \uae30\ubcf8 \uc81c\uacf5\ub418\ub294 \ud568\uc218\ub97c \uc774\uc6a9\ud574 \uceec\ub809\uc158\uc5d0\uc11c \ub110\ub9ac \uc0ac\uc6a9\ub418\ub294 \ub2e4\uc591\ud55c \uc791\uc5c5\uc744 \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc774\uc9c0 \uc54a\uc740 \uacbd\uc6b0\uc5d0\ub294 \ubcf4\ud1b5 \uc774\ub7ec\ud55c \ud568\uc218 \ud638\ucd9c\uc744 \uacb0\ud569\ud569\ub2c8\ub2e4. \uc791\ub3d9\uc740 \ud558\uc9c0\ub9cc \ud56d\uc0c1 \uac00\ubccd\uac8c \ucc98\ub9ac\ub418\uc9c0\ub294 \uc54a\uc73c\uba70 \uc624\ubc84\ud5e4\ub4dc\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc608\ub97c \ub4e4\uc5b4, \uceec\ub809\uc158 \uc694\uc18c\uc5d0\uc11c \uc120\ud0dd\uc790 \ud568\uc218\uc758 \uccab \ubc88\uc9f8 null\uc774 \uc544\ub2cc \uacb0\uacfc\ub97c \uac00\uc838\uc624\ub824\uba74 <code>mapNotNull()<\/code> \ubc0f <code>first()<\/code>\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. 1.5.0\uc5d0\uc11c\ub294 \uc0c8 \ud568\uc218 <code>firstNotNullOf()<\/code>\uc758 \ub2e8\uc77c \ud638\ucd9c\ub85c \uc774\ub97c \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>firstNotNullOf()<\/code>\uc640 \ud568\uaed8, \ubc18\ud658\ud560 \uac12\uc774 \uc5c6\ub294 \uacbd\uc6b0 null\uc744 \uc0dd\uc131\ud558\ub294 <code>*orNull()<\/code> \ub300\uc751 \ud568\uc218\ub3c4 \ucd94\uac00\ub429\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c \uc608\ub294 \uc774\ub97c \ud1b5\ud574 \ucf54\ub4dc\ub97c \uc5b4\ub5bb\uac8c \ub2e8\ucd95\ud560 \uc218 \uc788\ub294\uc9c0\ub97c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n<p>nullable \ud504\ub85c\ud37c\ud2f0\ub97c \uac00\uc9c4 \ud074\ub798\uc2a4\uac00 \uc788\uace0 \ud074\ub798\uc2a4 \uc778\uc2a4\ud134\uc2a4 \ubaa9\ub85d\uc5d0\uc11c null\uc774 \uc544\ub2cc \uccab \ubc88\uc9f8 \uac12\uc774 \ud544\uc694\ud558\ub2e4\uace0 \uac00\uc815\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nclass Item(val name: String?)\n<\/pre>\n<p>\uceec\ub809\uc158\uc744 \ubc18\ubcf5\ud558\uace0 \ud504\ub85c\ud37c\ud2f0\uac00 null\uc774 \uc544\ub2cc\uc9c0 \ud655\uc778\ud558\uc5ec \uc774\ub97c \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\n\/\/ Option 1: manual implementation\nfor (element in collection) {\nval itemName = element.name\nif (itemName != null) return itemName\n}\nreturn null\n<\/pre>\n<p>\ub610 \ub2e4\ub978 \ubc29\ubc95\uc740 \uae30\uc874\uc758 <code>mapNotNull()<\/code> \ubc0f <code>firstOrNull()<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. <code>mapNotNull()<\/code>\uc740 \ud2b9\ud788 \ud070 \uceec\ub809\uc158\uc758 \uacbd\uc6b0\uc5d0 \ucd94\uac00 \uba54\ubaa8\ub9ac\uac00 \ud544\uc694\ud55c \uc911\uac04 \uceec\ub809\uc158\uc744 \ube4c\ub4dc\ud569\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc5ec\uae30\uc5d0\uc11c \uc2dc\ud000\uc2a4\ub85c\uc758 \ubcc0\ud658\uc774 \ud544\uc694\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\n\/\/ Option 2: old stdlib functions\nreturn collection\n\/\/ .asSequence() \/\/ Avoid creating intermediate list for big collections\n.mapNotNull { it.name }\n.firstOrNull()\n<\/pre>\n<p>\uc0c8\ub85c\uc6b4 \ud568\uc218\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\n\/\/ Option 3: new firstNotNullOfOrNull()\nreturn collection.firstNotNullOfOrNull { it.name }\n<\/pre>\n<p><a name = \"test-library-changes\"><\/a><\/p>\n<h2>\ud14c\uc2a4\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac \ubcc0\uacbd<\/h2>\n<p>\uc5ec\ub7ec \ub9b4\ub9ac\uc2a4\uac00 \ub098\uc624\ub294 \ub3d9\uc548 Kotlin \ud14c\uc2a4\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc778 <code>kotlin-test<\/code>\uc5d0 \ubcc4\ub2e4\ub978 \uc5c5\ub370\uc774\ud2b8\uac00 \uc5c6\uc5c8\uc9c0\ub9cc \uc774\ubc88\uc5d0\ub294 \uc624\ub7ab\ub3d9\uc548 \uae30\ub2e4\ub824\uc628 \ubcc0\uacbd \uc0ac\ud56d\uc774 \uc801\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. 1.5.0-RC\uc5d0\uc11c\ub294 \uc5ec\ub7ec \uac00\uc9c0 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \uc2dc\ub3c4\ud574\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8\uc758 \ub2e8\uc77c <code>kotlin-test<\/code> \uc885\uc18d\uc131.<\/li>\n<li>Kotlin\/JVM \uc18c\uc2a4 \uc138\ud2b8\uc5d0 \ub300\ud55c \ud14c\uc2a4\ud2b8 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \uc790\ub3d9 \uc120\ud0dd.<\/li>\n<li>\uc5b4\uc124\uc158 \ud568\uc218 \uc5c5\ub370\uc774\ud2b8.<\/li>\n<\/ul>\n<h3>\uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8\uc758 kotlin-test \uc885\uc18d\uc131<\/h3>\n<p>\uba40\ud2f0\ud50c\ub7ab\ud3fc \ud504\ub85c\uc81d\ud2b8\ub97c \uc704\ud55c \uad6c\uc131 \ud504\ub85c\uc138\uc2a4\ub97c \uacc4\uc18d\ud574\uc11c \uac1c\ubc1c\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. 1.5.0\uc5d0\uc11c\ub294 \ubaa8\ub4e0 \uc18c\uc2a4 \uc138\ud2b8\uc5d0 \ub300\ud574 <code>kotlin-test<\/code>\uc5d0 \ub300\ud55c \uc885\uc18d\uc131\uc744 \ub354 \uc27d\uac8c \uc124\uc815\ud560 \uc218 \uc788\ub3c4\ub85d \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \uacf5\ud1b5 \ud14c\uc2a4\ud2b8 \uc18c\uc2a4 \uc138\ud2b8\uc758 <code>kotlin-test<\/code> \uc885\uc18d\uc131\ub9cc \ucd94\uac00\ud558\uba74 \ub429\ub2c8\ub2e4. Gradle \ud50c\ub7ec\uadf8\uc778\uc774 \ub2e4\ub978 \uc18c\uc2a4 \uc138\ud2b8\uc5d0 \ub300\ud55c \ud574\ub2f9 \ud50c\ub7ab\ud3fc \uc885\uc18d\uc131\uc744 \ucd94\ub860\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>JVM \uc18c\uc2a4 \uc138\ud2b8\uc6a9 <code>kotlin-test-junit<\/code>. \uba85\uc2dc\uc801\uc73c\ub85c \ud65c\uc131\ud654\ud558\ub294 \uacbd\uc6b0 <code>kotlin-test-junit-5<\/code> \ub610\ub294 <code>kotlin-test-testng<\/code>\ub85c \uc804\ud658\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc5b4\uc9c0\ub294 \ub0b4\uc6a9\uc5d0\uc11c \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694.<\/li>\n<li>Kotlin\/JS \uc18c\uc2a4 \uc138\ud2b8\uc6a9 <code>kotlin-test-js<\/code><\/li>\n<li>\uacf5\ud1b5 \uc18c\uc2a4 \uc138\ud2b8\uc6a9 <code>kotlin-test-common<\/code> \ubc0f <code>kotlin-test-annotations-common<\/code>.<\/li>\n<li>Kotlin\/Native\ub294 <code>kotlin-test<\/code> API\uc758 \uae30\ubcf8 \uad6c\ud604\uc744 \uc81c\uacf5\ud558\ubbc0\ub85c Kotlin\/Native \uc18c\uc2a4 \uc138\ud2b8\uc5d0 \ub300\ud55c \ucd94\uac00 \uc544\ud2f0\ud329\ud2b8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h3>Kotlin\/JVM \uc18c\uc2a4 \uc138\ud2b8\uc5d0 \ub300\ud55c \ud14c\uc2a4\ud2b8 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \uc790\ub3d9 \uc120\ud0dd<\/h3>\n<p>\uc704\uc5d0\uc11c \uc124\uba85\ud55c \ub300\ub85c \uacf5\ud1b5 \ud14c\uc2a4\ud2b8 \uc18c\uc2a4 \uc138\ud2b8\uc5d0\uc11c <code>kotlin-test<\/code> \uc885\uc18d\uc131\uc744 \uc9c0\uc815\ud558\uba74 JVM \uc18c\uc2a4 \uc138\ud2b8\uac00 JUnit 4\uc5d0 \ub300\ud55c \uc885\uc18d\uc131\uc744 \uc790\ub3d9\uc73c\ub85c \uc218\uc2e0\ud569\ub2c8\ub2e4.  \uc774\uac8c \ub05d\uc785\ub2c8\ub2e4. \uc989\uc2dc \ud14c\uc2a4\ud2b8\ub97c \uc791\uc131\ud558\uace0 \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n<p>Groovy DSL\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nkotlin {\nsourceSets {\ncommonTest {\ndependencies {\n\/\/ This brings the dependency\n\/\/ on JUnit 4 transitively\nimplementation kotlin(&#039;test&#039;)\n}\n}\n}\n}\n<\/pre>\n<p>\uadf8\ub9ac\uace0 Kotlin DSL\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nkotlin {\nsourceSets {\nval commonTest by getting {\ndependencies {\n\/\/ This brings the dependency\n\/\/ on JUnit 4 transitively\nimplementation(kotlin(&quot;test&quot;))\n}\n}\n}\n}\n<\/pre>\n<p>\ud14c\uc2a4\ud2b8 \uc791\uc5c5\uc5d0\uc11c \uac04\ub2e8\ud788 \ud568\uc218\ub97c \ud638\ucd9c\ud558\uc5ec JUnit 5 \ub610\ub294 TestNG\ub85c \uc804\ud658\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4: <a href=\"https:\/\/docs.gradle.org\/current\/javadoc\/org\/gradle\/api\/tasks\/testing\/Test.html#useJUnitPlatform--\" target=\"_blank\" rel=\"noopener\"><code>useJUnitPlatform()<\/code><\/a> \ub610\ub294 <a href=\"https:\/\/docs.gradle.org\/current\/javadoc\/org\/gradle\/api\/tasks\/testing\/Test.html#useTestNG--\" target=\"_blank\" rel=\"noopener\"><code>useTestNG()<\/code><\/a>.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nkotlin {\njvm {\ntestRuns[&quot;test&quot;].executionTask.configure {\n\/\/ enable TestNG support\nuseTestNG()\n\/\/ or\n\/\/ enable JUnit Platform (a.k.a. JUnit 5) support\nuseJUnitPlatform()\n}\n}\n}\n<\/pre>\n<p><code>kotlin-test<\/code> \uc885\uc18d\uc131\uc744 \ucd94\uac00\ud558\uba74 JVM \uc804\uc6a9 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c\ub3c4 \ub3d9\uc77c\ud558\uac8c \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<h3>\uc5b4\uc124\uc158 \ud568\uc218 \uc5c5\ub370\uc774\ud2b8<\/h3>\n<p>1.5.0\uc5d0\uc11c\ub294 \uae30\uc874 \uc5b4\uc124\uc158 \ud568\uc218\ub97c \uac1c\uc120\ud558\ub294 \ub3d9\uc2dc\uc5d0 \uc0c8\ub85c\uc6b4 \uc5b4\uc124\uc158 \ud568\uc218\ub3c4 \ub2e4\uc218 \uc900\ube44\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba3c\uc800, \uc0c8\ub85c\uc6b4 \ud568\uc218\ub97c \uac04\ub2e8\ud788 \uc0b4\ud3b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>assertIs&lt;T&gt;()<\/code> \ubc0f <code>assertIsNot&lt;T&gt;()<\/code>\ub294 \uac12\uc758 \uc720\ud615\uc744 \ud655\uc778\ud569\ub2c8\ub2e4.<\/li>\n<li><code>assertContentEquals()<\/code>\ub294 \ubc30\uc5f4, \uc2dc\ud000\uc2a4 \ubc0f \ubaa8\ub4e0 <code>Iterable<\/code>\uc5d0 \ub300\ud55c \ucee8\ud14c\uc774\ub108 \ub0b4\uc6a9\uc744 \ube44\uad50\ud569\ub2c8\ub2e4. \ubcf4\ub2e4 \uc815\ud655\ud558\uac8c\ub294 <code>\uc608\uc0c1<\/code> \ubc0f <code>\uc2e4\uc81c<\/code>\uac00 \ub3d9\uc77c\ud55c \uc21c\uc11c\ub85c \ub3d9\uc77c\ud55c \uc694\uc18c\ub97c \ud3ec\ud568\ud558\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/li>\n<li><code>Double<\/code> \ubc0f <code>Float<\/code>\uc5d0 \ub300\ud55c <code>assertEquals()<\/code> \ubc0f <code>assertNotEquals()<\/code>\uc5d0\ub294 \uc138 \ubc88\uc9f8 \ub9e4\uac1c\ubcc0\uc218\uc778 \uc815\ubc00\ub3c4\uac00 \ud3ec\ud568\ub41c \uc0c8\ub85c\uc6b4 \uc624\ubc84\ub85c\ub4dc\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><code>assertContains()<\/code>\ub294 \ubc30\uc5f4, \ubaa9\ub85d, \ubc94\uc704 \ub4f1 <code>contains()<\/code> \uc5f0\uc0b0\uc790\uac00 \uc815\uc758\ub41c \ubaa8\ub4e0 \uac1d\uccb4\uc5d0\uc11c \ud56d\ubaa9\uc758 \uc874\uc7ac \uc720\ubb34\ub97c \ud655\uc778\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\ub2e4\uc74c\uc740 \uc774\ub7ec\ud55c \ud568\uc218\uc758 \uc0ac\uc6a9\ubc95\uc744 \ubcf4\uc5ec\uc8fc\ub294 \uac04\ub2e8\ud55c \uc608\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\n@Test\nfun test() {\nval expectedArray = arrayOf(1, 2, 3)\nval actualArray = Array(3) { it + 1 }\n\nval first: Any = actualArray[0]\nassertIs&lt;Int&gt;(first)\n\/\/ first is smart-cast to Int now\nprintln(&quot;${first + 1}&quot;)\n\nassertContentEquals(expectedArray, actualArray)\nassertContains(expectedArray, 2)\n\nval x = sin(PI)\n\n\/\/ precision parameter\nval tolerance = 0.000001\n\nassertEquals(0.0, x, tolerance)\n}\n<\/pre>\n<p>\uae30\uc874 \uc5b4\uc124\uc158 \ud568\uc218\uc640 \uad00\ub828\ud558\uc5ec \uc774\uc81c <code>assertTrue()<\/code>, <code>assertFalse()<\/code> \ubc0f <code>expect()<\/code>\ub85c \uc804\ub2ec\ub41c \ub78c\ub2e4 \ud45c\ud604\uc2dd \ub0b4\uc5d0\uc11c <a href=\"https:\/\/kotlinlang.org\/docs\/composing-suspending-functions.html\" target=\"_blank\" rel=\"noopener\">\uc77c\uc2dc \uc911\uc9c0 \ud568\uc218<\/a>\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud568\uc218\ub294 \uc774\uc81c <a href=\"https:\/\/kotlinlang.org\/docs\/inline-functions.html\" target=\"_blank\" rel=\"noopener\">\uc778\ub77c\uc778 \ud654<\/a>\ub418\uc5c8\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<h2>Kotlin 1.5.0\uc758 \ubaa8\ub4e0 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694.<\/h2>\n<p>1.5.0-RC\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\ub7ec\ud55c \ubaa8\ub4e0 \ucd5c\uc2e0 Kotlin API\ub97c \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ud574 \ubcf4\uc138\uc694!<\/p>\n<p>IntelliJ IDEA \ub610\ub294 Android Studio\uc5d0\uc11c Kotlin \ud50c\ub7ec\uadf8\uc778 1.5.0-RC\ub97c \uc124\uce58\ud558\uc138\uc694. <a href=\"https:\/\/kotlinlang.org\/docs\/install-eap-plugin.html\" target=\"_blank\" rel=\"noopener\">EAP \ud50c\ub7ec\uadf8\uc778 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95<\/a>\uc5d0 \ub300\ud574\uc11c\ub3c4 \uc54c\uc544\ubcf4\uc138\uc694.<\/p>\n<p>1.5.0-RC\ub85c \uae30\uc874 \ud504\ub85c\uc81d\ud2b8\ub97c \ube4c\ub4dc\ud558\uc5ec 1.5.0\uc5d0\uc11c \uc5b4\ub5bb\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \ud655\uc778\ud574 \ubcf4\uc138\uc694. <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/03\/kotlin-1-5-0-m2-released\/\">\ud14c\uc2a4\ud2b8 \ubc84\uc804 \ub9b4\ub9ac\uc2a4\ub97c \uc704\ud574 \ub2e8\uc21c\ud654\ub41c \uc0c8\ub85c\uc6b4 \uad6c\uc131<\/a>\uc744 \uc0ac\uc6a9\ud558\uba74 Kotlin \ubc84\uc804\uc744 <code>1.5.0-RC<\/code>\ub85c \ubcc0\uacbd\ud558\uace0 \ud544\uc694\ud55c \uacbd\uc6b0 <a href=\"https:\/\/kotlinlang.org\/docs\/eap.html#build-details\" target=\"_blank\" rel=\"noopener\">\uc885\uc18d\uc131 \ubc84\uc804\uc744 \uc870\uc815<\/a>\ud558\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"\uc124\uce58\" href=\"https:\/\/kotlinlang.org\/docs\/install-eap-plugin.html\" target=\"_blank\" rel=\"noopener\">1.5.0-RC \uc124\uce58<\/a><\/p>\n<p>\uc5b8\uc81c\ub098 \uadf8\ub807\ub4ef\uc774 <a href=\"https:\/\/play.kotlinlang.org\" target=\"_blank\" rel=\"noopener\">Kotlin Playground<\/a>\uc5d0\uc11c \uc628\ub77c\uc778\uc73c\ub85c \ucd5c\uc2e0 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ud638\ud658\uc131<\/h2>\n<p>\ubaa8\ub4e0 \uae30\ub2a5 \ub9b4\ub9ac\uc2a4\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c, \uc774\uc804\uc5d0 \uacf5\uac1c\ud588\ub358 \ubcc0\uacbd \uc0ac\ud56d\uc758 \uc77c\ubd80 \uc9c0\uc6d0 \uc911\ub2e8 \uc8fc\uae30\uac00 Kotlin 1.5.0\uc5d0\uc11c \uc885\ub8cc\ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc0ac\ub840\ub294 \uc5b8\uc5b4 \uc704\uc6d0\ud68c\uc5d0\uc11c \ubaa8\ub450 \uc2e0\uc911\ud558\uac8c \uac80\ud1a0\ud55c \ud6c4 <a href=\"https:\/\/kotlinlang.org\/docs\/compatibility-guide-15.html\" target=\"_blank\" rel=\"noopener\">Kotlin 1.5 \ud638\ud658\uc131 \uac00\uc774\ub4dc<\/a>\uc5d0 \ud45c\uc2dc\ub429\ub2c8\ub2e4. \ub610\ud55c \ud574\ub2f9 \ubcc0\uacbd \uc0ac\ud56d\uc744 <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=Tag:%20language-committee-approved%20Target%20versions:%201.5.0-RC,%201.5.0-M2,%201.5.0-M1,%201.5.0\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>\uc5d0\uc11c \ud655\uc778\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\ub9b4\ub9ac\uc2a4 \ud6c4\ubcf4 \uc548\ub0b4<\/h3>\n<p>Kotlin 1.5.0\uc758 \ub9b4\ub9ac\uc2a4 \ud6c4\ubcf4\uac00 \uacb0\uc815\ub418\uc5c8\uc73c\uba70 \uc774\uc81c \uc5ec\ub7ec\ubd84\uc774 \ucef4\ud30c\uc77c\ud558\uace0 \uac8c\uc2dc\ud560 \ucc28\ub840\uc785\ub2c8\ub2e4! \uae30\uc874 \uc8fc\uc694 \ub9b4\ub9ac\uc2a4\uc640\ub294 \ub2ec\ub9ac Kotlin 1.5.0-RC\uc5d0\uc11c \uc0dd\uc131\ub41c \ubc14\uc774\ub108\ub9ac\ub294 Kotlin 1.5.0\uacfc \ud638\ud658\uc131\uc774 \ubcf4\uc7a5\ub429\ub2c8\ub2e4.<\/p>\n<h2>\uc758\uacac\uc744 \uacf5\uc720\ud574 \uc8fc\uc138\uc694<\/h2>\n<p>\uc774\ubc88\uc774 \ub2e4\uc74c \uae30\ub2a5 \ub9b4\ub9ac\uc2a4\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce60 \uc218 \uc788\ub294 \ub9c8\uc9c0\ub9c9 \uae30\ud68c\uc785\ub2c8\ub2e4! \ubc1c\uacac\ud55c \ubb38\uc81c\uac00 \uc788\uc73c\uba74 <a href=\"https:\/\/kotl.in\/issue\" target=\"_blank\" rel=\"noopener\">\uc774\uc288 \ud2b8\ub798\ucee4<\/a>\uc5d0\uc11c \uacf5\uc720\ud574 \uc8fc\uc138\uc694. \uc5ec\ub7ec\ubd84\uacfc \ucee4\ubba4\ub2c8\ud2f0\ub97c \uc704\ud574 Kotlin 1.5.0 \uac1c\uc120\uc5d0 \ub3d9\ucc38\ud574 \uc8fc\uc138\uc694!<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"\uc124\uce58\" href=\"https:\/\/kotlinlang.org\/docs\/install-eap-plugin.html\" target=\"_blank\" rel=\"noopener\">1.5.0-RC \uc124\uce58<\/a><\/p>\n<p><\/br><\/p>\n<p><em>\uc774 \uac8c\uc2dc\ubb3c\uc740 <a href=\"https:\/\/blog.jetbrains.com\/author\/pavel-semyonovjetbrains-com\/\">Pavel Semyonov<\/a>\uac00 \uc791\uc131\ud55c <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-1-5-0-rc-released\/\">Kotlin 1.5.0-RC Released: Changes to the Standard and Test Libraries<\/a>\ub97c \ubc88\uc5ed\ud55c \uae00\uc785\ub2c8\ub2e4.<\/em><\/p>\n","protected":false},"author":964,"featured_media":136575,"comment_status":"closed","ping_status":"closed","template":"","categories":[907],"tags":[21,6408,477],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/138481"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/964"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=138481"}],"version-history":[{"count":4,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/138481\/revisions"}],"predecessor-version":[{"id":388025,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/138481\/revisions\/388025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/136575"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=138481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=138481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=138481"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=138481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}