[[TableOfContents]] = 2 ÀÌÁ¦ Äڵ带 ÂÉ°³ º¾½Ã´Ù = ÀÌÁ¦ ±âº»ÀûÀÎ °´Ã¼µé°ú °´Ã¼µéÀ» ´Ù·ç´Âµ¥ Á¶±Ý Àͼ÷ÇØÁ³À¸´Ï, Äڵ带 ³ª´©±â ½ÃÀÛÇÒ Â÷·ÊÀÔ´Ï´Ù. ¹°·Ð ÇÑ µ¢¾î¸®ÀÇ Å« ÄÚµå·Î ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÒ °ÍÀ̶ó°í´Â »ý°¢Çϼ̴ø °ÍÀº ¾Æ´Ï½Ã°ÚÁÒ! ´Ù½Ã ¾²°í ½ÍÀº Äڵ带 ¸Å¹ø ¹Ýº¹Çؼ­ ½á¾ß ÇÏ°í, 30000ÁÙ Àü¿¡ ½è´ø º¯¼ö¸¦ °Çµå¸®Áö´Â ¾ÊÀ»±î ³ë½ÉÃÊ»çÇϸç Äڵ带 ÀÛ¼ºÇØ¾ß ÇÑ´Ù¸é Á¤¸» ¹Ùº¸°°À» °Ì´Ï´Ù. ±×·¡¼­ ¾ð¾îÀÇ ÃµÀçµé²²¼­ Äڵ带 ³ª´©´Â ¸î °¡Áö ¹æ¹ýÀ» âÁ¶Çϼ̽À´Ï´Ù. ÀÌ ¹æ¹ýµé Áß¿¡¼­ °¡Àå ±âÃÊÀûÀÎ °ÍÀº ºí·ÏÀÔ´Ï´Ù. ºí·ÏÀº Äڵ带 ½ÃÀÛ°ú ³¡À» ³ªÅ¸³»´Â ¿¹¾à¾î·Î ¹®¸Æ¿¡¼­ ¶¼¾î³½ ÄÚµå Á¶°¢ÀÏ »ÓÀÔ´Ï´Ù. ½ÃÀÛÀ» ³ªÅ¸³»´Â Å°¿öµå´Â ¿©±â¼­ ¿¹Á¦·Î º¸¿©ÁÙ begin Å°¿öµå³ª ´ÙÀ½ Àå¿¡¼­ ¹è¿ï if³ª for °°Àº °ÍµéÀÔ´Ï´Ù. ÄÚµå ºí·ÏÀ» ¸¸µå·Á¸é ºí·ÏÀÇ ½ÃÀÛÀ» ³ªÅ¸³»´Â ¸» ´ÙÀ½¿¡ ÇÊ¿äÇÑ °Í(begin Å°¿öµå¿¡¼­´Â ÇÊ¿äÇÑ °ÍÀÌ ¾øÀ¸´Ï ±×³É begin¸¸ ¾²½Ã¸é µË´Ï´Ù)µéÀ» µ¡ºÙÀÌ°í ÀÌ°ÍÀ» ºí·ÏÀ¸·Î ³õÀ» ÄÚµå ¾Õ¿¡ ¾²°í ¸¶Áö¸·¿¡ end Å°¿öµå·Î ¸¶Ä¡¸é µË´Ï´Ù. ¾î¶² ºÐµéÀº ±â¾ïÇϽñ⠾î·Á¿ï °Ì´Ï´Ù. ¿¹Á¦¸¦ º¸¼¼¿ä. {{{ begin puts "I'm in a block." puts "Still there..." puts "Stillllll in here..." puts "OK, I'm done." end }}} {{{begin}}}/{{{end}}} ÀÚü¸¦ »ç¿ëÇÏ´Â °ÍÀº ºí·ÏÀÌ ¹®¸Æ¿¡¼­ ºÐ¸®µÇ¾ú´Ù´Â °ÍÀ» ³ªÅ¸³»´Â °Í »ÓÀÌÁö¸¸, ÀÌ°ÍÀ» ´Ù¾çÇÑ ±¸¼ºÃ¼¿Í ¦ Áþ°í Àß Á¶ÇÕÇÏ¸é ´Ù¸¥ °á°ú¸¦ ³¾ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Àý¿¡¼­ ÀÌ·± ±¸¼ºÃ¼¿¡ ´ëÇؼ­ ¸¹ÀÌ ´Ù·ç°í, ³ªÁß¿¡ ºí·ÏµéÀ» ´õ È¿°úÀûÀ¸·Î ¾²´Â ¹ýÀ» ¾Ë·Áµå¸± °Å¿¡¿ä. (±×·±°Ô ÀÖ¾î¿ä. Àý ¹ÏÀ¸¼¼¿ä.) == ¸Þ¼Òµå == ÀÌÀüÀÇ ¿¹Á¦µé¿¡¼­ Àú´Â º°·Î ¼³¸íÀ» ÇÏÁö ¾Ê°í ¿ÀÈ÷·Á ´õ ÀÚÀ¯·Ó°Ô ¸Þ¼Òµå¸¦ ½è½À´Ï´Ù. °´Ã¼¿Í º¯¼ö°¡ ÇÁ·Î±×·¡¹ÖÀÇ ¸í»ç¶ó°í ÇÑ´Ù¸é, ¸Þ¼Òµå´Â µ¿»ç¶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. "¹«¾ùÀ» ÇÏ´Â °Í"ÀÌ ¸Þ¼ÒµåÀÔ´Ï´Ù. Á» ´õ Àü¹®ÀûÀÎ ¸»·Î, ¸Þ¼Òµå´Â È£Ãâ¹Þ´Â ÄÚµå·Î µé¾î°¡´Â ¸Å°³º¯¼ö(ÀÎÀÚ³ª ¿É¼ÇÀ̶ó°íµµ ºÎ¸¨´Ï´Ù)¶ó´Â º¯¼ö¸¦ ÀÌ¿ëÇÏ¿© ´Ù¸¥ ÄÚµå ³»¿¡¼­ È£ÃâÇÒ ¼ö ÀÖ´Â ÄÚµåÀÇ Á¶°¢ÀÔ´Ï´Ù. ÀÓÀǷΠȣÃâÇÒ ¼ö ÀÖ´Â {{{begin}}}/{{{end}}} ºí·ÏÀ̶ó°í »ý°¢Çϼ¼¿ä. ÀÓÀǷΠȣÃâ ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº ¾ðÁ¦µçÁö ¾îµð¼­µç È£ÃâÇÒ ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ¸ðµç ¸Þ¼Òµå È£ÃâµéÀÌ »ì°í ÀÖ´Â "¸Þ¼Òµå" ºí·Ï ¸ðÀÓ °°Àº °ÍÀº ¾ø½À´Ï´Ù. ¸Å°³º¯¼ö¿Í ±×¿Í °°Àº °ÍµéÀÌ Á» Çò±ò¸°´Ù´Â °ÍÀº ¾ËÁö¸¸, ÀÌ¹Ì ÅؽºÆ®¸¦ puts·Î º¸³»°Å³ª ¹®ÀÚ¿­À» chopÀ¸·Î º¸³ÂÀ» ¶§, ¸Þ¼Òµå·Î ¸Å°³º¯¼ö¸¦ º¸³½ ÀûÀÌ ÀÖ½À´Ï´Ù! ±×·± °ÍÀ» ÇÑ´Ù°í ÇÑ Àûµµ ¾ø´Âµ¥ ÀÌ¹Ì ±×·¸°Ô ÇÏ°í ÀÖ¾ú´ø °ÍÀÔ´Ï´Ù! Àú´Â Àº±Ù½½Àû ±×·± ½ÄÀ¸·Î ³Ñ¾î°¬½À´Ï´Ù. Àú´Â ¸» ¼Ø¾¾°¡ ÁÁÀº ¹üÁËÀÚ¶ø´Ï´Ù. attachment:methods.jpg ±×¸² 5: ¸Þ¼Òµå È£Ãâ. Á» ´õ Àü¹®ÀûÀ¸·Î ¸»ÇÑ´Ù¸é, ·çºñ¿¡¼­ ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °ÍÀº ¸Þ¼Òµå¸¦ "È£Ãâ"ÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ¹°·Ð È£ÃâÇѴٴ ǥÇöÀ» ÀÚÁÖ »ç¿ëÇϱâ´Â ÇÏÁö¸¸ ¸»ÀÔ´Ï´Ù. ½ÇÁ¦·Î´Â °´Ã¼¿¡ "¾ß~ ³Ê ÀÌ ¸Þ¼Òµå ÀÖ´Ï?"¶ó´Â ¸Þ½ÃÁö¸¦ º¸³»´Â °ÍÀÔ´Ï´Ù. ¸Þ¼Òµå°¡ ÀÖÀ¸¸é ¸Þ¼Òµå°¡ ½ÇÇàµÇ°í ¸Þ¼Òµå°¡ ¾øÀ¸¸é À̸¦ °¥¸é¼­ ÇÑźÇϸç, {{{NoMethodError}}} ¿¹¿Ü¸¦ ´øÁø´ä´Ï´Ù. "ÁÁ±¸³ª, ÁÁ±â´Â ÇÏÁö¸¸ ¸Þ¼Òµå´Â ¹½ÇÏ·¯ Àִ°ÅÁö?" ¶ó°í ¸»¾¸ÇϽðÚÁö¿ä. ¹°·Ð, "¹«¾ð°¡¸¦ ÇÏ´Â °Í"ÀÇ ¿ëµµ·Î »ç¿ëÇÒ ¼ö ÀÖ°Ú½À´Ï´Ù¸¸, ´õ Å« ¸ñÀûÀÌ ÀÖÀ»±î¿ä? ¹°·Ð ÀÖÁö¿ä. ÀÏ´Ü, ¸Þ¼Òµå´Â Áߺ¹µÇ´Â °ÍÀ» ¾ø¾ÖÁÝ´Ï´Ù. ¿¹¸¦ µé¾î, ¶È°°Àº 15ÁÙÂ¥¸® Äڵ带 Àüü ÇÁ·Î±×·¥¿¡¼­ ¿©·¯ ¹ø »ç¿ëÇÒ »ý°¢Àε¥, °è¼Ó ¹Ýº¹Çؼ­ ½á ³Ö¾î¾ß ÇÑ´Ù¸é Âü ¹Ùº¸°°À» °Ì´Ï´Ù. ±×Àú ¸Þ¼Òµå¸¦ ¸¸µé¾î¼­ ÇÊ¿äÇÒ ¶§¸¶´Ù È£ÃâÇÏ¸é µÇ´Â °ÍÀÌÁö¿ä. µÎ¹ø°·Î, ¸Þ¼Òµå´Â Äڵ带 ´õ Àß ³ª´­ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. 550 ÁÙÂ¥¸® ÄÚµå ÇÑ µ¢¾î¸®´Â º°·Î Àç¹Ì ¾øÀ»°Ì´Ï´Ù. (½ÉÇÏ°Ô ÀÚ½ÅÀ» ÇдëÇÏ°í Ȥ»çÇÏ°í, ¸¶Á¶È÷½ºÆ® °°Àº ¹ÌÄ£ »ç¶÷À̶ó¸é ±×·²¼öµµ ÀÖ°ÚÁö¸¸ ±×·± »ç¶÷µéÀº ¸ðµÎ ȸ°è ÀÏÀ» ÇÏ°í ÀÖÀ¸´Ï±î¿ä. Á¦ ¸»ÀÌ ¸Â³ª¿ä?) ¸Þ¼Òµå´Â °Å´ëÇÏ°í ³­ÀâÇÑ ·ÎÁ÷µéÀ» ÀÛ°í ´õ °ü¸®Çϱâ ÆíÇÑ Á¶°¢À¸·Î ³ª´¯´Ï´Ù. === ¸Þ¼Òµå Á¤ÀÇÇϱâ === ÀÌÁ¦ ¿©·¯ºÐÀº ÀڽŸ¸ÀÇ »Ç´ë³ª´Â ¸Þ¼Òµå¸¦ ¸¸µé ¼ö Àֱ⸦ ±â´ëÇÏ°í °¥¸ÁÇÏ°í ÀÖÀ» °Ì´Ï´Ù. ÀÌÁ¦ ´õ ÀÌ»ó ÁöüÇÒ ÇÊ¿ä°¡ ¾ø³×, ±ÞÇÑ Ä£±¸! ¹Ù·Î ¿©±â ÀÚ³×°¡ ã°í ÀÖ´ø °Ô ÀÖÀ¸´Ï. {{{ def my_new_method(name) puts "hey, " + name + ", this is my new method..." end my_new_method('magnus') ¡æ hey, magnus, this is my new method... }}} def¸¦ ¾²°í ¸Þ¼Òµå À̸§°ú ¸Å°³º¯¼ö¸¦ ¾²¸é µË´Ï´Ù. ¸Å°³º¯¼ö¶ó°í ÇÏ´Â °ÍÀº ±× ¸Þ¼Òµå ³»¿¡¼­ ¾µ ¼ö ÀÖ°Ô ³Ñ°ÜÁÖ´Â º¯¼ö¶ó´Â °ÍÀ» ±â¾ïÇϽÃÁÒ? ´ÙÀ½ ÁÙºÎÅÍ ¸Þ¼Òµå Äڵ尡 Æ÷ÇԵǰí, end Å°¿öµå·Î ³¡ÀÌ ³³´Ï´Ù. ÀÌ°Ô ÀüºÎÀÔ´Ï´Ù. °£´ÜÇÏÁÒ? À½, »ç½Ç ¸Þ¼Òµå´Â ±×°Ô ÀüºÎ°¡ ¾Æ´Õ´Ï´Ù. ù°·Î, ¸Þ¼Òµå À̸§Àº (¹°·Ð, °ü·Ê»ó) ¼Ò¹®ÀÚ·Î ½ÃÀÛÇÏ°í °¡´ÉÇϸé ÀüºÎ ¼Ò¹®ÀÚÀÎ °ÍÀÌ ÁÁ½À´Ï´Ù. ÀÌÀ¯´Â ·çºñ°¡ ´ë¹®ÀÚ·Î ½ÃÀÛÇÏ´Â °ÍÀº ¸Þ¼Òµå¶ó°í »ý°¢ÇÏÁö ¾Ê°í, »ó¼ö³ª Ŭ·¡½º¶ó°í »ý°¢Çϱ⠶§¹®ÀÌÁÒ. ÀÌ·¸°Ô µÈ´Ù¸é ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÁöÀúºÐÇÏ°Ô µ¿ÀÛÇÒ ¼ö ÀÖÁÒ. °ü·Ê¿¡ ´ëÇؼ­ ¸»¾¸µå¸®´Â ±è¿¡ ¸»¾¸µå¸®´Â °ÍÀε¥ ¸Þ¼Òµå À̸§¿¡ ¾î¿ï¸®´Â ´Ù¸¥ °ü·ÊµéÀÌ ÀÖ½À´Ï´Ù. ¸ÕÀú, ¾î¶² ¼Ó¼º¿¡ ´ëÇؼ­ ¹¯´Â °ÍÀÌ¸é ¹°À½Ç¥·Î ³¡ÀÌ ³ª¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î¼­ ÇÁ¶û½º ±ºÀÇ ½Â¸® ¿©ºÎ¸¦ ¹¯´Â ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÑ´Ù¸é French.has_military_victories?¿Í °°Àº ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÒ °ÍÀÔ´Ï´Ù. ¹°·Ð ¹Ýȯ°ªÀº {{{false}}}ÀÏ °ÍÀÔ´Ï´Ù. ´Ù¸¥ °ü·Ê´Â, ¸Þ¼Òµå°¡ ±×°ÍÀ» È£ÃâÇÑ °´Ã¼¸¦ ¼öÁ¤ÇÏ´Â °æ¿ì¿¡´Â ¸Þ¼Òµå À̸§ÀÌ ´À³¦Ç¥·Î ³¡³ª¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¸ðµç ÇöÁ¸ÇÏ´Â »çÀ̺¸±× ¼ÒÇÁÆ®¿þ¾î¸¦ ·çºñ·Î ´ëüÇÏ¿© ¸ðµç ·Îº¿ À¯¸íÀλçµéÀÌ È£È­·Î¿î ·çºñ ±â¹Ý ½Ã½ºÅÛÀ¸·Î µ¿ÀÛÇÑ´Ù°í ÇսôÙ. °Ô´Ù°¡ ¾ó±¼ ÁÖ¸§À» Æì´Â ¼ºÇü¼ö¼ú±îÁö Çؼ­ 40»ìÀº ´õ Àþ¾îº¸ÀÌ°Ô ÇØ¾ß µÈ´Ù°í Çϸé, ±×Àú Dolly_Parton.facelift!¶ó°í ÇØ ÁÖ¸é µË´Ï´Ù. ¾Æ´Ï¸é, ³ªÀ̸¦ ÀÓÀÇÀÇ °ªÀ¸·Î ¹Ù²Ü ¼öµµ À־ Bob_Baker.set_age!(30)À» È£ÃâÇصµ µË´Ï´Ù. ¸Þ¼Òµå¿¡ ´ëÇؼ­ ´ÙÀ½À¸·Î ¾Ë¾Æº¼ °ÍÀº ³Ñ°Ü¹Þ´Â ¸Å°³º¯¼ö(ÀÎÀÚ ¾Æ´Ï¸é ¹«¾ùÀÌµç °£¿¡ ¸¶Âù°¡Áö)ÀÔ´Ï´Ù. ÀÌ º¯¼öµéÀº ¸Þ¼Òµå¿¡ ³Ñ¾î°¡¼­ Áö¿ª º¯¼ö°¡ µË´Ï´Ù. Áö¿ª º¯¼ö´Â Áö¿ªÀûÀ̾ ÄÚµå(¸Þ¼Òµå) ºí·Ï ¾È¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¸»Àº ÄÚµå ºí·Ï ¾È¿¡¼­ »ý¼ºµÈ º¯¼ö¿Í ¸Å°³º¯¼ö´Â ÄÚµå ºí·Ï ¹Û¿¡¼­´Â »ç¿ëÇÒ ¼ö ¾ø´Ù´Â ¶æÀÔ´Ï´Ù. ¸»·Î ÀÌ°ÍÀ» ¼³¸íÇϱ⿡´Â Á¶±Ý ¾î·Á¿ì´Ï±î ¿¹Á¦¸¦ º¸µµ·Ï ÇսôÙ. {{{def my_method(first, second) puts first third = second puts second end my_method("yes.", "no.") ¡æ yes. ¡æ no. puts first ¡æ ! NameError: undefined local variable or method puts third ¡æ ! NameError: undefined local variable or method }}} ¹Ýȯ°ªÀ¸·Î ¹ÝȯÇϰųª ¹Ù±ùÀ¸·Î ³Ñ°ÜÁØ °æ¿ì°¡ ¾Æ´Ï¶ó¸é ¸Å°³º¯¼ö¿Í »ý¼ºµÈ Áö¿ªº¯¼ö ¸ðµÎ ¸Þ¼Òµå ¹Û¿¡¼­´Â »ç¿ëÇÒ ¼ö ¾ø´Ù´Â Á¡À» ÁÖ¸ñÇϽñ⠹ٶø´Ï´Ù. ÀÌ °³³äÀ» ½ºÄÚÇÁ(scoping)¶ó°í ÇÏ°í ·çºñ ÇÁ·Î±×·¡¹ÖÀ» Çϸ鼭 ¿©·¯ ¹ø Á¢ÇÒ °ÍÀÔ´Ï´Ù. »õ·Î¿î °³³ä¿¡¼­ ½ºÄÚÇÁ°¡ Áß¿äÇØÁö¸é °­Á¶ÇÏ¿© ¾Ë·Áµå¸®°Ú½À´Ï´Ù. º¯¼ö´Â Àü¿ªÀûÀ¸·Î, Áö¿ªÀûÀ¸·Î, ¾Æ´Ï¸é Ŭ·¡½º ½ºÄÚÇÁ ³» µî¿¡¼­ ½ºÄÚÇÁÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¶°Ç ºí·ÏÀ̳ª ¹Ýº¹ ºí·ÏÀ» Æ÷ÇÔÇÏ¿© ¾î¶² ºí·ÏÀ̵çÁö Áö¿ª º¯¼ö¸¦ µÑ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ Àû¿ë ¹üÀ§¿¡ ´ëÇؼ­´Â ¾ÕÀ¸·Î Â÷Â÷ ¹è¿ì°Ô µÇ°ÚÁö¸¸ ¸Þ¼Òµå¿¡¼­ ½ºÄÚÇÁ°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö¸¦ Àß ±â¾ï¿¡ µÎ¼Å¾ß ÇÕ´Ï´Ù. ÁÖÀÇÇϽÃÁö ¾ÊÀ¸½Å´Ù¸é ½É°¢ÇÑ µÎÅëÀÌ ¿Ã ¼öµµ ÀÖ½À´Ï´Ù. ÀÌÁ¦ ¸Å°³º¯¼ö°¡ ¹«¾ùÀÌ°í ¹«¾ùÀ» ÇÏ´Â °ÍÀÎÁö¸¦ ÀÌÇØÇϼÌÀ¸´Ï, ¸ÚÁø °ÍÀ» ÇØ º¾½Ã´Ù. ƯÁ¤ ¸Å°³º¯¼ö¸¦ ¿ä±¸ÇÏ°í ½ÍÁö ¾Ê´Ù¸é ¾î¶»°Ô ÇÏ¸é µÉ±î¿ä? ¾Æ´Ï¸é ¿©·¯ °³ÀÇ ¸Å°³º¯¼ö¸¦ ¹Þ°í ½ÍÀ¸½Ç °ÍÀÔ´Ï´Ù. ·çºñ¿¡¼­´Â µÎ °¡Áö ¸ðµÎ °¡´ÉÇÕ´Ï´Ù. ·çºñ´Â ¸Þ¼Òµå¿¡ ¼±ÅÃÀû(optional)ÀÎ ¸Å°³º¯¼ö¸¦ Áö¿øÇÕ´Ï´Ù. ½ÇÁ¦·Î´Â ¼±ÅÃÀûÀ̶ó±âº¸´Ù´Â ±âº»°ªÀ» ÇÒ´çÇÒ ¼ö ÀÖ´Ù´Â °Í¿¡ ´õ °¡±õ½À´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°½À´Ï´Ù. {{{def new_method(a = "This", b = "is", c = "fun") puts a + ' ' + b + ' ' + c + '.' end new_method('Rails') ¡æ Rails is fun.}}} ÀÌ Å×Å©´ÐÀº ¸Å°³º¯¼ö³ª Áö¿ª º¯¼ö°¡ 99%ÀÇ °æ¿ì¿¡ ƯÁ¤ÇÑ °ªÀ¸·Î ¸Þ¼Òµå°¡ µ¿ÀÛÇÏ´Â °æ¿ì¶ó¸é ¸Å¿ì À¯¿ëÇÏÁö¸¸ ¸Å¹ø ±× °ªÀ» ¹Ù²Ü ¼öµµ ÀÖ½À´Ï´Ù. ±âº»°ªÀ» »ç¿ëÇÏ°í ½ÍÀ» ¶§¸¶´Ù ¸Þ¼Òµå·Î {{{nil}}}°ªÀ» º¸³»¸é ¸Þ¼Òµå°¡ ÀÌ°ÍÀ» ¹Þ¾Æ¼­ ÇÊ¿äÇÑ °ÍÀ» °Ë»çÇÏ¿© °É·¯³»°í, ÀÌ·¡Àú·¡ ó¸®ÇÒ ¼ö ÀÖ°ÚÁö¸¸ ÀÌ°ÍÀÌ Å¸ÀÔÀ» º¸Á¸ÇØÁÖ´Â °Íµµ ¾Æ´Ï°í º°·Î ÇÒ ÇÊ¿ä¾ø´Â ÀÏÀÔ´Ï´Ù. ±âº»°ªÀ» Á¤ÇØÁÙ ¼ö ÀÖ´Â ÀÌ·± Ư¡ ¶§¹®¿¡ ÇÊ¿äÇÑ ¸Å°³º¯¼ö¸¸ °£´ÜÈ÷ Á¤ÇÏ°í, ³ª¸ÓÁö´Â ±×´ë·Î µÑ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸ ÀÌ Æ¯Â¡À» ¾²·Á¸é ¸Å°³º¯¼ö°¡ °°Àº ¼ø¼­´ë·Î ÀÖ¾î¾ß ÇÏ°í, ¸ñ·Ï¿¡¼­ ´Ù¸¥ ¸Å°³º¯¼ö¸¦ °Ç³Ê¶Ù¸é ¾È µË´Ï´Ù. ÀÚÁÖ ¸í½ÃÀûÀ¸·Î Á¤ÇÏÁö ¾ÊÀ» °ÍµéÀ» µÚÂÊ¿¡ ³õ´Â °ÍÀÌ ÁÁ°ÚÁö¿ä. ¸Å°³º¯¼ö ¸ñ·ÏÀº °¡º¯ÀûÀÏ ¼ö ÀÖ½À´Ï´Ù. ³Ñ°ÜÁØ ¸Å°³º¯¼öµé°úÀÇ °ü°è¸¦ Ãâ·ÂÇÏ´Â ´õ ÁÁÀº ¸Þ¼Òµå¸¦ ¸¸µé¸é ¸Þ¼Òµå´Â ÀÌ·¸°Ô µË´Ï´Ù. {{{ def print_relation(relation, *names) puts "My #{relation} include: #{names.join(', ')}." end print_relation("cousins", "Morgan", "Miles", "Lindsey") ¡æ My cousins include: Morgan, Miles, Lindsey.}}} ¸ñ·Ï¿¡´Â ¸î¸íÀÌ ¿Àµç °£¿¡ À̸§À» ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸· ¸Å°³º¯¼öÀÇ ½Äº°ÀÚ ¾Õ¿¡ º°Ç¥(*) ¹®ÀÚ¸¦ ³õÀ¸¸é °¡º¯ ±æÀÌ ¸ñ·ÏÀ¸·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦·Î´Â °´Ã¼¿¡¼­ ¹è¿­ÀÌ »ý¼ºµÈ °ÍÀε¥, ±×·¸±â ¶§¹®¿¡ join ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ÀÌ Å×Å©´ÐÀº °´Ã¼ÀÇ ¸ñ·ÏÀ» ´Ù·ç°Å³ª ¸Þ¼ÒµåÀÇ À¯¿¬¼ºÀ» ÃÖ´ëÈ­ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦µé¾î ¸Þ¼Òµå¸¦ ¿©·¯ ¹ø È£ÃâÇϱ⺸´Ù Çϳª ÀÌ»óÀÇ °´Ã¼µéÀº Çѹø¿¡ ³Ñ°Ü È£ÃâÇÏ´Â °æ¿ì¿¡µµ À¯¿ëÇÕ´Ï´Ù. === ¸Þ¼Òµå »ç¿ëÇϱâ === ÀÌÁ¦ ¾î¶»°Ô ¸Þ¼Òµå¸¦ ¸¸µå´ÂÁö ¹è¿üÀ¸´Ï, ¾î¶»°Ô ÇÏ¸é ´õ È¿°úÀûÀ¸·Î »ç¿ëÇÏ´ÂÁö¸¦ ¾Ë°í ½ÍÀ» °ÍÀÔ´Ï´Ù. ÀÌÀü ÄÚµå ¿¹Á¦¿¡¼­ º¸¾ÒµíÀÌ ¸Þ¼Òµå È£ÃâÀº ¸Þ¼Òµå À̸§¿¡ ¸Å°³º¯¼ö°¡ ÀÖ´Ù¸é ¸Å°³º¯¼ö¸¦ ºÙ¿©¼­ È£ÃâÇÏ¸é µÉ ¸¸Å­ °£´ÜÇÑ °ÍÀÔ´Ï´Ù. ¸Þ¼Òµå È£ÃâÀÇ Çü½ÄÀº ¿©·¯°¡Áö°¡ ÀÖ½À´Ï´Ù. ¾î¶² °æ¿ì¿¡ ¸Þ¼Òµå´Â ¸Å°³º¯¼ö¸¦ ¹ÞÁö ¾Ê±â ¶§¹®¿¡ ¸Å°³º¯¼ö¿Í ±×°ÍÀ» µÑ·¯½Î´Â °ýÈ£°¡ ÇÊ¿ä¾ø½À´Ï´Ù. ¿©·¯ °æ¿ì¿¡ °ýÈ£ ¾øÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¼ö ÀÖÁö¸¸ º°·Î ÁÁÀº ¹æ¹ýÀÌ ¾Æ´Õ´Ï´Ù. ¸Å°³º¯¼ö Çϳª¸¸À» È£ÃâÇÏ´Â °æ¿ì°¡ ¾Æ´Ï¶ó¸é µÎ ±ÛÀÚ ´õ ÃÄ ³Ö´Â °Í ¶§¹®¿¡ °¡µ¶¼ºÀ» ÇìÄ£´Ù¸é ¹Ùº¸°°Àº ÁþÀÌ°ÚÁÒ. ¿¹Á¦¸¦ º¸°Ú½À´Ï´Ù. {{{puts "Look ma! No parentheses!" puts("Look ma! No parentheses!") puts puts()}}} ¸ðµÎ ¿Ã¹Ù¸£°Ô puts¸¦ È£ÃâÇÑ °ÍÀÔ´Ï´Ù. óÀ½ µÎ ¿¹Á¦´Â °ýÈ£°¡ Çʼö°¡ ¾Æ´Ï¶ó´Â °ÍÀ» º¸¿©ÁÝ´Ï´Ù. ±× ´ÙÀ½ ¿¹Á¦´Â ¸Þ¼Òµå¿¡ ¸Å°³º¯¼ö°¡ ¾øÀ» ¼öµµ ÀÖ´Ù´Â °ÍÀ» º¸¿©ÁÝ´Ï´Ù. ´ëºÎºÐÀÇ ¸Þ¼Òµå´Â ¸Å°³º¯¼ö°¡ ÇÊ¿äÇÏ°í Á¦´ë·ÎµÈ °³¼öÀÇ ¸Å°³º¯¼ö¸¦ ¹ÞÁö ¸øÇϸé {{{ArgumentError}}}¸¦ ´øÁú °ÍÀÔ´Ï´Ù. ¸Þ¼Òµå¶õ °Í ´ë´ÜÇÏÁö ¾Ê³ª¿ä? ±×·¯³ª ±×°ÍÀ¸·Î ¹«¾ùÀ» ÇÏ´Â °ÍÀÌÁÒ? º¯¼öµéÀÌ ±× ¾È¿¡¼­ »ç¿ëµÇ°í ¹Ù±ùÀ¸·Î ³ª¿À¸é ¾µ¸ð¾ø¾îÁö´Âµ¥ ¸»ÀÔ´Ï´Ù. ¿©±â¼­ ¸Þ¼ÒµåÀÇ ¹Ýȯ°ªÀÌ µîÀåÇÏ°Ô µË´Ï´Ù. ¸Þ¼Òµå´Â Çϳª ÀÌ»óÀÇ °ªÀ» ¹Û¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¸Þ¼Òµå ¾È¿¡¼­ ¹ÝȯÇÕ´Ï´Ù. ¸Þ¼Òµå´Â Ç×»ó °ªÀ» ¹ÝȯÇϴµ¥ ¸í½ÃÀûÀ¸·Î °áÁ¤µÇÁö ¾Ê¾ÒÀ¸¸é {{{nil}}}À» ¹Ýȯ(¸Þ¼Òµå°¡ Á¤ÀǵǾúÀ» ¶§¿¡µµ ·çºñ´Â {{{nil}}}À» ¹ÝȯÇÏÁÒ)Çϰųª ¸Þ¼Òµå ¾È¿¡¼­ ¾²ÀÎ ¸¶Áö¸· °ªÀ» ¹ÝȯÇÕ´Ï´Ù. ¿¹¸¦ µé¾î {{{def return_me(value) scoped_value = value end def echo_me(value) value end def multi_return return 'more', 'than', 'one' end my_value = return_me('this is fun!') puts my_value ¡æ this is fun! one, two, three = multi_return puts one + three ¡æ more one }}} ¸Þ¼Òµå ¾È¿¡ ¹Ýȯ°ªÀÌ ¾øÀ» °æ¿ì¿¡´Â ¸Þ¼Òµå¿¡¼­ »ç¿ëÇÑ ¸¶Áö¸· °ªÀÌ ¹ÝȯµÈ´Ù. °ªÀº ù ¹ø° ¿¹Á¦Ã³·³ º¯¼ö°¡ µÉ ¼öµµ ÀÖ°í, »ý¼ºµÈ °´Ã¼°¡ µÉ ¼öµµ ÀÖ°í(¹®ÀÚ¿­ Ç¥Çö ±× ÀÚü¸¦ ÇÑ ÁÙ¿¡ ³ÖÀ¸¸é ¹®ÀÚ¿­ °´Ã¼°¡ »ý¼ºµÈ´Ù) µÎ ¹ø° ¿¹Á¦Ã³·³ ¸Þ¼ÒµåÀÇ ¸¶Áö¸· ÁÙ¿¡¼­ ÂüÁ¶ÇÏ´Â ¾î¶² °´Ã¼µçÁö µÉ ¼ö ÀÖ´Ù. µû¶ó¼­ ù ¹ø° ¿¹Á¦Ã³·³, ¹ÝȯÇÏ°í ½ÍÀº °ªÀ» ¸¶Áö¸· °ªÀ¸·Î ÇÏ¸é ¹Ýȯ ¸í·ÉÀ̳ª ¸¶Áö¸· ÂüÁ¶°¡ ²À ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï´Ù. ÀÌ·± °æ¿ì°¡ ¾Æ´Ï¶ó¸é µÎ ¹ø° ¿¹Á¦¿¡¼­´Â °ªÀ» ¹ÝȯÇÏ´Â ¹æ¹ý Áß ¸¶Áö¸· ÁÙÀÇ ÂüÁ¶°ªÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ°í, ¸¶Áö¸· ¿¹Á¦´Â ¹Ýȯ ¹®ÀÇ »ç¿ë¹ýÀ» º¸¿©ÁÖ°í ÀÖ´Ù. ¸¶Áö¸· ¿¹Á¦´Â (º¯¼ö ´ëÀÔ¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸¾Ò´ø Àý¿¡¼­ ¹è¿üµíÀÌ) ¸Þ¼Òµå ¹Ýȯ½Ã¿¡ ¹Ýȯ¹®°ú ÇÔ²² º´·ÄÀûÀ¸·Î º¯¼ö¿¡ °ªÀ» ´ëÀÔÇÏ´Â °ÍÀ» º¸¿©ÁØ´Ù. ´ëÀÔ¹®ÀÇ ÁÂÇ׿¡¼­ ¸ðÀº ¹è¿­À» °£´ÜÈ÷ ³õÀ» ¼ö Àֱ⠶§¹®¿¡ ¹è¿­¿¡ °ªÀ» ³õ´Âµ¥¿¡µµ ÀÌ ¹æ¹ýÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. == ºí·Ï°ú Proc °´Ã¼ == ÀÌ ÀåÀÇ Àü¹ÝºÎ¿¡¼­ ºí·Ï¿¡ ´ëÇؼ­ ¾Ë¾Æº¸¾ÒÁö¸¸, ÀÌÁ¦ ´õ ±íÀÌ ¾Ë¾Æº¸·Á°í ÇÕ´Ï´Ù. ºí·ÏÀº ·çºñ¿¡¼­ ¾ÆÁÖ °­·ÂÇÑ °³³äÀÔ´Ï´Ù. ±×·¯³ª »õ·Î ¹è¿ì´Â »ç¶÷¿¡°Ô´Â È¥¶õ½º·¯¿ï ¼öµµ Àֱ⠶§¹®¿¡ ¾à°£ÀÇ ³íÀÇ°¡ ÇÊ¿äÇÕ´Ï´Ù. ·çºñ¿¡¼­ ºí·ÏÀº ¹®¸Æ»óÀ¸·Î ½ÇÇàÇÒ ÇÊ¿ä°¡ ÀÖ´Â ·çºñ Äڵ带 ´ã°í ÀÖ´Â °´Ã¼ÀÔ´Ï´Ù. ÄÚµå ºí·ÏÀÌ °´Ã¼¶ó´Â °ÍÀÌ ÀÌÇØ°¡ µÇÁö ¾Ê°ÚÁö¸¸ ·çºñ¿¡ ÀÖ´Â ¸ðµç °ÍÀº °´Ã¼¶ó´Â »ç½ÇÀ» ±â¾ïÇØ ÁÖ¼¼¿ä. === ºí·Ï ±âÃÊ === ÀÌÀü¿¡ ºí·ÏÀº °£´ÜÈ÷ {{{do}}}/{{{end}}} ±¸Á¶·Î µÑ·¯½ÎÀÎ ÄÚµå¶ó°í ÇßÁö¸¸, ´ÜÁö ±×°Í »ÓÀÎ °ÍÀº ¾Æ´Õ´Ï´Ù. ºí·ÏÀº ¿©·¯ °¡Áö ¹æ¹ýÀ¸·Î ±¸¼ºÇÒ ¼ö ÀÖÀ¸¸ç ±×·¸°Ô ÇÔÀ¸·Î½á Äڵ带 ´ã°í ÀÖ´Â °´Ã¼¸¦ »ý¼ºÇÏ¿© ¸Þ¼Òµå·Î ³Ñ°ÜÁְųª º¯¼ö¿¡ ´ã¾ÆµÑ ¼ö ÀÖ½À´Ï´Ù. °£´ÜÈ÷ ¸»Çؼ­, ·çºñ ÄÚµå ºí·ÏÀº À̸§ÀÌ ºÙ¾îÀÖÁö ¾ÊÀº ¸Þ¼Òµå¿Í ºñ½ÁÇÕ´Ï´Ù. ¾Æ¸¶µµ CÀÇ ÇÔ¼ö Æ÷ÀÎÅͳª C++ÀÇ ÇÔ¼ö °´Ã¼, ÆÄÀ̽ãÀÇ ¶÷´Ù¿Í ¸®½ºÆ® ÇÔÃà, ÆÞÀÇ À͸í ÇÔ¼ö, ÀÚ¹ÙÀÇ ÀÍ¸í ³»ºÎ ÇÔ¼ö, ȤÀº Á» ´õ °¡±î¿î ¿¹·Î ½º¸ôÅäÅ©³ª ¸®½ºÇÁÀÇ ºí·Ï°ú ¸Å¿ì ºñ½ÁÇÏ´Ù°í »ý°¢ÇÏ½Ã¸é ´õ ÀÌÇØ°¡ ½¬¿ï ¼öµµ ÀÖ½À´Ï´Ù. ¹æ±Ý ¿¹·Î µç ¾ð¾îµé Áß¿¡¼­ »ç¿ëÇØ º¸½Å ¾ð¾î°¡ ÀÖÀ¸½Ã°Ç Àͼ÷ÇÑ °ÍÀÌ ¾øÀ¸½Ã°Ç °£¿¡ ÀÌ°ÍÀº ÀÌ»óÇÑ ÀÏÀÌ ¾Æ´Õ´Ï´Ù. º¸Åë ¾ð¾î Àü¹®°¡°¡ ¾Æ´Ï°í¼­´Â »ý¼ÒÇÑ °³³äÀÔ´Ï´Ù. ¿î ÁÁ°Ôµµ, ¾î¶² ¾ð¾î¿¡¼­µçÁö ¾ÆÁÖ Áß¿äÇÑ ÀÌ °³³äÀ» Á¦°¡ °¡¸£Ãĵ帮°Ú´Ù´Â °Ì´Ï´Ù! ±×¸®°í ±×°É ±»ÀÌ ¾È ¹è¿ì½Ã°Ú´Ù°í ÇϽôõ¶óµµ ¾ÈŸ±õÁö¸¸ ÀÌ°Í ¾øÀÌ´Â ·çºñ Äڵ带 ÀÛ¼ºÇÏ½Ç ¼ö°¡ ¾ø½À´Ï´Ù. ºí·ÏÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÎ ¸Þ¼Òµå ¸Å°³º¯¼ö¸¦ Çѹø º¸°Ú½À´Ï´Ù. ¸¹Àº ¸Þ¼ÒµåµéÀÌ ºí·ÏÀ» ¸Å°³º¯¼ö·Î ¹Þ´Âµ¥ ±× Áß¿¡ Çϳª¸¦ Áö±Ý º¾½Ã´Ù. {{{ myarray = %w{one two three four} myarray.each {|element| print "[" + element + "]... " } ¡æ [one]... [two]... [three]... [four]... }}} ÀÌ ÄÚµå Á¶°¢Àº °£´ÜÈ÷ {{{each}}} ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ¹è¿­À» ¹Ýº¹½ÃÅ°°í °¢ ¿ø¼ÒµéÀ» ÄÚµå ºí·ÏÀ¸·Î ³Ñ°ÜÁÝ´Ï´Ù. ÄÚµå ºí·ÏÀº ¹è¿­ÀÇ ¿ø¼Ò¸¦ ÀÎÀÚ·Î Ãë±ÞÇÏ°í ¸Þ¼Òµå ÀÎÀÚ°¡ µÈ °Í °°Àº È¿°ú¸¦ ÁÝ´Ï´Ù. ¿©±â¼­´Â ÄÚµå ºí·ÏÀ» Áß°ýÈ£¸¦ ÀÌ¿ëÇÏ¿© ±¸¼ºÇÏ¿´½À´Ï´Ù. ÀÌ°ÍÀº {{{do}}}/{{{end}}} Á¶ÇÕÀ» »ç¿ëÇÏ´Â °Í ÀÌ¿Ü¿¡ ÄÚµå ºí·ÏÀ» Çü¼ºÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ºñ·Ï {{{each}}} ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ÄÚµå ºí·ÏÀ» ¿¬ °Íó·³ º¸ÀÌÁö¸¸ ½ÇÁ¦·Î´Â ÄÚµå ºí·ÏÀ» ¸Å°³º¯¼öÈ­ÇÏ¿© {{{each}}} ¸Þ¼Òµå¿¡ ³Ñ°ÜÁØ °ÍÀÔ´Ï´Ù. ¹«½¼ ¶æÀÎÁö ÀÌÇØÇÏÁö ¸øÇϽðÚÀ¸¸é ¾Æ¸¶µµ ´ÙÀ½ ¿¹Á¦¸¦ »ìÆ캸½Ã¸é ¸íÈ®È÷ ¾Æ½Ç ¼ö ÀÖÀ¸½Ç °ÍÀÔ´Ï´Ù. ÀÌ¹Ì °³³äÀ» ÀâÀ¸¼Ì´Ù¸é ´ÙÀ½ ¹®´ÜÀ¸·Î ³Ñ¾î°¡¼¼¿ä. ¶È°°Àº ¸»À» ¹Ýº¹ÇÏ´Â °ÍÀ̴ϱî¿ä. ´ÙÀ½ ÄÚµå ÁÙÀ» ¶¼¾î³õ°í °¢°¢ÀÇ È£Ã⠺κÐÀ» ºÐ¸®ÇÏ¿© º¸°Ú½À´Ï´Ù. {{{ myarray.each {|element| print "[" + element + "]... " } }}} ¸ÕÀú ¹è¿­ °´Ã¼ÀÎ {{{myarray}}}ÀÇ {{{each}}} ¸Þ¼Òµå È£ÃâÇÕ´Ï´Ù. ¸Þ¼Òµå´Â ºí·ÏÀ» ÀÎÀÚ·Î Ãë±ÞÇÕ´Ï´Ù. ´Ù½Ã ¸»ÇÏ¸é ½ÇÇàÇÏ·Á°í ÇÏ´Â ÄÚµå ºí·ÏÀ» ¸Å°³º¯¼ö·Î ¹Þ½À´Ï´Ù. ÀÌ ºí·ÏÀº ÀÌÀü¿¡ º¸¾Ò´ø {{{begin}}}/{{{end}}} ºí·Ï°ú ¸Å¿ì À¯»çÇÕ´Ï´Ù. ¿øÇÑ´Ù¸é, ´ÙÀ½°ú °°Àº ÄÚµå·Î ´Ù½Ã ¾µ ¼öµµ ÀÖ½À´Ï´Ù. {{{ myarray.each do |element| print "[" + element + "]... " end }}} °£´ÜÈ÷ Áß°ýÈ£°¡ {{{do}}}/{{{end}}}·Î ´ëüµÇ¾ú´Ù´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ. µÎ °¡Áö Ç¥Çö ¹æ½Ä ¸ðµÎ °°Àº ÀÏÀ» ÇÏÁö¸¸ ÇÑ µÎÁÙÂ¥¸® Äڵ忡¼­´Â Áß°ýÈ£ Ç¥Çö ¹æ½ÄÀÌ ´õ °£°áÇÏ°í ÀÌÇØÇϱ⠽±½À´Ï´Ù. ³ªÁß¿¡ ¿©·¯ºÐ²²¼­ ÀÛ¼ºÇϽŠ¸Þ¼Òµå¿¡¼­ ºí·ÏÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ» ¹è¿ï ¶§ ³íÀÇÇØ º¼ ÀÌ·¯ÇÑ ¸Þ¼ÒµåÀÇ °üÁ¡¿¡¼­ ÄÚµå´Â ·çºñ°¡ ºí·ÏÀÇ ¸Å°³º¯¼ö¸¦ ³Ñ°ÜÁÖ°í ±× ºí·ÏÀ» ½ÇÇàÇÏ°Ô ÇÕ´Ï´Ù. ·çºñ°¡ ÀÌ·¸°Ô ÇÏ°í ºí·ÏÀÇ °ªÀÌ ÀÖ´Ù¸é ºí·ÏÀÇ °ªÀ» ¹ÝȯÇÏ°í ´õ Á¤È®ÇÏ°Ô´Â ¸Þ¼ÒµåÀÇ °ªÀ» ¹ÝȯÇÕ´Ï´Ù. °³³äÀ» ¹Ù·ÎÀâ±â À§ÇÏ¿© Á¦¾î È帧À» ±×¸²À¸·Î Ç¥ÇöÇØ º¾½Ã´Ù. ¾ÆÁ÷±îÁö ÀÌÇØÇϽÃÁö ¸øÇϽôõ¶óµµ ÀÌÇØÇÏ¼Å¾ß ÇÕ´Ï´Ù. ºÎ·Ï AÀÇ ¹®¼­È­ Àý¿¡ ÀÖ´Â ¸µÅ©¸¦ ¹æ¹®ÇØ º¸½Ã°í, ±¸±ÛÀ» ã¾Æº¸½Ã°í, ºÎ·Ï AÀÇ ·çºñ ¾ð¾î Àý¿¡ ¸ð¾Æ³õÀº ºí·Î±×¸¦ ¹æ¹®ÇØ º¸¼¼¿ä. Á¦°¡ ¿©·¯ºÐÀ» ÀÌÇؽÃÅ°Áö ¸øÇß´Ù°í ÇÏ´õ¶óµµ ´©±º°¡, ¾îµð¼±°¡ ¿©·¯ºÐÀÌ ÀÌÇØÇÏ½Ç ¼ö ÀÖ´Â ¹æ¹ýÀ¸·Î ÀÌ °³³äÀ» ¼³¸íÇØ ³õ¾ÒÀ» °ÍÀÔ´Ï´Ù. Àú´Â ÀÌ°ÍÀÌ ·çºñ¿¡¼­ ¾ÆÁÖ ¸ÚÁö°í, À¯¿ëÇÏ°í °­·ÂÇÏ°í ÇʼöÀûÀÎ °³³äÀÌ ¾Æ´Ï¾ú´Ù¸é ÀÌ °³³äÀ» ¿Ïº®È÷ ÀÌÇØÇÏÁö ¾Ê¾ÒÀ» °ÍÀÔ´Ï´Ù. Á¤¸» ºí·ÏÀ» ÀÌÇØÇϼ̴ٸé ÀÌÁ¦ ¿©·¯ºÐ²²¼­ ÀÛ¼ºÇϽŠÄڵ忡¼­ ÀÌ°ÍÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¹è¿öº¾½Ã´Ù. === Proc°ú ºí·Ï === {{{Proc}}} °´Ã¼´Â ºí·ÏÀÌ º¯¼ö¿¡ ´ã°ÜÁø ÇüŶó°í »ý°¢Çϼ¼¿ä. µÑÀÇ Â÷ÀÌÁ¡ÀÌ ÀÖÁö¸¸ ¾ÆÁ÷±îÁö´Â ²À ¾Ë¾Æ¾ß ÇÒ Á¤µµ·Î Áß¿äÇÑ ³»¿ëÀº ¾Æ´Õ´Ï´Ù. ±×¸®°í ¶§°¡ µÇ¸é ¾Ë°Ô µÇ°ÚÁö¿ä. °¡Àå ±Ùº»ÀûÀÎ Â÷ÀÌÁ¡Àº ¼º´ÉÀÌÁö¸¸ ÀÌ°ÍÀº ³¡³¯ ¶§ ³íÀÇÇÏ°Ú½À´Ï´Ù. {{{Proc}}} °´Ã¼´Â °£´ÜÈ÷ ¸»Çؼ­ ½ÇÇà°¡´ÉÇÑ ÄÚµå ºí·ÏÀ» ´ã°í ÀÖ´Â {{{Proc}}} Ŭ·¡½ºÀÇ °´Ã¼ÀÔ´Ï´Ù. {{{ myproc = Proc.new {|animal| puts "I love #{animal}!"} myproc.call("pandas") ¡æ I love pandas! }}} º¸½Ã´Ù½ÃÇÇ {{{Proc}}}Àº »ý¼ºÀÚ°¡ È£ÃâµÉ ¶§ »ý¼ºµÇ°í ¸Å°³º¯¼ö·Î ºí·ÏÀ» ¹Þ½À´Ï´Ù. ºí·Ï¿¡ ÀÖ´Â ÄÚµå´Â {{{Proc}}}ÀÇ ÀνºÅϽº ³»¿¡ ¼û¾î¹ö¸®°í ¾ðÁ¦µçÁö È£ÃâÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. {{{Proc}}} °´Ã¼´Â ÄÚµå ºí·ÏÀ» »ý¼ºÇÏ°í ±×°ÍÀ» ³Ñ°ÜÁְųª ±×°ÍÀ¸·ÎºÎÅÍ »õ·Î¿î ºí·ÏÀ» »ý¼ºÇÒ ¶§ ƯÈ÷ À¯¿ëÇÕ´Ï´Ù. {{{Proc}}} °´Ã¼ ³»ÀÇ Äڵ带 È£ÃâÇÏ·Á¸é {{{call}}} ¸Þ¼Òµå¸¦ È£ÃâÇÏ¸é µÇ°í, ÀÌ ¸Þ¼Òµå°¡ ÀÌÀü¿¡ ³Ñ°ÜÁÖ¾ú´ø ºí·ÏÀÇ ³»ºÎ¿¡ ÀÖ´Â Äڵ带 È£ÃâÇÏ°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î, Å« ÅÚ·¹ºñÀü ¹æ¼Û±¹ÀÌ »õ·Î¿î ¼î ÇÁ·Î±×·¥ ¿¹Á¤Ç¥¿¡ È£½ºÆ®¿Í ÇÔ²² È­¸é¿¡ º¸¿©ÁÖ´Â ·çºñ ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ´Â ÀÏÀ» ¸Ã°å´Ù°í ÇսôÙ. ¹êÁ¶ ºôÀÇ ºê¸´Áö ºê¸®°ÔÀ̵å, ¶óÆÄ¿¤ ¶ó¹Ì·¹½º ·Îµå¸®°Ô½º µå ¿¹¼öÀÇ ÄíÄ¡³ª ÀÌÅ»¸®¾Æ³ª¿Í ÆÒ´õ!¸ð´Ï¿ò°ú °°Àº ¼î ÇÁ·Î±×·¥µé ¸»ÀÌÁÒ. ¿©·¯ºÐÀº ±×Àú ÅؽºÆ®¸¦ Äֿܼ¡ Ç¥½ÃÇÏ°í, ¹æ¼Û±¹ÀÇ È­·ÁÇÑ ±×·¡ÇÈ ¹é¿£µå°¡ ³ª¸ÓÁö¸¦ ¸ðµÎ ´Ù ÇÒ °Ì´Ï´Ù. ³×, ±×·¸½À´Ï´Ù. ¹æ¼Û±¹ÀÇ ±â¼úÀÌ ±× Á¤µµ·Î ´ë´ÜÇÑ °ÍÀÌÁÒ. À¯ÀÏÇÑ ¹®Á¦Á¡Àº È£½ºÆ®°¡ ³Ê¹« ÀÚÁÖ ¹Ù²ï´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ¶óÆÄ¿¤¾¾°¡ °©Àڱ⠼î Áß°£ Âë¿¡ ÄíÄ¡³ª ÀÌÅ»¸®¾Æ³ªÀÇ ÁÖ¹æÀåÀ» ȣġ¹Î¾¾·Î ±³Ã¼Çß´Ù°í ÇսôÙ. ¼î À̸§°ú È£½ºÆ® À̸§À» µû·Î Á¤ÇÏ¿© È£½ºÆ® À̸§À» ¹æ¼Û Áß¿¡ ¹Ù²Ü ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. "ºí·ÏÀ» ÀÌ¿ëÇÏ¸é µÇ°Ú±º!"À̶ó°í ¸»¾¸ÇϽðÚÁö¿ä. {{{ def make_show_name(show) Proc.new {|host| show + " with " + host} end show1 = make_show_name("Practical Cannibalism") show2 = make_show_name("Cotillions in the Amazon") show1.call("H. Annabellector") ¡æ Practical Cannibalism with H. Annabellector show2.call("Jack Hannah") ¡æ Cotillions in the Amazon with Jack Hannah show1.call("Kirstie Alley") ¡æ Practical Cannibalism with Kirstie Alley }}} ÀÌÀü¿¡ º» ´ë·Î ÀÌ°ÍÀº ÀüÇüÀûÀÎ {{{Proc}}} È£ÃâÀÌÁö¸¸, ¿©±â ¹º°¡ ÁøÇàµÇ°í ÀÖ´Â °Í¿¡ ÁÖ¸ñÇϽʽÿÀ. {{{Proc}}}ÀÌ »ý¼ºµÉ ¶§ ¼î ÇÁ·Î±×·¥ÀÇ À̸§À» ³Ñ°ÜÁÖ°í, ±× ´ÙÀ½ºÎÅÍ´Â ÀÌ°Í¿¡ ´ëÇÏ¿© ¾ð±ÞÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ¾î¶»°Ô ÀÌ°ÍÀÌ °¡´ÉÇÒ±î¿ä? make_show_name ¸Þ¼Òµå·Î ³Ñ¾î°£ ¼î ¸Å°³º¯¼ö°¡ ¸Þ¼Òµå°¡ ³¡³ª¼­ ½ºÄÚÇÁ ¹ÛÀ¸·Î ³ª°¡¸é¼­ Á¦°ÅµÇ¾î¾ß ÇÒ °ÍÀε¥ ¸»ÀÌÁÒ. ¾Æ, ÇÏÁö¸¸ ÀÌ°ÍÀÌ {{{Proc}}} °´Ã¼ÀÇ ¾Æ¸§´Ù¿î Á¡ÀÔ´Ï´Ù. »ý¼ºµÇ¾úÀ» ´ç½ÃÀÇ ¹®¸ÆÀ» º¸Á¸ÇÏ°í Ç×»ó ÀÌ°Í¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀÌ ¿ì¸®°¡ º°´Ù¸¥ ³ë·ÂÀ» ±â¿ïÀÌÁö ¾Ê¾Ò´Âµ¥µµ ¼î ÇÁ·Î±×·¥ÀÌ À̸§ÀÌ º¸Á¸µÇ´Â ÀÌÀ¯ÀÔ´Ï´Ù. {{{Proc}}} °´Ã¼¸¦ »ý¼ºÇÏ´Â ´Ù¸¥ ¹æ¹ýÀº ÄÚµå ºí·ÏÀ» ¶÷´Ù({{{lambda}}}) ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© ¹­´Â °ÍÀÔ´Ï´Ù. ÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °ÍÀº {{{Proc.new}}}¸¦ È£ÃâÇÏ´Â °Í°ú µ¿ÀÏÇÕ´Ï´Ù. {{{ myproc = lambda {|x| puts "Argument: #{x}"} myproc.call("Texas forever!") ¡æ Argument: Texas forever! }}} {{{lambda}}} ÇÔ¼ö°¡ ¸¶Ä¡ {{{Proc.new}}}ó·³ ÄÚµå ºí·ÏÀ» ¹Þ¾Æ¼­ {{{Proc}}}¿¡ ¹­´Â °ÍÀ» º¸°í °è½Ê´Ï´Ù. À§ÀÇ ¿¹Á¦¸¸À¸·Î´Â ¼­·Î ´Ù¸¥Á¡À» ¾Ë ¼ö ¾ø½À´Ï´Ù. ù°·Î {{{lambda}}}·Î »ý¼ºµÈ {{{Proc}}} °´Ã¼´Â {{{Proc.new}}}·Î »ý¼ºµÈ °Íº¸´Ù ÀÎÀÚÀÇ °Ë»ç°¡ ´õ ¾ö°ÝÇÏ´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù. {{{ lproc = lambda {|a,b| puts "#{a + b} <- the sum"} nproc = Proc.new {|a,b| puts "#{a + b} <- the sum"} nproc.call(1, 2, 3) ¡æ 3 lproc.call(1, 2, 3) ¡æ !ArgumentError (wrong number of arguments (3 for 2)) }}} {{{Proc.new}}}·Î »ý¼ºµÈ {{{Proc}}} °´Ã¼´Â ³Ê¹« ¸¹Àº ÀÎÀÚ¸¦ ³Ñ°ÜÁÙ °æ¿ì¿¡µµ Àß µ¿ÀÛÇÕ´Ï´Ù¸¸ ³ªÄ¡ °°Àº {{{lambda Proc}}}ÀÇ ÀÎÀÚ °Ë»ç´Â {{{ArgumentError}}} ¿¹¿Ü¸¦ ´øÁý´Ï´Ù. Âü ´ä´äÇϳ׿ä. ´ÜÁö ³Ê¹« ¸¹Àº ÀÎÀÚ¸¦ ³Ñ°ÜÁÖ¾ú´Ù°í Çؼ­ Àüü ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¸ØÃß´Ù´Ï¿ä. ÁÁÁö ¾ÊÀºµ¥¿ä. ¾î·µç µÑÀÌ ±¸º°µÇ´Â Á¡Àº ¿©·¯ºÐÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ È帧À» Á¦¾îÇÏ´Â ¹æ¹ý¿¡ ÀÖ½À´Ï´Ù. {{{lambda}}}·Î »ý¼ºµÈ °´Ã¼´Â °ªÀ» ¹ÝȯÇÒ ¶§ ºí·Ï ¹Ù±ùÀÇ È帧¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ¹Ý¸é¿¡, {{{Proc.new}}}·Î »ý¼ºµÈ {{{Proc}}}°´Ã¼´Â °ªÀ» ¹ÝȯÇÒ ¶§ ¹Ù±ù¿¡ ÀÖ´Â ¸Þ¼Òµå°¡ Á¾·áµÇ°Ô µË´Ï´Ù. {{{ def procnew new_proc = Proc.new { return "I got here..." } new_proc.call return "...but not here." end def lambdaproc new_proc = lambda { return "You get here..." } new_proc.call return "And I got here!" end puts lambdaproc ¡æ And I got here! puts procnew ¡æ I got here... }}} {{{procnew}}}ÀÇ °æ¿ì¸¦ »ìÆ캸¸é, ¹ÝȯµÈ °ªÀº ºí·Ï ³»¿¡¼­ ¹ÝȯÇÑ °ªÀÌ µË´Ï´Ù. ¶÷´Ù·Î »ý¼ºÇÑ {{{Proc}}} °´Ã¼´Â ´Ü¼øÈ÷ ±× °ªÀ» ºÎ¸ð ¸Þ¼Òµå¿¡ ¹ÝȯÇÏ°í ºÎ¸ð ¸Þ¼Òµå°¡ ÀÌ°ÍÀº º¯¼ö¿¡ ´ã°Å³ª ÇÊ¿äÇÏ´Ù¸é ¹ÝȯÇϰųª ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀÌ ±â¾ïÇÏ¼Å¾ß ÇÒ Áß¿äÇÑ ±¸º°µÇ´Â Á¡ÀÔ´Ï´Ù. ¿Ö³ÄÇϸé {{{Proc}}} °´Ã¼¸¦ ¸Þ¼Òµå ³»¿¡¼­ »ç¿ëÇϸ鼭 ¿Ö ¸Þ¼Òµå°¡ Áß°£¿¡ ºüÁ®³ª°¡´ÂÁö¸¦ ¾ËÁö ¸øÇÏ¿© ½ÉÇÑ µÎÅëÀ¸·Î °í»ýÇÒ ¼ö°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù. (°æÇè¿¡¼­ ¿ì·¯³ª¿À´Â ¸»ÀÔ´Ï´Ù!) ÀÌÁ¦ ¿©·¯ºÐÀº {{{Proc}}} °´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ºí·ÏÀ» ¿©·¯ºÐÀÇ ÄÚµå¾È¿¡ ³Ö¾úÀ» ¶§ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö¸¦ ÀÌÇØÇϼÌÀ¸´Ï, ÀÌÁ¦ ÀÌ°ÍÀ» ¾î¶»°ÔÇÏ¸é ¿©·¯ºÐÀÇ ¸Þ¼Òµå¿¡ ´õ ´Ü´ÜÈ÷ ÇÕÄ¡´ÂÁö¸¦ ¾Ë¾Æº¾½Ã´Ù. === ºí·Ï ¸¸µé±â === ¿©·¯ºÐ²²¼­ ÀÛ¼ºÇϽŠ¸Þ¼Òµå¿¡¼­ ºí·ÏÀ» µ¿ÀÛ½ÃÅ°´Â ¹æ¹ýÀÌ ¸î °¡Áö ÀÖ½À´Ï´Ù. ù ¹ø° ¹æ¹ýÀº ´Ù¸¥ °´Ã¼µéÀ» ´Ù·ê ¶§Ã³·³ {{{Proc}}} °´Ã¼¸¦ ¸Å°³º¯¼ö·Î ³Ñ°Ü¹Þ´Â ¹æ¹ýÀÔ´Ï´Ù. ÇÏÁö¸¸ ÀÌ°ÍÀº º°·Î ÁÁÀº ¹æ¹ý °°Áö´Â ¾Ê°í, ¼º´É¿¡ Ÿ°ÝÀÌ ÀÖ½À´Ï´Ù. Àú´Â ÀÌ Å¸°ÝÀ» ±â¸§Áø º£ÀÌÄÁ Á¶°¢À¸·Î Âû½Ï ¸Â´Â °Í°ú ȲȦÇÔ »çÀÌÀÇ ¼öÁØ¿¡ µÎ°í ½Í³×¿ä. ¿î ÁÁ°Ôµµ ·çºñ¿¡´Â ¾ß´Ü¹ý¼® ¶³ ÇÊ¿ä ¾øÀÌ ¼º´É ÀúÇϸ¦ ÃÖ¼ÒÈ­ÇÏ´Â ¸î °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ºí·ÏÀ» ¸Å¹ø ¿©·¯ºÐÀÇ Äڵ忡 ÅëÇÕ½ÃÅ°´Â ¹æ¹ýÀº ²Ï °£´ÜÇÕ´Ï´Ù. ±×Àú ¿©±âÀú±â¿¡ ÀÖ´Â ÇÊ¿äÇÑ À§Ä¡¿¡ {{{yield}}}¸¦ ÁÖÀÔÇÏ°í ¸Þ¼ÒµåÀÇ °æ°è¸¦ dzºÎÇÏ°Ô ÀÀ¿ëÇÏ¿© ÀÛÀº ÅëÇÕµÈ °³¹ß Á¢½Ã¿¡ ÇÕÃÄ ´ãÀº µÚ ¹Ù»èÇØÁú ¶§±îÁö 400µµ¾¾¿¡¼­ 15ºÐ°£ ±¸¿ì¸é µË´Ï´Ù. '''¹¬½ÃÀû ºí·Ï »ç¿ë''' {{{Proc}}} ¸Å°³º¯¼ö¸¦ ¾ò´Â °÷ÀÇ ¹Ù±ùÂÊ¿¡¼­´Â, ·çºñ¿¡¼­ ºí·ÏÀ» ¸Å°³º¯¼ö·Î »ç¿ëÇÏ´Â ¹æ¹ýÀº ÇÑ °¡Áö ¹Û¿¡ ¾ø½À´Ï´Ù. ±×·¯³ª ÀÌ ¹æ¹ýÀº ´õ Á÷°üÀûÀÏ »Ó¸¸ ¾Æ´Ï¶ó ´õ Àß ¼öÇàµË´Ï´Ù. Àú´Â ÀÌ°ÍÀ» ¹¬½ÃÀû ºí·Ï »ç¿ëÀ̶ó°í ºÎ¸£´Âµ¥ ¸Þ¼Òµå¿¡°Ô "¾îÀÌ, ³ª´Â ÀÌ ºí·ÏÀ» ¿©±â¼­ »ç¿ëÇÑ´Ù."¶ó°í ¾Ë·ÁÁÙ ¼ö ¾ø±â ¶§¹®ÀÌ°í, ±×¸®°í ³ª¼­ ±×°ÍÀ» ¸Þ¼Òµå ³»¿¡¼­ È£ÃâÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù. ±×Àú ºí·ÏÀÇ ÄÚµå Á¦¾î¸¦ ¾çº¸ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ¿¹Á¦ ¾øÀÌ´Â ÀÌÇØÇϱâ Èûµé°Ú±º¿ä. ±×·¡¼­ Á» °£´ÜÇÑ ÄÚµå Á¶°¢À» º¸¿©µå¸®°Ú½À´Ï´Ù. {{{ def yieldme print "1. Enter method. " yield print "3. Exit method." end yieldme { print "2. Enter block. "} ¡æ 1. Enter method. 2. Enter block. 3. Exit method. }}} ¿©±â¼­ ÀϾ´Â ÀÏ¿¡ ÁÖ¸ñÇØÁÖ¼¼¿ä. ¸ÕÀú ¸Þ¼Òµå·Î µé¾î°¡¼­ ù¹ø° ¸í·É¹®À» ¼öÇàÇÕ´Ï´Ù. µÎ¹ø°·Î, {{{yield}}}¸Þ¼Òµå°¡ È£ÃâµÇ°í ¿ì¸®ÀÇ ºí·ÏÀÌ ¼öÇàµË´Ï´Ù. ¾²·¹µå°¡ ÀÓ½ÃÀûÀ¸·Î ºí·Ï¿¡°Ô Á¦¾î±ÇÀ» ¾çº¸ÇÕ´Ï´Ù. ºí·ÏÀÌ Á¾·áµÇ¸é ºí·ÏÀ» È£ÃâÇÑ °÷À¸·Î Á¦¾î±ÇÀÌ µ¹¾Æ¿É´Ï´Ù. ¸¶Áö¸·À¸·Î ¸Þ¼ÒµåÀÇ ³ª¸ÓÁö ºÎºÐÀÌ ¼öÇàµË´Ï´Ù. ÀÌ°ÍÀÌ ¹è¿­¿¡ {{{each}}} ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿´À» ¶§ µ¿ÀÛÇÏ´ø ¹æ½ÄÀÔ´Ï´Ù. ¿ì¸®°¡ ÀÌ ¸Þ¼Òµå¸¦ ¾î¶² ÀÌÀ¯¿¡¼­µçÁö ´Ù½Ã ÀÛ¼ºÇÏ°í ½Í¾îÁ³´Ù°í ÇսôÙ. ¾Æ¸¶ ¿©·¯ºÐÀÇ ¾Ö¿Ïµ¿¹°ÀÎ ¹Ì±¹³Ê±¸¸®°¡ º¼¸µ ¼±¼ö¸¦ ÁÁ¾ÆÇÏ°í, ¸Þ¼ÒµåÀ» ´Ù½Ã ÀÛ¼ºÇ϶ó°í ¼³µæÇßÀ» °ÍÀÔ´Ï´Ù. ºí·ÏÀ» ¼öÇàÇϱâ À§Çؼ­ {{{yield}}}¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. {{{ def myeach(myarray) iter = 0 while (iter < myarray.length): yield(myarray[iter]) iter += 1 end end testarray = [1,2,3,4,5] myeach(testarray) {|item| print "#{item}:"} ¡æ 1:2:3:4:5: }}} ÀÌ ÄÚµå Á¶°¢¿¡¼­ ƯÈ÷ {{{while}}}ÀÌ ÀÖ´Â ÁÙÀº Á» ¾î·Æ°ÚÁö¸¸ ÀÌ°ÍÀº ÀÌÇØÇÒ ¼ö ÀÖÀ» Á¤µµ·Î ÃæºÐÈ÷ °£´ÜÇÑ ÄÚµå Á¶°¢À̱⠶§¹®¿¡ Á» Âü¾ÆÁÖ¼¼¿ä. {{{while}}} ºí·ÏÀº ¼øȯÀ» »ý¼ºÇϴµ¥, ÀÌ°ÍÀº ºí·Ï ¾È¿¡¼­ Äڵ带 ¿©·¯¹ø ¼öÇàÇÑ´Ù´Â ¶æÀÔ´Ï´Ù(53 ÆäÀÌÁö¿¡¼­ ¼øȯ¿¡ ´ëÇÏ¿© ´õ ÀÚ¼¼È÷ ¾Ë¾Æº¸½Ç ¼ö ÀÖ½À´Ï´Ù). º¹ÀâÇØ º¸ÀÌ°ÚÁö¸¸ ÀÌÀü°ú´Â °°Àº °³³äÀÌ Àû¿ëµË´Ï´Ù. ¸Þ¼Òµå´Â Á¦¾î±ÇÀ» ºí·Ï¿¡°Ô ³Ñ°ÜÁÝ´Ï´Ù. ¿©±â¼­ ´Ù¸¥ Á¡Àº ¸Å°³º¯¼ö¸¦ Äڵ带 ¹Ýº¹ÇÒ ¶§¸¶´Ù ¸Å¹ø ºí·ÏÀ¸·Î ³Ñ°ÜÁÖ¾ú´Ù´Â °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ ÀÛ¼ºÇÑ ÁýÇÕü(collection)¿¡¼­ {{{yield}}}¸¦ »ç¿ëÇϸé ÀÌ¿Í °°ÀÌ ¹Ýº¹ÀÚ¸¦ ÈǸ¢ÇÏ°Ô ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. '''¾ÚÆÛ»÷µå(&) ¸Å°³º¯¼ö''' ¸Þ¼ÒµåÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö ¾Õ¿¡ ¾ÚÆÛ»÷µå¸¦ µ¡ºÙÀÌ¸é ¸Þ¼Òµå·Î ³Ñ°ÜÁø ºí·ÏÀº Á¤»óÀûÀ¸·Î ¸Å°³º¯¼ö·Î ³Ñ°ÜÁÙ ¶§Ã³·³ {{{Proc}}}ÀÌ µË´Ï´Ù. ±Û½ê¿ä, ¿ÏÀüÈ÷ Á¤»óÀûÀ¸·Î ±×·¸´Ù´Â °ÍÀº ¾Æ´Ï°í ¾à°£ÀÇ ¼ö¹ýÀÌ ÀÖ½À´Ï´Ù. {{{ def ampersand(&block) block.call yield end ampersand { print "I'm gettin' called! " } ¡æ I'm gettin' called! I'm gettin' called! }}} ³Ñ°ÜÁØ ºí·ÏÀÌ {{{Proc}}}ÀÌ µÉ °ÍÀ̶ó°í ÇßÀ¸´Ï {{{call}}} ¸Þ¼Òµå¸¦ ¾µ ¼ö ÀÖ½À´Ï´Ù¸¸, {{{yield}}} ¿ª½Ã µ¿ÀÛÇÑ´Ù´Â °Í¿¡ ÁÖ¸ñÇϼ¼¿ä. ÀÌ°ÍÀº {{{call}}}À̳ª {{{yield}}}¸¦ °¢°¢ ´Ù¸¥ °æ¿ì¿¡¼­ ¾µ ¼ö ÀÖ´Â Àç¹ÌÀÖ°í À¯¿ëÇÑ ¼ö¹ýÀÔ´Ï´Ù. == ¿©·¯ºÐÀÇ °´Ã¼´Â Ŭ·¡½º°¡ ºÎÁ·ÇÕ´Ï´Ù! == ÀÌÀü¿¡ ¿©·¯¹ø ¾ð±ÞÇßµíÀÌ ·çºñ¿¡ ÀÖ´Â ¸ðµç °ÍÀº °´Ã¼ÀÔ´Ï´Ù. ¹°·Ð ·çºñ´Â °´Ã¼¸¦ ¹¦»çÇϴ Ŭ·¡½º¶ó´Â °ÍÀ¸·ÎºÎÅÍ °´Ã¼¸¦ »ý¼ºÇØ ³¾ ¼ö ÀÖ½À´Ï´Ù. C#, C++, ÆÄÀ̽ãÀ̳ª ÀÚ¹Ù¿Í °°Àº °´Ã¼ ÁöÇâ ¾ð¾î¿¡¼­ ÇÁ·Î±×·¥À» Â¥ º» °æÇèÀÌ ÀÖÀ¸½Ã´Ù¸é Ŭ·¡½º¿Í °´Ã¼ÀÇ °³³äÀº »ý¼ÒÇÑ °ÍÀÌ ¾Æ´Ò °ÍÀÔ´Ï´Ù. ±×·¯³ª ±×·± ¾ð¾îµéÀÇ °´Ã¼ ÁöÇâ ±¸Çö°ú ·çºñÀÇ ±¸ÇöÀº ±¸º°µÇ´Â Á¡ÀÌ ÀÖ½À´Ï´Ù. ÇÑ °¡Áö »ý¼ÒÇÑ °ÍÀº ·çºñ´Â °´Ã¼ÀÇ Å¸ÀÔÀ» ´Ù·ç´Â ¹æ¹ýÀÔ´Ï´Ù. C++À̳ª ÀÚ¹Ù´Â ´ÜÁö Á¤Àû(ȤÀº ¸í½ÃÀû)ÀΠŸÀÔÀ» ´Ù·ì´Ï´Ù. ÀÌ·± ½ÄÀ¸·Î ŸÀÔÀ» ´Ù·ç·Á¸é °´Ã¼ÀÇ Å¸ÀÔÀº ÄÄÆÄÀÏ ½Ã°£¿¡ Á¤ÀǵǾî¾ß ÇÏ°í ±×·¸Áö ¾ÊÀ¸¸é ÄÄÆÄÀÏ·¯°¡ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÕ´Ï´Ù. ´ëºÎºÐÀÇ Á¤ÀûÀ¸·Î ŸÀÔÀ» ´Ù·ç´Â ´ëºÎºÐÀÇ Çö´ë ¾ð¾îµéÀº Åõ¿µ(reflection)À̳ª µ¿ÀûÀ¸·Î ŸÀÔÀ» °¡Á®¿Ã ¼ö ÀÖ´Â ¸ðµâÀ» Á¦°øÇÕ´Ï´Ù. ±×·¯³ª ·çºñ´Â ŸÀÔÀ» ¿ÏÀüÈ÷ ´Ù¸¥ ¹æ¹ýÀ¸·Î Á¢±ÙÇÕ´Ï´Ù. ÆÄÀ̽ãÀ» »ç¿ëÇØ º¸½Å ÀûÀÌ ÀÖ´Ù¸é ÀÌ·± µ¿Àû ŸÀÔ¿¡ Àͼ÷ÇÒ °ÍÀÔ´Ï´Ù. ·çºñ´Â °°Àº ¾ÆÀ̵ð¾î¸¦ ÀÌ¿ëÇÏÁö¸¸ "´ö ŸÀÌÇÎ(duck typing)"À̶ó°í ºÎ¸¨´Ï´Ù(ÀÌ°ÍÀÌ Á» ´õ ¼³¸íÇϱ⠽±½À´Ï´Ù). attachment:duck.jpg ±×¸² 6: °¢°¢ÀÇ Å¬·¡½º°¡ {{{sayhello}}}¶ó´Â ¸Þ¼Òµå¸¦ ±¸ÇöÇÏ°í ÀÖ°í µÑ ´Ù ¸Þ½ÃÁö¿¡ ¹ÝÀÀÇÕ´Ï´Ù. {{{yourclass}}}¿¡ {{{smells}}}¸¦ Ãß°¡ÇÏ°í ½Í±º¿ä. C++À̳ª PHP ÇÁ·Î±×·¡¸Ó¿¡°Ô »ý¼ÒÇÒ¸¸ÇÑ(±×·¯³ª ÀÚ¹Ù³ª C# ÇÁ·Î±×·¡¸Ó¿¡°Ô´Â »ý¼ÒÇÏÁö ¾ÊÀ») ´Ù¸¥ °³³äÀº ¾ð¾î Àü¹Ý¿¡ °ÉÄ£ Ŭ·¡½º °èÃþÀÔ´Ï´Ù. ·çºñ¿¡¼­´Â ¸ðµç Ŭ·¡½º´Â Object Ŭ·¡½º¿¡¼­ ÆÄ»ýµÈ Class Ŭ·¡½ºÀÇ ÀνºÅϽºÀÎ °´Ã¼ÀÔ´Ï´Ù. ´ÙÀ½°ú °°Àº ÄÚµå·Î º¸¿©µå¸± ¼ö ÀÖ½À´Ï´Ù. {{{ puts File.class ¡æ Class puts File.superclass ¡æ Object puts Object.superclass ¡æ nil }}} Ŭ·¡½ºÀÇ »óÀ§ Ŭ·¡½º´Â ±× Ŭ·¡½º°¡ ¾îµð¼­ºÎÅÍ ÆÄ»ýµÇ¾ú´ÂÁö¸¦ ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù. ·çºñ¿¡¼­ Ŭ·¡½º°¡ ´Ù¸¥ Ŭ·¡½º·ÎºÎÅÍ ¸ðµç ¸Þ¼Òµå¿Í º¯¼ö¸¦ "»ó¼Ó"¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. °á°úÀûÀ¸·Î Ŭ·¡½º°¡ ´Ù¸¥ Ŭ·¡½º·ÎºÎÅÍ ÆÄ»ýµÇ¾ú´Ù¸é (¿¹¸¦ µé¾î ´Ù¸¥ Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó ¹Þ¾Ò´Ù¸é), »óÀ§ Ŭ·¡½ºÀÇ ¸ðµç ¸Þ¼Òµå¿Í º¯¼ö¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ·çºñÀÇ °áÇÔÀº ´Ù¸¥ ¸î¸î ¾ð¾îµé°ú ´Þ¸® Ŭ·¡½º°¡ Çѹø¿¡ ÇÑ Å¬·¡½º¿¡¼­¸¸ »ó¼Ó¹ÞÀ» ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î¼­ Ŭ·¡½º´Â ´Ù¸¥ Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀº ´Ù¸¥ Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀº Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀ» ¼ö ÀÖÁö¸¸ ÇϳªÀÇ Å¬·¡½º´Â ¿©·¯ Ŭ·¡½º·ÎºÎÅÍ Çѹø¿¡ »ó¼Ó¹ÞÀ» ¼ö ¾ø½À´Ï´Ù. º¸½Ã´Ù½ÃÇÇ {{{File}}} Ŭ·¡½º´Â ±×Àú ÃÖ»óÀ§ Ŭ·¡½º(¾Æ¹« °ÍÀ¸·ÎºÎÅÍ »ó¼Ó¹ÞÁö ¾ÊÀº Ŭ·¡½º)ÀÎ {{{Object}}} Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀº {{{Class}}} Ŭ·¡½ºÀÇ ÀνºÅϽºÀÔ´Ï´Ù. ´Ù¸¥ Ŭ·¡½ºµéó·³ {{{File}}} ¸ðµç ´Ù¸¥ {{{Object}}}ÀÇ ¸Þ¼Òµå¿Í º¯¼ö¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ÀÌ°ÍÀº {{{Object}}} Ŭ·¡½º´Â ¸ðµç ´Ù¸¥ °´Ã¼µéÀÇ ±Ùº»À̶ó´Â ¶æÀ̱⵵ ÇÕ´Ï´Ù. ¾Æ´ã°ú À̺ê, âÁ¶ÀÚ, ¼³°èÀÚ, ¸ðµç °´Ã¼¿Í Ŭ·¡½ºÀÇ ¾î¸Ó´ÏÀÔ´Ï´Ù! Ŭ·¡½º°¡ ¾î¶² °ÍÀÇ ÀνºÅϽº°¡ µÈ´Ù´Â ¸»Àº Á» È¥¶õ½º·¯¿ï °ÍÀÔ´Ï´Ù. ±×·¯³ª ·çºñ¿¡ ÀÖ´Â ¸ðµç °ÍÀº °´Ã¼¶ó´Â Á¡À» ¸í½ÉÇϼ¼¿ä. ¸ðµç °Í ¸»ÀÔ´Ï´Ù. ±×·¡¼­ Ŭ·¡½º¸¦ Á¤ÀÇÇÒ ¶§ {{{Class}}} Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸¸µå´Â °ÍÀÔ´Ï´Ù. Ŭ·¡½º·ÎºÎÅÍ »õ·Î¿î °´Ã¼¸¦ ¸¸µé ¶§, Ŭ·¡½º°¡ ¹¦»çÇÏ°í ÀÖ´Â »õ·Î¿î °´Ã¼ ÀνºÅϽº¸¦ ¹ÝȯÇÏ´Â ¸Þ¼ÒµåÀÎ (Ŭ·¡½º À̸§).new¸¦ È£ÃâÇÕ´Ï´Ù. ·çºñ¿¡ ÀÖ´Â °ÍÀº ¹«¾ùÀ̵çÁö °´Ã¼ÀÔ´Ï´Ù! === Ŭ·¡½º Á¤ÀÇÇϱâ === ÀÚ ÀÌÁ¦ ½ÃÀÛÇØ º¾½Ã´Ù. Ŭ·¡½º¸¦ Á¤ÀÇÇÏ·Á¸é {{{class}}} Å°¿öµå¸¦ ù ÁÙ¿¡ ³õ°í Ŭ·¡½º¿¡¼­ »ó¼ÓÀ» ¹ÞÀ¸·Á¸é < ¸¦ ¾²°í »ó¼Ó¹ÞÀ¸·Á´Â Ŭ·¡½º¸¦ ¾¹´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù. {{{ class MyFirstClass < Object end }}} ÀÌ°Ô ÀüºÎÀÔ´Ï´Ù. ¹æ±Ý ¿ì¸®´Â óÀ½À¸·Î Ŭ·¡½º¸¦ Á¤ÀÇÇß½À´Ï´Ù. ÀÌ ¿¹Á¦´Â Áö±Ý±îÁö ³ª¿Â ¿¹Á¦ Áß¿¡¼­ °¡Àå ÀÎÀ§ÀûÀÌ°í ¿ÏÀüÈ÷ ¾µ¸ð¾ø´Â Ŭ·¡½º¸¦ ³ªÅ¸³»´Â °ÍÀÓÀ» ÀÎÁ¤ÇÕ´Ï´Ù¸¸, ¾î·µç ¿ì¸®´Â Ŭ·¡½º¸¦ Á¤ÀÇÇß½À´Ï´Ù. {{{Object}}}·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Ò´Ù´Â °ÍÀ» ³ªÅ¸³Â´Ù´Â Á¡¿¡ ÁÖ¸ñÇϽʽÿÀ. ÀÌ°ÍÀº ¿ÏÀüÈ÷ ÇÊ¿ä ¾ø´Â °ÍÀÔ´Ï´Ù. ·çºñ¿¡¼­´Â »ó¼Ó °ü°è¸¦ Á¤ÇÏÁö ¾ÊÀ¸¸é {{{Object}}}¿¡¼­ »ó¼Ó ¹Þ¾Ò´Ù°í °¡Á¤ÇÕ´Ï´Ù. === ¸Þ¼Òµå¿Í º¯¼ö === Ŭ·¡½º´Â º¯¼ö¿Í ¸Þ¼Òµå¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. Ŭ·¡½º¿¡ ¾î¶² ÀÏÀ» ½ÃÅ°·Á¸é Á¦ÀÏ ¸ÕÀú Áý¾î³Ö°í ½ÍÀº °ÍÀº ¸Þ¼ÒµåÀÏ °ÍÀÔ´Ï´Ù. Ãß°¡ÇØ¾ß ÇÒ Ã¹ ¹ø° ¸Þ¼Òµå´Â {{{initialize}}} ¸Þ¼ÒµåÀε¥, ÀÌ°ÍÀº (Ŭ·¡½º À̸§).new ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¶§¸¶´Ù ·çºñ¿¡¼­ ÀÚµ¿À¸·Î È£ÃâÇØÁÖ´Â ¸Þ¼ÒµåÀÔ´Ï´Ù. {{{new}}} ¸Þ¼Òµå¸¦ È£ÃâÇÏ¸é »õ·Î¿î °´Ã¼°¡ »ý¼ºµÇ°í {{{initialize}}} ¸Þ¼Òµå°¡ new¿¡ ³Ñ°ÜÁØ ¸Å°³º¯¼ö¸¦ ³Ñ°ÜÁָ鼭 È£ÃâµÇ¾î °´Ã¼ÀÇ »óÅÂ(º¯¼ö, Ç÷¡±× µî)¸¦ ¼³Á¤ÇÕ´Ï´Ù. ÀÌ°ÍÀº ´Ù¸¥ ¾ð¾îÀÇ »ý¼ºÀÚ¿Í ¸Å¿ì ºñ½Á(»ç½Ç»ó µ¿ÀÏ)ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î {{{Boogeyman}}}ÀÌ ¼¼»ó¿¡ ÀÖ´Â ¸ðµç ¾ÆÀ̵鿡°Ô ±«»óÇÑ ÁþÀ» ÇÏ·Á°í Çß´ø °ÍÀ» Æ÷±âÇϱâ·Î ¸¶À½¸Ô°í (ÀÌÁ¦ ³ªÀÌ°¡ Á» µé¾úÀ¸´Ï±î¿ä) ´ë½Å¿¡ (·çºñ·Î Â¥¿©Áø ¼ÒÇÁÆ®¿þ¾î·Î µ¿ÀÛÇÏ´Â) ·Îº¿ ±º´ÜÀ» ¸¸µé¾î¼­ »ç¾ÇÇÑ ¸í·ÉÀ» ³»¸°´Ù°í ÇսôÙ. Ãʱâ Ŭ·¡½º Á¤ÀÇ¿Í {{{initialize}}} ¸Þ¼Òµå´Â ´ÙÀ½°ú °°À» °ÍÀÔ´Ï´Ù. {{{ class Boogeyman def initialize puts "Yes, master?" end end monster1 = Boogeyman.new ¡æ Yes, master? }}} ´ç¿¬È÷ ÀÌ ¸Þ¼Òµå´Â »õ °´Ã¼¸¦ »ý¼ºÇÒ ¶§ ¾î¶»°Ô ÇÏ´ÂÁö¸¦ º¸¿©ÁÖ´Â °Í »ÓÀ̸ç, {{{initialize}}} ¸Þ¼Òµå°¡ È£ÃâµÇ¾ú½À´Ï´Ù. ÀÌÁ¦ ¹«¾ð°¡ µ¿ÀÛÇϵµ·Ï ÇØ º¾½Ã´Ù. {{{ class Boogeyman def initialize(name, location) @name = name @location = location puts "Yes, master?" end end monster1 = Boogeyman.new("Mister Creepy", "New York, NY") ¡æ Yes, master? }}} ÀÌ°ÍÀº ÀνºÅϽº º¯¼ö¸¦ ¼³Á¤ÇÏ´Â »õ·Î¿î {{{initialize}}} ¸Þ¼ÒµåÀÔ´Ï´Ù. ÀνºÅϽº º¯¼ö¶ó´Â °ÍÀº °´Ã¼ ³»¿¡¼­ »óŸ¦ °¡Áö°í ÀÖ´Â º¯¼öÀÔ´Ï´Ù. ÀνºÅϽº º¯¼ö¸¦ ¼³Á¤Çϱâ À§Çؼ­´Â Áº¯ ¾Õ¿¡ @ ±âÈ£¸¦ ºÙ¿©¾ß ÇÕ´Ï´Ù. ´Ù¸¥ ¾ð¾îµéó·³ ÀÌ º¯¼öµéÀ» Ŭ·¡½º ¼±¾ðºÎ¿¡ ³ÖÀ» ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ÀÌ·¸°Ô ¼³Á¤µÈ º¯¼ö´Â ƯÁ¤ ÀνºÅϽº¿¡¼­ À¯ÀÏÇÏ°Ô µË´Ï´Ù. ÀÌ º¯¼öµéÀº ÀνºÅϽº ½ºÄÚÇÁ ³»¿¡ ÀÖ´Ù°í ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î¼­ Ưº°È÷ ³Ñ°ÜÁÖÁö ¾Ê´Â´Ù¸é ÀνºÅϽº ¹Ù±ù¿¡¼­ ÀÌ º¯¼öµéÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌÀü¿¡ ¹è¿ü´ø ½ºÄÚÇÁ¸¦ ±â¾ïÇØ º¸¼¼¿ä. @name°ú nameÀÌ ´Ù¸¥ ½ºÄÚÇÁ ³»¿¡ ÀÖÀ¸¹Ç·Î, ¿ì¸®´Â ¸ðÈ£ÇÏÁö ¾Ê°Ô À̸§À» Áߺ¹Çؼ­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. (»ç½Ç º°·Î ÁÁÀº »ý°¢Àº ¾Æ´Õ´Ï´Ù.) ÀÌÁ¦ °´Ã¼ÀÇ »óŸ¦ ´Ù·ç´Â ¸î °¡Áö ¸Þ¼Òµå¸¦ ¸¸µé¾î º¾½Ã´Ù. {{{ class Boogeyman def change_location(newlocation) @location = newlocation puts "I moved to #{newlocation}!" self.get_info end def change_name(newname) @name = newname puts "I shall be called #{newname} from now on!" self.get_info end def get_info puts "I am #{@name} in #{@location}." end end monster1 = Boogeyman.new("Loopy Lou", "Albuquerque, NM") ¡æ Yes, master? monster1.change_location("Wyoming") ¡æ I moved to Wyoming! ¡æ I am Loopy Lou in Wyoming. monster1.change_name("Beezlebub") ¡æ I shall be called Beezlebub from now on! ¡æ I am Beezlebub in Wyoming. }}} ÀÌ ¿¹Á¦¿¡¼­ Áß¿äÇÑ µÎ °¡Áö °³³äÀ» º¸¿©µå·È½À´Ï´Ù. ù°, Á¦°¡ Àüü Ŭ·¡½º¸¦ ´Ù½Ã ´Ù ÀÔ·ÂÇÏÁö ¾Ê¾Ò´Ù´Â °ÍÀÔ´Ï´Ù. Á¦°¡ °ÔÀ»·¯¼­ ±×·± °ÍÀÌ ¾Æ´Ï¶ó ·çºñ¿¡¼­ Ŭ·¡½º´Â Àý´ë·Î ´ÝÈ÷Áö ¾Ê½À´Ï´Ù. ÀÌ ¸»Àº °£´ÜÈ÷ Ŭ·¡½º Á¤ÀǸ¦ ´Ù½Ã ¿­¾î¼­ Ç×»ó ¾î¶² ¸Þ¼ÒµåµçÁö Ãß°¡Çϰųª ´Ù½Ã Á¤ÀÇ(Á¤È®ÇÑ ¿ë¾î·Î ¿À¹ö¶óÀ̵å)ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ¶§·Î´Â À§ÇèÇÒÁöµµ ¸ð¸¨´Ï´Ù¸¸ ÀÌ°ÍÀÌ ·çºñ °´Ã¼ ±¸Çö¿¡¼­ °¡Àå À¯¿ëÇÑ Ãø¸é Áß¿¡ ÇϳªÀ̱⵵ ÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸½Ã°Ú½À´Ï´Ù. {{{ class String def writesize puts self.size end end size_writer = "Tell me my size!" size_writer.writesize ¡æ 16 }}} ¹æ±Ý Àü¿¡µµ ¸»¾¸µå·ÈµíÀÌ Å¬·¡½ºÀÇ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. ½ÉÁö¾î´Â ³»Àå Ŭ·¡½ºµéµµ °¡´ÉÇÕ´Ï´Ù. ÀÌ°ÍÀº ƯÁ¤ ¸Þ¼Òµå³ª ¿¬»êÀÚ¸¦ ¼öÁ¤Çؼ­ ¸ðµç °ÍÀ» ¾û¸ÁÀ¸·Î ¸¸µé ¼ö ÀÖ´Â À§ÇèÇÑ Á¡µµ ÀÖÁö¸¸ µ¿½Ã¿¡ À¯¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ·çºñ À¥ ÇÁ·¹ÀÓ¿öÅ©ÀÎ ·¹ÀϽº´Â ÀÌ °³³äÀ» ƯÈ÷ {{{ActiveSupport}}} ÆÐÅ°Áö¿¡¼­ ¸¹ÀÌ È°¿ëÇÕ´Ï´Ù. Á» ´õ º¹ÀâÇÏ°í Àç¹ÌÀÖ´Â °ÍÀ» ãÀ¸½Å´Ù¸é ·¹ÀϽº È®Àå ±â´ÉÀ» »ìÆ캸½Ã¸é ´Ù¾çÇÑ Å¬·¡½ºµéÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼­ º¸¿©µå¸° µÎ ¹ø° °³³äÀº {{{self}}} °´Ã¼ÀÇ »ç¿ë¹ýÀÔ´Ï´Ù. {{{self}}} °´Ã¼´Â Ç×»ó ÇöÀçÀÇ ÀνºÅϽº¸¦ °¡¸®Åµ´Ï´Ù. (½ºÆ®¸µ Ŭ·¡½ºÀÇ size³ª ¿ì¸® Ŭ·¡½ºÀÇ get_info ¸Þ¼Òµå °°Àº) ÇöÀç ÀνºÅϽºÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì¿¡´Â ÀÌ°ÍÀÌ ÇÊ¿äÇÏÁö ¾ÊÀ» °ÍÀÌÁö¸¸ ÇÊ¿äÇÑ °æ¿ì°¡ ÀÖ½À´Ï´Ù. ±âº»ÀûÀ¸·Î self¸¦ »ý·«ÇÏ°í »ç¿ëÇصµ ·çºñ´Â ÇöÀç Ŭ·¡½º¿¡ ÀÖ´Â °ÍÀ¸·Î °¡Á¤ÇÏÁö¸¸, puts¿Í °°Àº ¸Þ¼Òµå¸¦ Ŭ·¡½º ³»¿¡¼­ ±¸ÇöÇß´Ù¸é ³»Àå ¸Þ¼Òµå¸¦ È£ÃâÇÏÁö ¾Ê°í Á÷Á¢ ÀÛ¼ºÇÑ Å¬·¡½º ³»ÀÇ puts ¸Þ¼Òµå¸¦ È£ÃâÇÏ·Á¸é ÀÌ°ÍÀ» ÀÌ¿ëÇÏ¿©¾ß ÇÕ´Ï´Ù. === ¼Ó¼º === ÀνºÅϽº º¯¼ö°¡ À¯¿ëÇÏ´Ù°í Çصµ ¹Ù±ù ¼¼»ó¿¡´Â º¸ÀÌÁö ¾Ê½À´Ï´Ù. óÀ½ º¸¾ÒÀ» ¶§¿¡´Â ÀÌ°ÍÀÌ ¸Å¿ì ÈǸ¢ÇÑ »óȲÀ̶ó´Â »ý°¢ÀÌ µé °Ì´Ï´Ù. °´Ã¼ÀÇ ¸ðµç »óÅ°¡ ¹Ù±ù ¼¼»ó¿¡¼­´Â ¿ÏÀüÈ÷ º¸ÀÌÁö ¾Ê°í ¹Ù²îÁö ¾ÊÀ» Å״ϱî¿ä. ±×·¯³ª Á¶±Ý Áö³ª°í º¸¸é °´Ã¼ ³»ÀÇ °ªÀ» °¡Á®¿À°Å³ª ¹Ù²Ù°í ½Í´Ù´Â »ý°¢ÀÌ µå½Ç °Ì´Ï´Ù. ¾î¶»°Ô ÀÌ°ÍÀ» ÇÒ ¼ö ÀÖÀ»±î¿ä?! ÀÌ°ÍÀº Á¤¸» °£´ÜÇÏ°Ô µË´Ï´Ù. {{{ class Boogeyman def scare_factor @scare_factor end def hiding_place @hiding_place end def scare_factor=(factor) @scare_factor = factor end def hiding_place=(place) @hiding_place = place end end monster1 = Boogeyman.new("Crazy Cal", "Nashville, TN") monster1.scare_factor = 6000 puts monster1.scare_factor ¡æ 6000 }}} º¸¿©µå¸° ¿¹Á¦¿¡¼­ ÀÐÀ» ¼ö ÀÖ´Â ¼Ó¼ºÀ» ¸¸µé±â À§Çؼ­ ±×Àú ÀνºÅϽº °ªÀ» ¹ÝȯÇÏ´Â ¸Þ¼Òµå¸¦ ¸¸µé¾ú½À´Ï´Ù. ¸Þ¼Òµå¿¡¼­ ¸¶Áö¸·À¸·Î »ç¿ëÇÑ °ªÀÌ ¹ÝȯµÈ´Ù´Â °ÍÀº ±â¾ïÇϽðÚÁÒ? ¼Ó¼ºÀº °ªÀ» Àаųª ¾²´Â °£´ÜÇÑ ¸Þ¼ÒµåÀÔ´Ï´Ù. °ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Â ¸Þ¼Òµå¸¦ ¸¸µå·Á¸é ±×³É °£´ÜÇÏ°Ô ¸Þ¼Òµå À̸§ µÚ¿¡ µîÈ£ (=)¸¦ ºÙ¿©ÁÖ½Ã¸é µË´Ï´Ù. Á¦°¡ Çß´ø °Íó·³ ¹Ù·Î ÀνºÅϽº º¯¼ö¸¦ ¹ÝȯÇϵµ·Ï ÇÒ ¼öµµ ÀÖ°í Á¦´ë·Î µÈ ÇüÅÂ¿Í Çü½ÄÀ» °®Ãß¾ú´ÂÁö °Ë»çÇÏ¿© Á¦´ë·Î µÈ Çü½ÄÀ¸·Î º¯È¯ÇÏ¿© º¯¼ö¸¦ ¼³Á¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Ŭ·¡½º ³»¿¡ °ªÀ» ½á¾ß ÇÏ´Â °ÍµéÀÌ ¸¹Àº °æ¿ì¿¡´Â ÁÁÁö ¾ÊÀ» ¼öµµ ÀÕ¾¹´Ï´Ù. Á¦ ¸»Àº C#¿¡¼­ º¯¼ö¸¦ Ŭ·¡½º ¿ÜºÎ¿¡¼­ º¸ÀÌ°Ô ÇÏ·Á°í ¸ðµç º¯¼ö¿¡ "public"À» ºÙÀÌ´Â °Íó·³ ¸»ÀÔ´Ï´Ù! ¼Ó¼ºÀÌ ÀϹÝÀûÀ¸·Î ¸¹ÀÌ »ç¿ëµÇ´Â ±¸¼ºÃ¼À̱⠶§¹®¿¡ ·çºñ¿¡´Â ¾ÆÁÖ °£´ÜÇÏ°Ô ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» °®Ãß°í ÀÖ½À´Ï´Ù. {{{ class Boogeyman attr_reader :scare_factor, :hiding_place attr_writer :scare_factor, :hiding_place end }}} ÀÌÁ¦ ¿¹Àüó·³ ¼Ó¼ºÀ» ÀÐ°í ¾²°í ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ¹æ½ÄÀ¸·Î ¸Þ¼Òµå¸¦ ¸¸µé¾îµµ ÀÌÀü¿¡ ¸¸µé¾ú´ø °Í°ú µ¿ÀÏÇÑ ´É·ÂÀ» º¸À¯ÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ Å×Å©´ÐÀ» ÀÌ¿ëÇÏ¸é ´õ ½±°Ô ¸Þ¼Òµå¸¦ ¾µ ¼ö ÀÖÁö¸¸ Àаųª ¾²´Â ¸Þ¼Òµå¸¦ ¸¶À½´ë·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Â À¯¿¬¼ºÀÌ ¶³¾îÁý´Ï´Ù. ¿¹¸¦ µé¾î¼­ µÎ·Á¿òÀÇ Á¤µµ¸¦ µÎ·Á¿ò±×·¥(Fg) ´ÜÀ§·Î Ãâ·ÂÇÑ´Ù°í Çϸé Àд ¸Þ¼Òµå¸¦ ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÏ¿© È­¸é¿¡ Ãâ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. {{{ class Boogeyman attr_writer :scare_factor def scare_factor return str(@scare_factor / 1000) + "Fg" end end monster1 = Boogeyman.new("Psycho Sally", "Los Angeles, CA") monster1.scare_factor = 6000 puts monster1.scare_factor ¡æ 6Fg }}} ¾î¶² »ç¶÷µéÀº ÀÌ°ÍÀ» °¡»ó ¼Ó¼ºÀ̶ó°í ºÎ¸£Áö¸¸ Á¦ »ý°¢¿¡´Â ´Ù¸¥ Ưº°ÇÑ À̸§ÀÌ ÇÊ¿äÇÑ °Í °°½À´Ï´Ù. ÀÌ°ÍÀ» ¾î¶»°Ô ºÎ¸£µç °£¿¡ ¿©·¯ºÐÀÇ Å¬·¡½ºÀÇ ±¸ÇöÀ» ¼û±æ ¼ö ÀÖ´Â ¸ÚÁø ¹æ¹ýÀÔ´Ï´Ù. ¿ÜºÎ ¼¼°è¿¡¼­´Â ±×³É º¸Åë ¼Ó¼ºÃ³·³ º¸ÀÔ´Ï´Ù¸¸ ¿©·¯ºÐÀº Áø½ÇÀ» ¾Ë°í ÀÖ½À´Ï´Ù! ÀÌ°ÍÀÌ »ç¶÷ÀÌ ½±°Ô ¾µ ¼ö ÀÖ´Â ÀÛÀº ¹æ¹ýÀÔ´Ï´Ù. === Á¢±Ù Á¦¾î === ¿ì¸® ¸Þ¼Òµå¿Í ¼Ó¼ºµéÀº ¹«¹æºñ·Î ¿­·Á Àִµ¥, ÀÌÁ¦ ¿ì¸® Ŭ·¡½ºÀÇ ºÎºÐ¿¡ Á¢±ÙÇÏ´Â °ÍÀ» Á¦¾îÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» »ý°¢ÇØ º¾½Ã´Ù. Áö±Ý±îÁö initialize(ÀÌ ¸Þ¼Òµå´Â Ç×»ó {{{private}}}ÀÔ´Ï´Ù)¸¦ Á¦¿ÜÇÑ ¸ðµç ¸Þ¼ÒµåµéÀº {{{public}}}(Ŭ·¡½º ³»¿ÜºÎ ¸ðµÎ¿¡¼­ Á¢±ÙÇÒ ¼ö ÀÖÀ½)À̾ú½À´Ï´Ù. ÀÌ°ÍÀÌ ·çºñÀÇ ±âº» µ¿ÀÛ¹æ½ÄÀ̱⠶§¹®¿¡ ´ÙÀ½ ¿¹Á¦¿Í °°ÀÌ ¸Þ¼Òµå¸¦ Ãß°¡ÇØ º¾½Ã´Ù. {{{ class Boogeyman def scare(who) puts "I just scared the bejezus out of #{who}!" end end }}} ¾Æ¹«·± Á¢±Ù Á¦¾î¸¦ ¸í±âÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡ ÀÌ ¸Þ¼Òµå´Â {{{public}}}ÀÔ´Ï´Ù. ÀÌ°ÍÀ» º¸È£ÇÏ·Á´Â ¸Þ¼Òµå ¾Õ¿¡ {{{protected}}}¶ó°í ½á ÁÜÀ¸·Î½á {{{protected}}}(±× ÀڽŰú »ó¼Ó¹ÞÀº Ŭ·¡½º¿¡¼­¸¸ Á¢±ÙÇÒ ¼ö ÀÖÀ½)·Î ¸¸µé ¼öµµ ÀÖ½À´Ï´Ù. ¿¹Á¦¸¦ º¸½Ã°Ú½À´Ï´Ù. {{{ class Boogeyman protected def are_you_a_monster?(whosasking) puts "Yes, #{whosasking}, I am a monster!" return true end end }}} ÀÌÁ¦ ÀÌ ¸Þ¼Òµå¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â °´Ã¼´Â {{{Boogeyman}}} Ŭ·¡½ºÀÇ ÀνºÅϽºÀ̰ųª ±× Ŭ·¡½º¸¦ »ó¼Ó¹ÞÀº Ŭ·¡½ºÀÇ ÀνºÅϽº »ÓÀÔ´Ï´Ù. ÀÌ°ÍÀº °°°Å³ª ºñ½ÁÇÑ Á¾·ùÀÇ Å¬·¡½º¿¡°Ô¸¸ Á¤º¸¸¦ Á¦°øÇÏ·Á°í ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ÇÑÆí ÇöÀç °´Ã¼ÀÇ ÀνºÅϽº¿¡¼­¸¸ ÀÌ°ÍÀ» Á¢±ÙÇÒ ¼ö ÀÖ°Ô ÇÏ·Á¸é {{{private}}}À¸·Î Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. {{{protected}}}¿Í {{{private}}}ÀÇ Â÷ÀÌ´Â ±Ù¼ÒÇÕ´Ï´Ù. {{{protected}}}´Â °°Àº Ŭ·¡½º³ª »ó¼Ó¹ÞÀº Ŭ·¡½ºÀÇ ´Ù¸¥ ÀνºÅϽº¿¡¼­ Á¢±ÙÇÒ ¼ö ÀÖÁö¸¸ {{{private}}}Àº ÇöÀç ÀνºÅϽº¿¡¼­¸¸ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌÁ¦ {{{phone_home}}}À̶ó´Â ¸Þ¼Òµå¸¦ Boogeyman¿¡ Ãß°¡ÇÏ°í {{{scare}}} ¸Þ¼Òµå¿¡¼­ ±×°ÍÀ» »ç¿ëÇϵµ·Ï ÀçÁ¤ÀÇÇØ º¾½Ã´Ù. {{{ class Boogeyman private def phone_home(message) # TODO: Actually make this phone home # For now, we'll just write to the console puts message end public def scare(who) phone_home("I just scared the living poop out of #{who}!" end end }}} ÀÌÁ¦ ÇöÀç ¸Þ¼Òµå¿¡¼­¸¸ {{{phone_home}}} ¸Þ¼Òµå¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ¹«³ª Áý¿¡ ÀüÈ­Çؼ­ ÀÌ ±«¹°Ã³·³ º¸ÀÌ°Ô ÇÏ°í ½ÍÁö´Â ¾ÊÀ¸½ÃÁÒ? {{{public}}} Å°¿öµå ¿ª½Ã ¸í½ÃÀûÀ¸·Î ¼±¾ðÇÏ¿© °°Àº ¹æ¹ýÀ¸·Î {{{private}}} ¸Þ¼Òµå¸¦ Á¤ÀÇÇÑ ´ÙÀ½¿¡ ´Ù½Ã ¸ðµå¸¦ ¹Ù²Ù°í ½ÍÀ» ¶§ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. === Ŭ·¡½º¿Í ½ºÄÚÇÁ ³»ÀÇ °´Ã¼ === Áö±Ý±îÁö ÀνºÅϽº, ÀνºÅϽº º¯¼ö, ÀνºÅϽº ¸Þ¼Òµå µîÀ» ´Ù·ç¾úÁö¸¸ Ŭ·¡½ºÀÇ ÀνºÅϽºº¸´Ù Ŭ·¡½ºÀÇ »óŸ¦ À¯ÁöÇÒ ÇÊ¿äµµ ÀÖ°í, ¾î¶² ÇÑ ÀνºÅϽº¿¡ ±¹ÇѵÇÁö ¾ÊÀº ¸Þ¼Òµå¸¦ Á¦°øÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§µµ ÀÖ½À´Ï´Ù. ÀÌ·² ¶§ »ç¿ëÇÏ´Â °ÍÀÌ Å¬·¡½º »ó¼ö, º¯¼ö, ¸Þ¼ÒµåÀÔ´Ï´Ù. Ŭ·¡½º »ó¼ö´Â °ªÀÌ ¹Ù²î´Â º¯¼ö¿Í´Â ´Þ¸® º¯ÇÏÁö ¾Ê´Â °ªÀ» Ŭ·¡½º ½ºÄÚÇÁ ³»¿¡ µÑ ¼ö ÀÖ´Â ¼Õ½¬¿î ¸ÞÄ¿´ÏÁòÀÔ´Ï´Ù. Ŭ·¡½º »ó¼ö¸¦ ¸¸µå·Á¸é °£´ÜÈ÷ »ó¼ö À̸§°ú °ªÀ» Ŭ·¡½º Á¤ÀǺο¡ µÎ¸é µË´Ï´Ù. {{{ class Boogeyman MY_BOSS = 'Mr. Boogeyman' end }}} ÀÌÁ¦ {{{Boogeyman}}} Ŭ·¡½º ³»¿¡ ÀÖ´Â ¸ðµç ¸Þ¼Òµå(ÀνºÅϽº¿Í Ŭ·¡½º ½ºÄÚÇÁ ³»¿¡ ÀÖ´Â °Í ¸ðµÎ)´Â MY_BOSS °ª¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. Ŭ·¡½º º¯¼ö¸¦ ¸¸µå·Á¸é °ñ¹ðÀÌ µÎ °³(@@)¸¦ º¯¼ö ¾Õ¿¡ ºÙÀÌ¸é µË´Ï´Ù. ÀνºÅϽº º¯¼ö¿Í °ÅÀÇ °°°Ô µ¿ÀÛÇÏÁö¸¸ ƯÁ¤ °´Ã¼ÀÇ »óÅ°¡ ¾Æ´Ï¶ó Ŭ·¡½ºÀÇ »óÅ°¡ µË´Ï´Ù. ¿¹¸¦ µé¾î, {{{Boogeyman}}}ÀÌ ÃÖ±Ù¿¡ Ç®·Á³­ °Å·ùÀÚÀÇ À̸§°ú À§Ä¡¸¦ ¾Ë ¼ö ÀÖ´ÂÁö ¿äûÇÑ´Ù¸é ÀÌ°ÍÀ» Ŭ·¡½º º¯¼ö·Î ¾Ë·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù. {{{ class Boogeyman # We'll redefine initialize def initialize(name, location) @name = name @location = location @@latest = @name @@location = @location puts "Yes, master?" end end monster1 = Boogeyman.new("Macabre Mac", "Seattle, WA") ¡æ Yes, master? monster2 = Boogeyman.new("Gory Gary", "Reston, WV") ¡æ Yes, master? puts Boogeyman.latest ¡æ Gory Gary }}} ¿¹Á¦¿¡¼­ º¸¾ÒµíÀÌ, Ŭ·¡½º À̸§¿¡ Á¡À» Âï°í º¯¼ö À̸§À» »ç¿ëÇÕ´Ï´Ù. Ŭ·¡½º »ó¼öó·³ ÀÌ °ªÀ» Ŭ·¡½º ½ºÄÚÇÁ ³»¿¡¼­³ª ÀνºÅϽº ½ºÄÚÇÁ ³»ÀÇ ¸Þ¼Òµå¿¡¼­ Á¢±ÙÇÒ ¼ö ÀÖ½º´Ï´Ù. {{{@@location}}}, {{{@location}}}, {{{location}}}Àº ¸ðµÎ ´Ù¸¥ ½ºÄÚÇÁ ³»¿¡ ÀÖ´Ù´Â °ÍÀ» ÁÖÀÇÇϽʽÿÀ. ¾Æ¹« ¹®Á¦¾øÀÌ °°Àº À̸§À» ¾µ ¼ö ÀÖ½À´Ï´Ù. ¼¼ º¯¼öÀÇ À̸§À» °°°Ô ÇÏ´Â °ÍÀ» ±ÇÀåÇÏ´Â °ÍÀº ¾Æ´ÏÁö¸¸ °¡´ÉÇϱâ´Â ÇÏ°í °¡²û¾¿ À¯¿ëÇϱ⵵ ÇÕ´Ï´Ù. Ŭ·¡½º ¸Þ¼Òµå´Â ÀνºÅϽº¿¡¼­ Ưº°È÷ ÇÊ¿äÇÏÁö ¾ÊÀ» °ÍµéÀ» ÀνºÅϽº°¡ ¾Æ´Ï¶ó Ŭ·¡½º¿¡¼­ Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ·± Ư¡Àº ¿¹¸¦ µé¾î ¹Ì¸® ¸¸µé¾î ³õÀº Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ Á¦°øÇÏ°í ½ÍÀ» ¶§ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î {{{Person}}}À̶ó´Â Ŭ·¡½ºÀÇ {{{man}}}À̶ó´Â À̸§ÀÇ ¸Þ¼Òµå´Â ¼ºº° Çʵ带 ¼³Á¤ÇÏ°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸¸ÀÏ ÄÚµå ¼ÓÀ¸·Î ÆÄ°íµé°Å³ª ½º½º·Î ·çºñ Äֿܼ¡¼­ ã¾Æ³»±â°¡ ³Ê¹« ±ÍÂú¾Æ¼­(ÀÌÁ¦ ÅðÁ÷Ç߰ŵç¿ä) ¸¶Áö¸· ·Îº¿ÀÇ À̸§À» Ãâ·ÂÇØÁִ Ŭ·¡½º ¸Þ¼Òµå¸¦ ÀÛ¼ºÇØ´Þ¶ó°í {{{Boogeyman}}}ÀÌ ¿äûÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. {{{ class Boogeyman def Boogeyman.latest_monster puts "The latest monster is #{@@latest}." puts "He is in #{@@location}." end end Boogeyman.latest_monster ¡æ The latest monster is Gory Gary. ¡æ He is in Reston, WV. }}} {{{latest_monster}}}ÀÌ Å¬·¡½º ¸Þ¼ÒµåÀ̱⠶§¹®¿¡, ±× ½ºÄÚÇÁ ³»¿¡ ÀÖ´Â º¯¼öµé(Ŭ·¡½º º¯¼öµé)¸¸ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸Å°³º¯¼öÀÇ ÇüÅ·Π¸Þ¼Òµå·Î ³Ñ°Ü¹Þ°Å³ª Ŭ·¡½º º¯¼ö·Î ÂüÁ¶¹Þ°Å³ª ÇÏÁö ¾Ê´Â ÀÌ»ó ÀνºÅϽº º¯¼ö¿¡´Â Á¢±ÙÇÒ ¼ö ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ´Ù¸¥ Ŭ·¡½º ½ºÄÚÇÁ ³»ÀÇ º¯¼öµé, Ŭ·¡½º ¸Þ¼ÒµåµéÀº ÀνºÅϽº ½ºÄÚÇÁ ³»¿¡ ÀÖ´Â °´Ã¼¿Í ¸Þ¼Òµå¿¡¼­´Â º¸ÀÌÁö ¤·³º½À´Ï´Ù. ÀÌ°ÍÀº Ŭ·¡½º ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¶§ Àüü À̸§À» ´Ù ÀÔ·ÂÇØ¾ß ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù. Áï, {{{latest_monster}}}³ª {{{MY_BOSS}}} ȤÀº {{{@@latest}}}¸¦ ¹Ù·Î È£ÃâÇÒ ¼ö ¾ø°í {{{Boogeyman.latest_monster}}}¿Í °°ÀÌ È£ÃâÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. == ¸ðµâ == ¾Æ¸¶µµ ¶§·Î´Â ¸¹Àº Äڵ带 ü°èÀûÀ¸·Î Á¤¸®ÇؾßÇÒ ¶§°¡ ÀÖÀ» °Ì´Ï´Ù. ¸¹Àº ÄÚµå ¸»ÀÔ´Ï´Ù. Áß±¹ÀÇ Àα¸Ã³·³ ¸¹Àº ÄÚµå ¸»ÀÌÁö¿ä. Äڵ尡 ÇÑ Å¬·¡½º ¾È¿¡ µé¾î°¡°Å³ª ¿Ïº®ÇÏ°Ô ¿¬°èµÇ¾î ÀÖÁö´Â ¾ÊÀ» °ÍÀÔ´Ï´Ù. ¾Æ¸¶µµ ¸î°¡Áö À̽´°¡ ÀÖ½À´Ï´Ù. ¾Æ¸¶µµ Áö³­ ÁÖ¿¡ grumpy_butt.rb¿¡ ÀÖ´ø ÀÎÀÚ ¶§¹®¿¡ È­°¡ ³ª ÀÖÀ» °Ì´Ï´Ù. ¾î·µç ¿©·¯ºÐÀº ±×°ÍÀ» ¼­·Î ¸ð¾Æ¼­ ´Ù½Ã »ç¿ëÇÒ ¼ö ÀÖ°Ô Ã¼°èÀûÀ¸·Î Á¤¸®ÇÏ´Â ÀÏÀ» ¸Ã¾Ò½À´Ï´Ù. º¸Åë C³ª PHP¿¡¼­´Â °£´ÜÈ÷ ÆÄÀÏ ³»¿¡ Äڵ带 Áý¾î ³Ö°í ÇÊ¿äÇÑ °÷¿¡¼­ Æ÷ÇÔ(include)ÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª À̸§ÀÌ °°Àº ¸Þ¼Òµå³ª »ó¼ö°¡ ÀÖ´Ù¸é ¾î¶»°Ô µÇ°Ú½À´Ï±î? ÆÒ´õ °ÝÅõ °ÔÀÓÀ» ¸¸µé°í ÀÖ´Ù°í ÇսôÙ. °ÔÀÓ ³»¿¡¼­ Á×À» ¼ö Àִ ȸ¼öÀÎ, Àüü ¸ñ¼ûÀÇ ¼ö¸¦ ³ªÅ¸³»´Â {{{DEATH}}}¶ó´Â »ó¼ö¸¦ {{{const_values.rb}}}¿¡ µÎ¾ú´Âµ¥ {{{fighter_values.rb}}} ÆÄÀÏ¿¡ Death¶ó´Â À̸§ÀÇ Ç÷¹À̾îÀÇ °ªµéÀ» ¹è¿­·Î °®°í ÀÖ´Â {{{DEATH}}}¶ó´Â »ó¼ö°¡ ¶Ç ÀÖ½À´Ï´Ù. µÎ ÆÄÀÏÀÌ ¸ðµÎ Æ÷ÇԵǾî¾ß Çϴµ¥, À̸§ Ãæµ¹ÀÌ »ý±â°Ô µË´Ï´Ù. {{{DEATH_VALUES_BECAUSE_I_CANT_INCLUDE_IT_WITHOUT_A_HUGE_NAME}}}¶ó´Â ½ÄÀ¸·Î »ó¼ö À̸§À» Áþ±âº¸´Ù´Â °£´ÜÇÑ À̸§À» Áþ´Â °ÍÀÌ ´õ ³ªÀ» °ÍÀÔ´Ï´Ù. ÀÌ·² ¶§ ¸ðµâÀ» ¾²¸é ¸Å¿ì °£ÆíÇÕ´Ï´Ù. »ó¼ö¿Í ¸Þ¼Òµå¸¦ ³×ÀÓ½ºÆäÀ̽º¶ó´Â ±×·ìÀ¸·Î ³í¸®ÀûÀ¸·Î ¸ðÀ» ¼ö ÀÖ°í, ¸ðÈ£ÇÔÀ» ÇÇÇÏ°í ÄÚµåÀÇ ³í¸®ÀûÀΠü°è¸¦ ÀâÀ» ¼ö ÀÖ½À´Ï´Ù. ³×ÀÓ½ºÆäÀ̽º´Â ³×ÀÓ½ºÆäÀ̽º ¹Ù±ù¿¡ ÀÖ´Â Äڵ带 °Çµå¸®´Â À§Çè¾øÀÌ Àç »ç¿ë °¡´ÉÇÑ Å« ±×·ìÀÇ Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. ÀÌ ¸»Àº ¾Æ±î Àü°ú °°Àº °æ¿ì¿¡ {{{FighterValues}}}¿Í {{{ConstantValues}}}¶ó´Â ³×ÀÓ ½ºÆäÀ̽º¿¡ °¢°¢ ±× °ªÀ» À¯ÁöÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. === ¸ðµâ ¸¸µé±â === ¸ðµâÀ» ¸¸µå´Â ¹®¹ýÀº Ŭ·¡½º¸¦ ¸¸µå´Â ¹®¹ý°ú ¸Å¿ì À¯»çÇÕ´Ï´Ù. {{{module}}} Å°¿öµå¸¦ ¸ðµâ À̸§ ¾Õ¿¡ ³õ°í, ±× ´ÙÀ½ ÁÙºÎÅÍ {{{end}}} Å°¿öµå°¡ ³ª¿Ã ¶§±îÁö ¸ðµâ¿¡ Æ÷ÇÔ½Ãų ¸Þ¼Òµå¿Í Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ¸é µË´Ï´Ù. ÀÌÀü¿¡ ¿¹·Î µé¾ú´ø °Í¿¡ ´ëÇÑ ¿¹Á¦¸¦ º¾½Ã´Ù. {{{ module FighterValues BAMBOO_HEAD = { 'life' => 120, 'hit' => 9 } DEATH = { 'life' => 90, 'hit' => 13 } KOALA = { 'life' => 100, 'hit' => 10 } CHUCK_NORRIS = { 'life' => 60000, 'hit' => 99999999 } def chuck_fact puts "Chuck Norris' tears can cure cancer..." puts "Too bad he never cries." end end module ConstantValues DEATH = -5 # Pandas can live PAST DEATH. EASY_HANDICAP = 10 MEDIUM_HANDICAP = 25 HARD_HANDICAP = 50 end puts FighterValues::DEATH ¡æ {'life'=>90,'hit'=>13} puts ConstantValues::DEATH ¡æ -5 }}} ÀÌÁ¦ µÎ °ªÀÌ Ä£±ÙÇÑ È¯°æ¿¡¼­ Ãæµ¹¾øÀÌ °øÁ¸ÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. ¾Æ¸¶ "±×³É Ŭ·¡½º¸¦ »ç¿ëÇÏ¸é µÇÁö ¾Ê³ª¿ä?"¶ó°í »ý°¢ÇÏ½Ç °ÍÀÔ´Ï´Ù. óÀ½¿¡ ÀÌ ±¸Á¶¸¦ º¸¾ÒÀ» ¶§ Àúµµ °°Àº »ý°¢À» Çß½À´Ï´Ù. Àú´Â ±× ¶§ ´ÜÁö ¼³°è¿Í ¿Ã¹Ù¸¥ ¼ÒÇÁÆ®¿þ¾î °øÇÐÀ» À§ÇÏ¿©, ¼­·Î °°Àº Ŭ·¡½º¿¡ ³ÖÀ» ¸¸Å­ ¿¬°ü¼ºÀÌ Å©Áö ¾ÊÀº °ÍµéÀ» Çϳª·Î ¹­°í ½ÍÀ» ¶§, ¸ðµâÀ̶ó´Â °ÍÀÌ ÀÌ·± ±ÔÄ¢À» ¾î±âÁö ¾ÊÀ¸¸é¼­ ±×·¸°Ô ÇÒ ¼ö ÀÖ´Â ÁÁÀº º¯¸íÀ̶ó°í »ý°¢Çß½À´Ï´Ù. ±×·¯³ª Àú´Â ´õ ÈǸ¢ÇÑ ¸éÀÌ ÀÖ´Ù´Â °ÍÀ» ¾Ë¾Ò½À´Ï´Ù. ¸ðµâÀº È¥ÇÕ(mixin)À̶ó´Â ¸ÞÄ¿´ÏÁòÀÌ À־ ¸¶Ä¡ ¿ø·¡ ÀÖ´ø ÄÚµåÀÎ °Íó·³ Ŭ·¡½º ³»·Î È¥ÇÕµÇ¾î µé¾î°¥ ¼ö ÀÖ½À´Ï´Ù. ´õµµ ¸»°í »ó¼ÓÀ̶ó°í »ý°¢ÇØ º¸¼¼¿ä. ÀÌÀü¿¡ »ìÆì º¸¾ÒµíÀÌ, ·çºñÀÇ Å¬·¡½º´Â ÇÑ ¹ø¿¡ ÇÑ Å¬·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ Ŭ·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Æ¼­ »ó¼Ó »ç½½ °°Àº °ÍÀ» ÀÌ¿ëÇÏ¿©¾ß "´ÙÁß »ó¼Ó"°ú ºñ½ÁÇÑ °ÍÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦·Î´Â ¾Æ´ÏÁö¸¸ ·çºñ¿¡¼­ ÇÒ ¼ö ÀÖ´Â °¡Àå ±ÙÁ¢ÇÑ ¹æ¹ýÀÔ´Ï´Ù. È¥ÇÕÀº ±×·± °ÍÀ» ÇÒ ÇÊ¿ä¾øÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹Þ´Â Ŭ·¡½º¸¦ ¸¸µé°í ÇÊ¿äÇÑ ¿©·¯ ¸ðµâÀ» È¥ÇÕÇØ ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ È¥ÇÕÇÏ·Á°í ÇÏ´Â °ÍÀÌ È¥ÇÕÇÏ´Â °Í ÀÌ¿Ü¿¡ ´Ù¸¥ ¿ëµµ·Î ¾²ÀÌÁö ¾Ê´Â °æ¿ì¿¡ ƯÈ÷ À¯¿ëÇÑ Æ¯Â¡ÀÔ´Ï´Ù. ¿¹Á¦¸¦ º¾½Ã´Ù. {{{ module Movement def run puts "I'm running!" end def walk puts "I'm walking a bit briskly!" end def crawl puts "I'm so slowwww!" end end class Man include Movement def jump puts "I'm bipedal and I can jump like a fool!" end end class Sloth include Movement def flop puts "It's all a lie...all I can do is flop around." end end mister_man = Man.new mister_man.run ¡æ I'm running! mister_slothy = Sloth.new mister_slothy.flop ¡æ It's all a lie...all I can do is flop around. }}} º¸½Ã´Ù½ÃÇÇ ÀÌ°ÍÀº È¥ÇÕÇÒ ÄÚµåÀÇ ÀüºÎ¸¦ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ »ó¼Ó°ú À¯»çÇÑ ¸ÞÄ¿´ÏÁòÀÔ´Ï´Ù. È¥ÇÕÇÏ·Á¸é °£´ÜÈ÷ ¸ðµâÀ» Á¤ÀÇÇÏ°í {{{include}}} Å°¿öµå¸¦ ¾²°í ¸ðµâ À̸§À» ¾²¸é µË´Ï´Ù. Àú´Â ºÐ¸íÈ÷ ¸ðµâÀ̶ó°í Çß½À´Ï´Ù. {{{include}}} Å°¿öµå´Â PHP³ª C++ó·³ ´Ù¸¥ ÆÄÀÏÀ̳ª ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÏ´Â Å°¿öµå°¡ ¾Æ´Õ´Ï´Ù. ÀÌÁ¦ºÎÅÍ ÀÌ Å¬·¡½º´Â ¸ðµâ ³»¿¡ ÀÖ´Â ¸ðµç »ó¼ö¿Í ¸Þ¼Òµå¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÌ ¿¹Á¦°¡ ÀÌ ¸ÞÄ¿´ÏÁòÀÇ Á¤´ç¼º(¿¹¸¦ µé¾î¼­ ¸ðµâ »ó¼ö°¡ È¥ÇÕµÇ¾î µé¾î°¡´Â °ÍÀÇ À¯¿ë¼ºÀ» º¸¿©ÁÖÁö´Â ¸øÇÏ°í ÀÖ°í È¥ÇÕµÇ¾î µé¾î°£ Ŭ·¡½º¿¡ º°´Ù¸¥ ¿µÇâÀ» ³¢Ä¡Áö ¸øÇÏ°í ÀÖ½À´Ï´Ù)À» º¸¿©ÁÖÁö ¸øÇÑ´Ù´Â °ÍÀº ºÐ¸íÇÏÁö¸¸ ÀÌ°ÍÀº ¿©·¯ºÐ²²¼­ ÀÐ°í ´õ ±íÀÌ ½ÇÇèÇØ º¸½Ã¶ó´Â ¶æ¿¡¼­ ¸¸µç ÀÔ¹®¿ë ÄÚµåÀÔ´Ï´Ù. ³ªÁß¿¡ ¹è¿ì°ÚÁö¸¸ Ŭ·¡½º¿Í È¥ÇÕÀÌ ½ÇÁ¦·Î »óÈ£ÀÛ¿ëÇϸ鼭 ½ÇÁ¦·Î ¸¶¹ýÀÌ ÀϾ´Ï´Ù. {{{Singleton}}}À̳ª {{{Comparable}}}°ú °°Àº ·çºñ¿¡ ³»ÀåµÈ È¥ÇÕüµéÀº ¿©·¯ºÐ²²¼­ ÀÛ¼ºÇϽŠŬ·¡½º¿Í ¸î¸î ·¹ÀϽº È¥ÇÕü¸¦ ´ë´ÜÇÏ°Ô È®ÀåÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª ±×°ÍÀº ÀÌ ÁÖÁ¦¿¡ ´ëÇÑ °í±Þ ÁÖÁ¦ÀÔ´Ï´Ù. ÀÌÁ¦ ÀÌ°ÍÀÌ ¾ÆÁÖ ÈǸ¢ÇÏ´Ù°í »ý°¢ÇϽðÚÁö¸¸ Á¶½ÉÇÏ¼Å¾ß ÇÒ °ÍÀÌ ÀÖ½À´Ï´Ù. È¥ÇÕü¸¦ Àß ÀÛ¼ºÇÑ °æ¿ì¿¡´Â ÀÌ°ÍÀÌ ¸ÚÁöÁö¸¸ °³¹ßÀÚ°¡ ÁÖÀǸ¦ ±â¿ïÀÌÁö ¾Ê°í À̸§À» ºÙÀ̴µ¥ ÁÖÀǸ¦ ±â¿ïÀÌÁö ¾Ê´Â´Ù¸é ÇÁ·Î±×·¥¿¡ Å« È¥¶õÀÌ »ý±â°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î¼­ ÆÄÀÌ°ªÀ» ¼Ò¼öÁ¡ 72¹ø° ÀÚ¸®±îÁö °®°í ÀÖ´Â PI¶ó´Â »ó¼ö°¡ ÀÖ´Ù°í ÇսôÙ. ÀÌ°ÍÀº ÀÌ Á¤µµÀÌ Á¤¹Ðµµ°¡ ÇÊ¿äÇÏ¿© Á÷Á¢ ÀÔ·ÂÇÑ °ÍÀÔ´Ï´Ù. ±×·±µ¥ ÀÌ°ÍÀ» ºô¸® ¸ÆµÎÆÛ½º¾¾°¡ ÀÛ¼ºÇÑ »ï°¢ÇÔ¼ö ¶óÀ̺귯¸®¿¡ È¥ÇÕÇÏ¿´´Âµ¥ ÀÌ ¶óÀ̺귯¸®¿¡¼­´Â ¼Ò¼öÁ¡ 5° ÀÚ¸®±îÁö ±¸ÇÑ ÆÄÀÌ°ªÀ» {{{PI}}}¶ó´Â »ó¼ö¿¡ ´ã¾Æ µÎ¾ú´Ù°í ÇսôÙ. ¿©·¯ºÐÀº 72¹ø° ÀÚ¸®±îÁö Á¤¹ÐÇÏ°Ô ±¸ÇØ¾ß ÇÏÁö¸¸ ¹Ùº¸°°Àº ºô¸® ¸ÆµÎÆÛ½º ¾¾ ´öºÐ¿¡ ÀÌ »ó¼ö°¡ ¿ì¼±ÇÏ°Ô µÉ ¼öµµ ÀÖ½À´Ï´Ù. ¸ðµâ À̸§À̳ª º»ÀÎ À̸§À» ¾Õ¿¡ Áý¾î ³Ö¾î¼­ À̸§ ÁöÀº °ÍÀ» À¯ÀÏÇÏ°Ô Çϼż­ ´Ù¸¥ Äڵ带 °Çµå¸®Áö ¾Ê°Ô ÇØ¾ß ÇÕ´Ï´Ù. ÀÌÁ¦ ÀÌ·¸°Ô »ý°¢ÇÏ½Ç °ÍÀÔ´Ï´Ù. "Àú ¸ÛûÀÌ°¡ ¸ðµâ ¾È¿¡ ¸Þ¼Òµå¸¦ ³Ö¾î µ×´Âµ¥ ¸Þ¼ÒµåÀÇ °æ¿ì¿¡´Â ¾î¶²°¡¿ä!? Àü ±×ÀÇ °í¾çÀ̸¦ Á×ÀÌ°í Á¦ µ·À» µ¹·Á¹Þ°í ½ÍÀºµ¥¿ä! Á¦ ¸Þ¼Òµå°¡ ¸¶Âù°¡Áö·Î Àú·± Áöµ¶ÇÑ ¿î¸íÀ» °Þ°Ô µÉ±î¿ä?" ÀÌ·± °Ý·ÄÇÑ °¨Á¤ °®°ÚÁö¸¸ ¸¶À½À» ´©±×·¯¶ß¸®½Ã°í, ÁÁÀº Ä£±¸¿©, ¸Þ¼Òµå´Â °°Àº ¿î¸íÀ» °ÞÁö ¾ÊÀ» °Ì´Ï´Ù. ¸Þ¼Òµå¸¦ È£ÃâÇÏ¸é ·çºñ´Â óÀ½¿¡ ¿ø·¡ Ŭ·¡½º¿¡ ÀÖ´ø ¸Þ¼Òµå¸¦ ¸ÕÀú º¾´Ï´Ù. ÀÌ°ÍÀÌ ¾øÀ¸¸é È¥ÇÕü¸¦ º¸°í, ¾øÀ¸¸é »óÀ§ Ŭ·¡½º¿Í ±× È¥ÇÕü¸¦ º¾´Ï´Ù. »ó¼öÀÇ µ¿ÀÛ ¹æ½Ä°ú´Â ¿ÏÀüÈ÷ ¹Ý´ëÀÔ´Ï´Ù. ±×¸®°í Àú´Â ¿Ö ÀÌ·±Áö ¸ð¸£°Ú½À´Ï´Ù. ÀÌ°ÍÀº ÃູÀÏ ¼öµµ ÀÖ°í, ÀúÁÖÀÏ ¼öµµ ÀÖ½À´Ï´Ù. ¿©·¯ºÐ²²¼­ ÀÛ¼ºÇϽŠ¸Þ¼Òµå¸¦ ´ëüÇÏ°í ½ÍÀ» ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ ÀϹÝÀûÀ¸·Î ÀÌ°ÍÀÌ °¡Àå ¾ÈÀüÇÑ »ó°ü °ü°èÀ̺ó´Ù. == ÆÄÀÏ == ÇÁ·Î±×·¥ÀÌ Á¡Á¡ Ä¿Áö¸é 5MBÂ¥¸® Å« ÆÄÀÏ Çϳª ¾È¿¡ ¸ðµç Äڵ带 ´Ù Áý¾î³Ö°í ½ÍÁö´Â ¾ÊÀ¸½Ç °ÍÀÔ´Ï´Ù. Äڵ带 ÆÄÀÏ·Î ³ª´©¾î¼­ ´ã´Â °ÍÀº Äڵ带 ³ª´©´Â °¡Àå ¿À·¡µÇ°í ½¬¿î ¹æ¹ý Áß¿¡ ÇϳªÀÔ´Ï´Ù. ÀÌ°ÍÀ» °¡Àå ¸¶Áö¸·¿¡ ´Ù·ç´Â ÀÌÀ¯´Â Äڵ带 ³ª´©´Â ¹æ¹ý¿¡ ´ëÇÑ ¿©·¯ºÐÀÇ ´ë´äÀÌ "ÆÄÀÏ·Î ³ª´²¼­ Áý¾î ³Ö¾î!"¶ó´Â °ÍÀÌ ¾Æ´Ï±æ ¹Ù·¨±â ¶§¹®ÀÔ´Ï´Ù. ·çºñ¿¡´Â ´õ ¸¹°í ´õ ÁÁ°í ÀûÇÕÇÑ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. Á¦ »ý°¢¿£ PHP ÇÁ·Î±×·¡¸ÓµéÀÌ Æ¯È÷ ÀÌ·±½ÄÀ¸·Î ¿©±â Àú±â¼­ »ó½ÀÀûÀ¸·Î Äڵ带 Æ÷ÇÔ½Ãų °Í °°½À´Ï´Ù. »èÁ¦ ¸í·É°ú °°Àº ¹úä¿ë Ä®ÀÌ ÀÖ¾î¾ß µ¹¾Æ´Ù´Ò ¼ö ÀÖ´Â ÆÄÀÏÀÇ Á¤±ÛÀ» ¸¸µé°ÚÁö¿ä. ÁÖÁ¦¿¡¼­ ¹þ¾î³µ³×¿ä. ·çºñ¿¡¼­ ÆÄÀÏÀ» Æ÷ÇÔ½ÃÅ°·Á¸é µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. {{{load}}}¿Í ÀÌ°ÍÀÇ ¿ì¾ÆÇÑ »çÃÌÀÎ {{{require}}}ÀÔ´Ï´Ù. µÑÀÇ Â÷ÀÌÁ¡À̶ó°í Çϸé {{{load}}} Å°¿öµå´Â ¼Ò½º ÄÚµå ÆÄÀÏÀ» ¹«Á¶°Ç Æ÷ÇÔ½ÃÅ°°í {{{require}}}´Â ¿ÀÁ÷ ÇÑ ¹ø¸¸ Æ÷ÇÔ½Ãŵ´Ï´Ù. Áï, {{{require}}}¸¦ ÇÏ¸é º¯¼ö¿Í ¸Þ¼Òµå°¡ °ãÄ¡Áö ¾Ê½À´Ï´Ù. {{{ load "libraries/myfile.rb" require "/home/myaccount/code/libraries/myotherfile.rb" }}} °¢°¢ÀÇ Å°¿öµå´Â »ó´ë °æ·Î¿Í Àý´ë °æ·Î ¸ðµÎ¸¦ ¹Þ½À´Ï´Ù. ·çºñ°¡ »ó´ë °æ·Î·Î ÀνÄÇÑ´Ù¸é ÇöÀç µð·ºÅ丮(±Ã±ÝÇϽŠºÐµéÀ» À§ÇÏ¿©: ÀÌ°ÍÀº $:¿¡ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù.)¿¡¼­ ãÀ» °ÍÀÔ´Ï´Ù. {{{require}}} ¸í·ÉÀº Á¶°Ç¹®À̳ª ¼øȯ, ±× ¿Ü ´Ù¸¥ ±¸¼ºÃ¼¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ°í º¯¼ö¸¦ ÀÌ¿ëÇÏ¿© °æ·Î¸¦ ÁöÁ¤(ÀÌ°ÍÀº {{{load}}}·Î´Â ºÒ°¡´ÉÇÕ´Ï´Ù)ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Æ÷ÇÔ½ÃŲ ÆÄÀÏÀÇ Áö¿ª º¯¼ö´Â Æ÷ÇÔÇÑ ÆÄÀÏÀÇ ¹®¸ÆÀ¸·Î »õ¾î³ª¿ÀÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº PHP, C/C++ÀÇ µ¿ÀÛ°ú´Â ´Ù¸¨´Ï´Ù. ÀÌ º¯¼öµéÀº ÀÛ¼º½ÃÀÇ ¹®¸Æ¿¡ ¹­¿©¹ö¸®°Ô µË´Ï´Ù. == ÀÌ Àå¿¡¼­´Â == Äڵ带 ´õ ³í¸®ÀûÀÌ°í »ç¿ëÇϱ⠽¬¿î Á¶°¢À¸·Î ³ª´©´Â ¹ýÀ» ¹è¿ü½À´Ï´Ù. ÀÌ·± °ÍÀ» ¹è¿ü½À´Ï´Ù. * Äڵ带 ºí·Ï, ¸Þ¼Òµå, Ŭ·¡½º, ¸ðµâ, ÆÄÀÏÀ» ÅëÇÏ¿© ³ª´©´Â ¹æ¹ý * º¯¼ö ½ºÄÚÇÁÀÇ µ¿ÀÛ°ú ÀÌÁ¡ * Ŭ·¡½º¿Í °´Ã¼¸¦ Á÷Á¢ ÀÛ¼ºÇÏ°í, ´Ù¸¥ Ŭ·¡½º¿Í °´Ã¼¸¦ º¯°æÇÏ´Â ¹æ¹ý * Ŭ·¡½º¿Í Äڵ带 ¼¯°í Ŭ·¡½º¸¦ È®Àå½Ãų ¼ö ÀÖ´Â ¸ðµâ