Ruby¸ßÊÖµãÆÀScala±à³ÌÓïÑÔ
<תÔØ>
¡ôScala µÄÈ·ºÜ°ô¡£
¡ôÎÒµÄÈ·ÈÏΪ¼ÆËã»úѧԺӦ¸Ã¿ªÒ»ÃÅ Scala µÄÓïÑԿγ̡£
ÔÚÕâƪÎÄÕÂÖУ¬ÎһὲÊöΪʲôÎÒ»áÓÐÕâÑùµÄÏë·¨£¬ÔÚ´Ë֮ǰ£¬Óм¸µãÎÒÏëÒªÏÈÉùÃ÷һϣº
±¾ÎÄÎÞÒâ¶Ô±à³ÌÓïÑÔ½øÐÐÆÀ±È£¬ÎÒÒª½²ÊöµÄÖ÷ÌåÊÇΪʲôÄãÓ¦¸Ãѧϰ Scala¡£51CTO֮ǰÔø·¢²¼¹ýһƪ Java ³ÌÐòԱΪºÎҪѧϰScalaµÄÎÄÕ£¬¿ÉÄÜÒ²»á¶ÔÄãÓÐËù°ïÖú¡£
Ä¿Ç° Scala ÓÐÁ½¸öʵÏÖ·½Ê½£¬Ò»ÖÖÊÇÔÚ JVM£¨Java ÐéÄâ»ú£©ÉÏÔËÐУ¬ÁíÒ»ÖÖÊÇÔÚ CLR£¨Common Language Runtime µÄËõд£¬¼´¹«¹²ÓïÑÔÔËÐп⣩ÉÏÔËÐС£²»¹ý£¬JVM µÄʵÏÖ·½Ê½¸üΪ³ÉÊì¡£Èç¹ûÄãÏëҪʹÓà .Net framework ¿ò¼Ü£¬ÎÒÈÏΪ×îºÃ»¹ÊÇÌý´Ó Lift framework ¿ò¼Ü´´Ê¼ÈË´óÎÀ²¨À¿Ë£¨David Pollack£©µÄ½¨Ò飺ʹÓà F#¡£µ«ÔÚÕâƪÎÄÕÂÖУ¬ÎÒ½«Ö»¹Ø×¢ JVM ÕâÖÖʵÏÖ·½Ê½¡£
ÎÒÊÇÒ»¸ö Ruby ³ÌÐòÔ±£¬²¢ÇÒÎÒ»á¼ÌÐøϲ»¶ Ruby£¬ÒòΪËüÊÇÎÒ¼ûµ½¹ýµÄ×î°ôµÄ¶¯Ì¬ÓïÑÔ¡£µ«ÎÒҲϲ»¶ Scala£¬ÒòΪÔÚÆäËû¹¤×÷ÁìÓò£¬ËüÌṩµÄijЩ¹¦Äܷdz£Ç¿´ó¡£
ÏÖÔÚ£¬ÈÃÎÒÃÇÀ´×Ðϸ·ÖÎöһϣ¬ÊÇÄÄЩÔÒòÈÃÎÒÑ¡Ôñ Scala ×÷ΪÎÒµÄÏÂÒ»¸ö±à³ÌÓïÑÔ£º
Ç¿´óµÄ±à³ÌÓïÑÔ
Scala ÊÇÒ»Ãŷdz£Ç¿´óµÄÓïÑÔ£¬ËüÔÊÐíÓû§Ê¹ÓÃÃüÁîºÍº¯Êý·¶Ê½½øÐбàд´úÂ룬Òò´Ë£¬±à³ÌʱÄã¿ÉÒÔʹÓó£ÓõÄÃüÁîʽÓï¾ä£¬¾ÍÏñÎÒÃÇʹÓà C¡¢Java¡¢PHP ÒÔ¼°ºÜ¶àÆäËûÓïÑÔÒ»Ñù£¬¶øÇÒ£¬ÄãÒ²¿ÉÒÔʹÓÃÀàËÆ Lisp ÓïÑÔÖк¯ÊýʽÓï¾ä£¬»¹ÓУ¬Äã¿ÉÒÔ»ìºÏʹÓÃÕâÁ½ÖÖ·ç¸ñµÄÓï¾ä£¬¾ÍÏñ Ruby »ò Groovy¡£
²»¹ý£¬µ±ÎÒÃÇ̸Â۵ĺ¯Êý·¶Ê½Ê±£¬Óë Ruby ºÍ Groovy ÓÐÒ»µã²»Í¬µÄµØ·½£¬ÄǾÍÊÇ Scala ¼¸ºõÖ§³Öº¯ÊýÓïÑÔÖÐËùÓÐÒÑÖªµÄ¹¦ÄÜ£¬±ÈÈ磬ģʽƥÅ䣨Pattern matching£©¡¢ÑÓ³Ù³õʼ»¯£¨Lazy initialization£©¡¢Æ«º¯Êý£¨Partial Function£©¡¢²»±äÐÔ£¨Immutability£©£¬µÈµÈ...¼´ÊÇ˵£¬ÈÏʶµ½ÕâÑùÒ»¸öÊÂʵÊǷdz£ÖØÒªµÄ£ºScala µÄÇ¿´óÔ´×ÔËü¶Ôº¯Êý·¶Ê½µÄÖ§³Ö£¬¶øºóÕßÁî Scala ³ÉΪһÖָߵȼ¶£¨high-level£©µÄ±à³ÌÓïÑÔ¡£¶ÔÓڸߵȼ¶µÄ±à³ÌÓïÑÔ£¬ÄãÖ»Ðè¹Ø×¢ what£¨×öʲô£©¶ø²»ÊÇÈçºÎ×ö£¨how£©¡£
ÏÂÃ棬ÈÃÎÒÃÇ¿´Ò»¸ö Java ʾÀý£º
int[] x = {1,2,3,4,5,6}; ArrayList res = new ArrayList(); for (int v : x) { if (v % 2 == 1) res.add(new Integer(v)); }
×Ðϸ¿´Ò»ÏÂÉÏÃæÕâ¶ÎʾÀý´úÂ룬Äã»á×¢Òâµ½£¬ÎÒÏëÒª×öµÄ“what”²¿·Ö£¨¹ýÂ˵ôÆæÊýÖµ£©½ö³öÏÖÔÚµÚËÄÐÐÖУ¬¶øÆäÓàÐÐÔòÊÇ“how”ÈçºÎ×öµÄ²¿·Ö£¨½á¹û±äÁ¿µÄ³õʼ»¯ÒÔ¼°Ò»¸öÑ»·²Ù×÷£©¡£Èç¹ûÎÒÏëÒªÔÙдһ¸ö¹ýÂËÆ÷£¬ÓÃÓÚɸѡżÊýÖµ£¬ÄǾÍÐèÒªÔÙдÎåÐдú
Ïà¹ØÎĵµ£º
RuportÊÇÒ»¸öÃâ·ÑµÄRuby±¨±í¹¤¾ß£¬Ëü¿ÉÒÔÁîµ½ÖÆ×÷±¨±íÈí¼þ±äµÃ¼òµ¥Ò»Ð©¡£RuportÖ§³Ö´ÓÎļþ»òÕßÊý¾Ý¿â»ñµÃÊý¾Ý£¬Ìṩ¹¤¾ß²Ù×÷Êý¾Ý¡£¶îÍâµØ£¬RuportÖ§³Ö¸ßÀ©Õ¹µÄ¸ñʽ»¯Èí¼þ£¬Ä¿Ç°Äܹ»Ö§Ô®HTML¡¢PDF¡¢CSVºÍÎı¾Êä³ö¡£
Ruport¿ÉÄÜÊÇRubyĿǰΨһµÄ±¨±í¹¤¾ß£¬Ä¿Ç°ÔÚ³ÖÐø¿ª·¢ÖУ¬¸ü¶àµÄÐÂÌØÐÔÕýÔÚÌí¼Ó¡£
°²×°·½·¨£º
gem instal ......
%{String} ÓÃÓÚ´´½¨Ò»¸öʹÓÃË«ÒýºÅÀ¨ÆðÀ´µÄ×Ö·û´®
%Q{String} ÓÃÓÚ´´½¨Ò»¸öʹÓÃË«ÒýºÅÀ¨ÆðÀ´µÄ×Ö·û´®
%Q!Some String of “Characters”! <==> ” Some String of \”Characters\” “
%q{String} ÓÃÓÚ´´½¨Ò»¸öʹÓõ¥ÒýºÅÀ¨ÆðÀ´µÄ×Ö·û´®
%q!Som ......
ÓÐÒ»¸öȫеÄÏîÄ¿£¬ÒòΪ¿¼Âǵ½½«À´µÄÊý¾ÝÀ©Õ¹ÐÔÄÜ£¬ËùÒÔ¿¼ÂÇÓÃCassandra×öÊý¾Ý´æ´¢£¬Ç°¶ËÓÃLighttpd + FastCGI + Rails¡£ÔÚʹÓÃCassandraµÄʱºò£¬¾õµÃÓÐһЩ¶«Î÷¿ÉÄÜ´ó¼Ò¶¼ÐèÒª£¬¾ÍдÁËÒ»¸ö¼òµ¥µÄÖ¸ÄÏ¡£ÒòΪÄÚÈݱȽϳ¤£¨16Ò³£©£¬¾ÍŪÁ˸öPDFÎļþ¸ø´ó¼ÒÏÂÔØ¡£
Cassandra in Action with Twitter's Ruby Client.pdf
Èç¹ûÏÂÔ ......
RuportÖÐpdf_writer¶ÔÖÐÎĵÄÖ§³Ö²¢²»ºÃ£¬Êä³öµÄÖÐÎÄÏÔʾµÄÊÇÂÒÂë¡£ÉÏÍø²éÁ˺ܶà×ÊÁÏ£¬Ò²Ã»ÓÐÕÒµ½ºÃµÄ½â¾ö·½°¸£¬ÎÞÄÎÖ»ºÃ²é¿´Ô´´úÂ룬µ½µ×ΪʲôRuport×Ô´øµÄPDF¹¤¾ß²»Ö§³ÖÖÐÎÄÊä³ö¡£
Ruport::Formatter::PDF::WriterÖÐÕÒµ½ÒÔÏ´úÂë
metrics = load_font_metrics(font)
metrics = PDF::Writer: ......
RubyÓïÑÔѧϰϵÁÐ--»ù±¾µÄrubyÓï·¨
1. »ù±¾µÄrubyÓï·¨
1.1 ±äÁ¿¡¢³£Á¿ºÍÀàÐÍ
1) ¶¨Òå±äÁ¿
±äÁ¿ÀàÐÍ
ÃèÊö
ʾÀý
¾Ö²¿±äÁ¿£¨»òα±äÁ¿£©
ÒÔСд×Öĸ»òÏ»®Ïß¿¨Í·
var _var
È«¾Ö±äÁ¿
ÒÔ$¿ªÍ·
$ ......