{"id":245,"date":"2013-12-16T00:02:51","date_gmt":"2013-12-15T15:02:51","guid":{"rendered":"http:\/\/www.uturtle.com\/blog\/?p=245"},"modified":"2013-12-18T20:16:59","modified_gmt":"2013-12-18T11:16:59","slug":"ruby-%ec%96%b8%ec%96%b4-%ec%a0%95%eb%a6%ac-2","status":"publish","type":"post","link":"https:\/\/www.jinukbaek.com\/blog\/ko\/archives\/245","title":{"rendered":"Ruby \uc5b8\uc5b4 \uc815\ub9ac (2)"},"content":{"rendered":"<h1>\ub8e8\ube44(Ruby)\uc5b8\uc5b4 \uc815\ub9ac<\/h1>\n<h2>\uc870\uac74\ubb38<\/h2>\n<h3>if<\/h3>\n<pre class=\"lang:ruby decode:true\"><code>if Boolean [then | :]\r\n   code1\r\n[elsif Boolean [then | :]\r\n   code\r\n]...\r\n[else\r\n   code ]\r\nend\r\n<\/code><\/pre>\n<ul>\n<li>Boolean : \uc2dd\uc758 Return \uac12\uc774 Boolean\ud615\uc778 \uacb0\uacfc \uac12<\/li>\n<li>code1 : \uc870\uac74(Boolean)\uc774 \ucc38\uc77c \uacbd\uc6b0 \uc2e4\ud589<\/li>\n<li>elsif : elseif \uac00 \uc544\ub2c8\uace0 <strong>elsif<\/strong>\uc778 \uac83\uc5d0 \uc8fc\uc758\ud560 \uac83<\/li>\n<\/ul>\n<h3>unless<\/h3>\n<p>if\ubb38\uacfc \ubc18\ub300\ub85c \uc791\ub3d9\ud568<\/p>\n<pre class=\"lang:ruby decode:true\"><code>unless Boolean [then | :]\r\n   code1\r\n[else\r\n   code ]\r\nend\r\n<\/code><\/pre>\n<ul>\n<li>Boolean : \uc2dd\uc758 Return \uac12\uc774 Boolean\ud615\uc778 \uacb0\uacfc \uac12<\/li>\n<li>code1 : \uc870\uac74(Boolean)\uc774 \uac70\uc9d3\uc77c \uacbd\uc6b0 \uc2e4\ud589<\/li>\n<\/ul>\n<h3>if\/unless\ub97c \uc218\uc2dd\uc5b4 \ud615\ud0dc\ub85c \uc0ac\uc6a9<\/h3>\n<p><code>puts \"true\" if res &gt; 100<\/code> : 100\ubcf4\ub2e4 \ud074 \uacbd\uc6b0 true\ub97c \ucd9c\ub825<\/p>\n<p><code>puts \"false\" if new &lt;= 100<\/code> : 100 \uc774\ud558\uc77c \uacbd\uc6b0 false\ub97c \ucd9c\ub825<\/p>\n<h3>case \ubb38<\/h3>\n<pre class=\"lang:ruby decode:true\"><code>case value\r\nwhen expression [, comparision]... [then | :]\r\n   code\r\nwhen expression [, comparision]... [then | :]\r\n   code\r\n.\r\n.\r\n.\r\n[else\r\n    code]\r\nend\r\n<\/code><\/pre>\n<p>\uc870\uac74\uc5d0 \uc54c\ub9de\ub294 <code>value<\/code>\uac12\uc5d0 \ub300\ud574 when\uc758 \uc870\uac74\uc5d0 \ub9de\ub294 \uac83\uc744 \uc2e4\ud589\ud568<\/p>\n<pre class=\"lang:ruby decode:true\"><code>goal = 100\r\ncase goal\r\nwhen 95..100\r\n    puts \"A+\"\r\nwhen 90...95\r\n    puts \"A\"\r\nwhen 85...90\r\n    puts \"B+\"\r\nwhen 80...85\r\n    puts \"B\"\r\nwhen 75...80\r\n    puts \"C+\"\r\nwhen 70...75\r\n    puts \"C\"\r\nelse\r\n    puts \"F\"\r\nend\r\n<\/code><\/pre>\n<p>\uc704\uc640 \uac19\uc740 \ud615\uc2dd\uc73c\ub85c Range\uc640 \ud568\uaed8 \uc0ac\uc6a9 \uac00\ub2a5<\/p>\n<h3>? \uc5f0\uc0b0\uc790<\/h3>\n<p><code>condition ? true : false<\/code> \ud615\uc2dd\uc73c\ub85c \uc774\uc6a9.<\/p>\n<p>\uc608\uc81c: <code>res = r &gt;= 70 ? \"pass\" : \"fail\"<\/code><\/p>\n<h2>\uc21c\ud658\ubb38<\/h2>\n<h3>while<\/h3>\n<pre class=\"lang:ruby decode:true\"><code>while condition [ do | : ]\r\n   code\r\nend \r\n<\/code><\/pre>\n<p>condition\uc758 \uc870\uac74\uc774 \ucc38\uc77c \uacbd\uc6b0\uc5d0\ub9cc \uc2e4\ud589<\/p>\n<h3>until<\/h3>\n<pre class=\"lang:ruby decode:true\"><code>until condition [ do | : ]\r\n    code\r\nend\r\n<\/code><\/pre>\n<p>condition\uc758 \uc870\uac74\uc744 \ub9cc\uc871\ud560 \ub54c \uae4c\uc9c0 \uc2e4\ud589<\/p>\n<h3>while\/until\uc758 \uc218\uc2dd\uc5b4 \ud615\ud0dc \uc0ac\uc6a9<\/h3>\n<p><code>value += 10 until value == 100<\/code><\/p>\n<p><code>value += 1 while value &lt; 100<\/code><\/p>\n<h3>for<\/h3>\n<pre class=\"lang:ruby decode:true\"><code>for variable [, variable]... in collection [do | :]\r\n    code\r\nend\r\n<\/code><\/pre>\n<p>collection\uc744 \ucc28\ub840\ub300\ub85c variable\uc5d0 \ub123\uc73c\uba74\uc11c code\ub97c \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<ul>\n<li>\uc608\uc81c 1<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>for value in 1..10\r\n   data += value\r\nend\r\n<\/code><\/pre>\n<ul>\n<li>\uc608\uc81c 2<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>for data in [\"I\", \"love\", \"you\"]\r\n   puts data\r\nend\r\n<\/code><\/pre>\n<h3>Ruby Iterator<\/h3>\n<pre class=\"lang:ruby decode:true\"><code>collection do |variable|\r\n   code\r\nend\r\n<\/code><\/pre>\n<p>collection\uc758 \ub0b4\uc6a9\uc744 variable\uc5d0 \ud558\ub098\uc529 \ub123\uc73c\uba74\uc11c code\ub97c \uc2e4\ud589. \uc544\ub798\ub294 \uc774\ub97c \uc0ac\uc6a9\ud55c \uc608\uc81c.<\/p>\n<pre class=\"lang:ruby decode:true\"><code>data = [\"Hello\", \"World\", \"!!\"]\r\nres = \"\"\r\n\r\n0.upto(grades.length - 1) do |loop_index|\r\n    res = data[loop_index] + \" \"\r\nend\r\n\r\nputs res\r\n<\/code><\/pre>\n<ul>\n<li><code>0.upto(n)<\/code> : 0\ubd80\ud130 n\uae4c\uc9c0 \uc21c\ud658\ubb38\uc744 \ub9cc\ub4ec<\/li>\n<li><code>10.downto(0)<\/code> : 10\ubd80\ud130 0\uae4c\uc9c0 \uac12\uc744 \uac10\uc18c\uc2dc\ud0a4\uba70 \uc21c\ud658<\/li>\n<li><code>2.step(11, 3)<\/code> : 11\uae4c\uc9c0 2\ubd80\ud130 3\uc529 \uc99d\uac00\uc2dc\ud0a4\ub294 \uc21c\ud658\ubb38 \uc791\uc131(\uc608 : 2, 5, 8, 11)<\/li>\n<li><code>5.times<\/code> : 5\ud68c \ubc18\ubcf5<\/li>\n<li><code>data.each<\/code> : data\uac00 \uceec\ub809\uc158\uc774\uba74 \ubaa8\ub4e0 \ud56d\ubaa9\ub4e4\uc744 \uc21c\uc11c\ub300\ub85c \uac00\uc838\uc634<\/li>\n<li><code>loop<\/code> : \ubb34\ud55c \ub8e8\ud504 (<code>break<\/code>\ubb38\uc744 \ud1b5\ud574\uc11c \ubc18\ubcf5\ubb38 \ud0c8\ucd9c)<\/li>\n<\/ul>\n<h3>\ubc18\ubcf5\ubb38\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uad6c\ubb38<\/h3>\n<ul>\n<li><code>break<\/code> : \ubc18\ubcf5\ubb38\uc744 \ud0c8\ucd9c<\/li>\n<li><code>redo<\/code> : \ubc18\ubcf5\ubb38\uc758 \ud604\uc7ac \ub2e8\uacc4\ub97c \ud55c \ubc88 \ub354 \uc2e4\ud589<\/li>\n<li><code>next<\/code> : \ub2e4\uc74c \ub2e8\uacc4\ub97c \uc2e4\ud589\ud568 (C++\/JAVA++\uc758 continue\uc640 \uac19\uc74c)<\/li>\n<li><code>retry<\/code> : \ubc18\ubcf5\ubb38\uc744 \ucc98\uc74c\ubd80\ud130 \ub2e4\uc2dc \uc2dc\uc791<\/li>\n<\/ul>\n<h2>\uba54\uc18c\ub4dc \uc815\uc758<\/h2>\n<p>hello\ub780 \uc774\ub984\uc758 \uba54\uc18c\ub4dc \uc815\uc758<\/p>\n<pre class=\"lang:ruby decode:true\"><code>def hello\r\n   puts \"Hello World!!\"\r\nend\r\n<\/code><\/pre>\n<p>\uc0ac\uc6a9 \ubc29\ubc95\uc740 <code>hello<\/code>\ub77c\uace0 \ud558\ub294 \uac83 \ub9cc\uc73c\ub85c \uac00\ub2a5<\/p>\n<ul>\n<li>\uba54\uac1c\ubcc0\uc218 \uc804\ub2ec\ubc29\ubc95<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>def hello(name)\r\n   puts \"Hello World!!, \" + name\r\nend\r\n\r\nhello \"Gildong\"\r\n<\/code><\/pre>\n<ul>\n<li>\uac00\ubcc0 \uac1c\uc218<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>def hello(data, *others)\r\n    puts data + \"!! Hello World!! \" + others.join(\", \")\r\nend\r\n\r\nhello \"Ruby\", \"Gildong\", \"Gilsoon\", \"Cheolsoo\"\r\n<\/code><\/pre>\n<p>Ruby\uc5d0\uc11c <code>*<\/code>\ub294 \ubc30\uc5f4\uc774\ub77c\ub294 \ub73b\uc784. \ud30c\ub77c\ubbf8\ud130\ub97c \ub118\uae38 \uacbd\uc6b0\uc5d0\ub3c4 \uc0ac\uc6a9 \uac00\ub2a5<\/p>\n<ul>\n<li>\uba54\uc18c\ub4dc \uac12\uc744 \ub9ac\ud134<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>def sum(a, b)\r\n    return a + b\r\nend\r\n<\/code><\/pre>\n<ul>\n<li>2\uac1c \uc774\uc0c1\uc758 \uac12 \ub9ac\ud134<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>def sum_minus(a, b)\r\n    return a+b, a-b\r\nend\r\narr = sum_minus(30, 20)   # \ubc30\uc5f4 \ud615\ud0dc\r\ns, m = sum_minus(30, 20)  # \uac01\uac01 \ub9ac\ud134\uac12\uc774 s, m\uc73c\ub85c \ub9ac\ud134\r\n<\/code><\/pre>\n<ul>\n<li>\ubcc0\uc218\uc758 \uc720\ud6a8 \ubc94\uc704<\/li>\n<\/ul>\n<p>\ub3d9\uc77c \uc774\ub984\uc77c \uacbd\uc6b0\uc5d0 \ub9e4\uc18c\ub4dc \ub0b4\ubd80\uac00 \ucd5c\uc6b0\uc120<\/p>\n<ul>\n<li>\ube14\ub85d (block)<\/li>\n<\/ul>\n<p>\uba54\uc18c\ub4dc\uc5d0 \ud30c\ub77c\ubbf8\ud130(Parameter)\ucc98\ub7fc \uc804\ub2ec\ub420 \uc218 \uc788\ub294 \ucf54\ub4dc\ub97c \ub9d0\ud568, {}\ub97c \uc774\uc6a9\ud558\uc5ec \uc791\uc131<\/p>\n<p><code>{ puts \"Hello World!!\" }<\/code><\/p>\n<p>\ub610\ub294<\/p>\n<pre class=\"lang:ruby decode:true\"><code>do\r\n   puts \"Hello World!!\" \r\nend\r\n<\/code><\/pre>\n<p>\ud615\ud0dc\ub85c \uc791\uc131 \uac00\ub2a5\ud568<\/p>\n<p><code>yield<\/code>\ubb38\uc744 \uc774\uc6a9\ud558\uc5ec \ube14\ub85d\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"lang:ruby decode:true\"><code>def hello\r\n    yield\r\nend\r\n\r\nhello { puts \"Hello World!!\" }\r\n<\/code><\/pre>\n<ul>\n<li>\ube14\ub85d\uc5d0 \ub370\uc774\ud130 \uc804\ub2ec<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>def hello\r\n   yield \"Ruby\", \"Gildong\"\r\nend\r\n\r\nhello { |word1, word2| puts word1 + \" Hello World!! \" + word2 }\r\n<\/code><\/pre>\n<p>||\uc548\uc5d0 \uc788\ub294 \ubcc0\uc218\uc5d0 \ucc28\ub840\ub300\ub85c \ub370\uc774\ud130\uac00 \uc804\ub2ec\ub41c\ub2e4.<\/p>\n<ul>\n<li>\ubc18\ubcf5\uc790\uc640 \ud568\uaed8 \ube14\ub85d \uc0ac\uc6a9<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>[\"Hello\", \"World\", \"!!\"].each {|word| puts word}\r\n4.times {puts \"!\"}\r\n<\/code><\/pre>\n<ul>\n<li>BEGIN\/END \ube14\ub85d<\/li>\n<\/ul>\n<pre class=\"lang:ruby decode:true\"><code>BEGIN {puts \"Hi \"}\r\n\r\nputs \"Hello World!\"\r\n\r\nEND { puts \"Bye!\" }\r\n<\/code><\/pre>\n<p>Ruby \ud504\ub85c\uadf8\ub7a8\uc774 \uba54\ubaa8\ub9ac\uc5d0 \uc62c\ub77c\uac08 \ub54c BEGIN \ube14\ub85d\uc774 \uc2e4\ud589 \ub418\uba70 \uc885\ub8cc \ub420 \ub54c END \ube14\ub85d\uc774 \uc2e4\ud589\ub41c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ub8e8\ube44(Ruby)\uc5b8\uc5b4 \uc815\ub9ac \uc870\uac74\ubb38 if if Boolean [then | :] code1 [elsif Boolean [then | :] code ]&#8230; [else<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[135],"tags":[117],"class_list":["post-245","post","type-post","status-publish","format-standard","hentry","category-ruby-on-rails","tag-ruby-language"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8gT1J-3X","_links":{"self":[{"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/posts\/245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/comments?post=245"}],"version-history":[{"count":2,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/posts\/245\/revisions"}],"predecessor-version":[{"id":247,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/posts\/245\/revisions\/247"}],"wp:attachment":[{"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/media?parent=245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/categories?post=245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/tags?post=245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}