ScalaÊǼæÈݵÄ
Scala²»ÐèÒªÄã´ÓJavaƽ̨ºóÍËÁ½²½È»ºóÌøµ½JavaÓïÑÔÇ°ÃæÈ¥¡£ËüÔÊÐíÄãÔÚÏÖ´æ´úÂëÖмӵã¶ù¶«Î÷¡ª¡ªÔÚÄãÒÑÓеĶ«Î÷ÉϽ¨É衪¡ªÒòΪËü±»Éè¼Æ³ÉÎÞ·ìµØÓëJavaʵʩ»¥²Ù×÷¡£Scala³ÌÐò»á±»±àÒëΪJVMµÄ×Ö½ÚÂë¡£ËüÃǵÄÖ´ÐÐÆÚÐÔÄÜͨ³£ÓëJava³ÌÐòÒ»Ö¡£Scala´úÂë¿ÉÒÔµ÷ÓÃJava·½·¨£¬·ÃÎÊJava×ֶΣ¬¼Ì³Ð×ÔJavaÀàºÍʵÏÖJava½Ó¿Ú¡£ÕâЩ¶¼²»ÐèÒªÌرðµÄÓï·¨£¬ÏÔʽ½Ó¿ÚÃèÊö£¬»òÕ³½Ó´úÂ롣ʵ¼ÊÉÏ£¬¼¸ºõËùÓÐScala´úÂ붼¼«¶ÈÒÀÀµÓÚJava¿â£¬¶ø¾³£ÎÞÐëÔÚ³ÌÐòÔ±Òâʶµ½Õâµã¡£
½»»¥Ê½²Ù×÷µÄÁíÒ»¸ö·½ÃæÊÇScala¼«¶ÈÖØÓÃÁËJavaÀàÐÍ¡£ScalaµÄIntÀàÐÍ´ú±íÁËJavaµÄÔʼÕûÊýÀàÐÍint£¬Float´ú±íÁËfloat£¬Boolean´ú±íboolean£¬µÈµÈ¡£ScalaµÄÊý×é±»Ó³Éäµ½JavaÊý×é¡£ScalaͬÑùÖØÓÃÁËÐí¶à±ê×¼Java¿âÀàÐÍ¡£ÀýÈ磬ScalaÀïµÄ×Ö´®Îı¾"abc"ÊÇjava.lang.String£¬¶øÅ׳öµÄÒì³£±ØÐëÊÇjava.lang.ThrowableµÄ×ÓÀà¡£
Scala²»½öÖØÓÃÁËJavaµÄÀàÐÍ£¬»¹°ÑËüÃÇ¡°´ò°ç¡±µÃ¸üƯÁÁ¡£ÀýÈ磬ScalaµÄ×Ö´®Ö§³ÖÀàËÆÓÚtoIntºÍtoFloatµÄ·½·¨£¬¿ÉÒÔ°Ñ×Ö´®×ª»»³ÉÕûÊý»òÕ߸¡µãÊý¡£Òò´ËÄã¿ÉÒÔдstr.toIntÌæ´úInteger.parseInt(str)¡£ÈçºÎÔÚ²»´òÆÆ»¥²Ù×÷ÐԵĻù´¡ÉÏ×öµ½ÕâµãÄØ£¿JavaµÄStringÀ൱Ȼ²»»áÓÐtoInt·½·¨¡£Êµ¼ÊÉÏ£¬ScalaÓÐÒ»¸ö½â¾öÕâÖָ߼¶¿âÉè¼ÆºÍ»¥²Ù×÷ÐÔ²»ÏàºÍгµÄͨÓ÷½°¸¡£Scala¿ÉÒÔÈÃÄ㶨ÒåÒþʽת»»£ºimplicit conversion£¬Õâ³£³£ÓÃÔÚÀàÐÍʧÅ䣬»òÕßÑ¡Óò»´æÔڵķ½·¨Ê±¡£ÔÚÉÏÃæµÄÀý×ÓÀµ±ÔÚ×Ö´®ÖÐÑ°ÕÒtoInt·½·¨Ê±£¬Scala±àÒëÆ÷»á·¢ÏÖStringÀàÀïûÓÐÕâÖÖ·½·¨£¬µ«Ëü»á·¢ÏÖÒ»¸ö°ÑJavaµÄStringת»»ÎªScalaµÄRichStringÀàµÄÒ»¸öʵÀýµÄÒþʽת»»£¬ÀïÃ涨ÒåÁËÕâô¸ö·½·¨¡£ÓÚÊÇÔÚÖ´ÐÐtoInt²Ù×÷֮ǰ£¬×ª»»±»ÒþʽӦÓá£
Scala´úÂëͬÑù¿ÉÒÔÓÉJava´úÂëµ÷Óá£ÓÐʱÕâÖÖÇé¿öÒª¸ü¼Ó΢ÃÒòΪScalaÊÇÒ»ÖÖ±ÈJava¸ü·á¸»µÄÓïÑÔ£¬ÓÐЩScala¸üÏȽøµÄÌØÐÔÔÚËüÃÇÄÜÓ³Éäµ½JavaÇ°ÐèÒªÏȱ»±àÂëһϡ£µÚ29ÕÂ˵Ã÷ÁËÆäÖеÄϸ½Ú¡£
ScalaÊǼò½àµÄ
Scala³ÌÐòÒ»°ã¶¼ºÜ¶Ì¡£Scala³ÌÐòÔ±Ôø±¨¸æ˵ÓëJava±ÈÆðÀ´´úÂëÐÐÊý¿ÉÒÔ¼õÉÙµ½1/10¡£ÕâÓпÉÄÜÊǸö¼«ÏÞµÄÀý×Ó¡£½Ï±£ÊصĹÀ¼Æ´ó¸Å±ê×¼µÄScala³ÌÐòÓ¦¸ÃÓÐJavaдµÄͬÑùµÄ³ÌÐòÒ»°ëÐÐÊý×óÓÒ¡£¸üÉÙµÄÐÐÊý²»½öÒâζןüÉٵĴò×Ö¹¤×÷£¬Í¬ÑùÒâζןüÉٵĻ°ÔÚÔĶÁºÍÀí½â³ÌÐòÉϵÄŬÁ¦¼°¸üÉٵijö´í¿ÉÄÜ¡£Ðí¶àÒòËØÔÚ¼õÉÙ´úÂëÐÐÉÏÆðÁË×÷Óá£
Ê×ÏÈ£¬ScalaµÄÓï·¨±ÜÃâÁËһЩÊø¸¿Java³ÌÐòµÄ¹Ì¶¨Ð´·¨¡£ÀýÈ磬ScalaÀïµÄ·ÖºÅÊÇ¿ÉÑ¡µÄ£¬ÇÒͨ³£²»Ð´¡£ScalaÓï·¨ÀﻹÓкܶàÆäËûµÄµØ·½Ê¡ÂÔÁ˶«Î÷¡£±È·½Ëµ£¬±È½ÏÒ»ÏÂÄãÔÚJavaºÍScalaÀïÊÇÈçºÎдÀ༰¹¹Ô캯ÊýµÄ¡£ÔÚJavaÀ´øÓй¹Ô캯ÊýµÄÀླ£¿´ÉÏÈ¥ÊÇÕâ¸öÑù×Ó£º
- // ÔÚJavaÀïclass MyClass { private int index; private String name; public MyClass(int index, String name) { this.index = index; this.name = name; }}
ÔÚScalaÀÄã»áд³ÉÕâÑù£º
- class MyClass(index: Int, name: String)
ÓÐÖúÓÚScalaµÄ¼ò½àÒ׶®µÄÁíÒ»¸öÒòËØÊÇËüµÄÀàÐÍÍƶϡ£Öظ´µÄÀàÐÍÐÅÏ¢¿ÉÒÔ±»ºöÂÔ£¬Òò´Ë³ÌÐò±äµÃ¸üÓÐÌõÀíºÍÒ׶Á¡£µ«»òÐí¼õÉÙ´úÂë×î¹Ø¼üµÄÊÇÒòΪÒѾ´æÔÚÓÚÄãµÄ¿âÀï¶ø²»ÐèҪдµÄ´úÂë¡£Scala¸øÁËÄãÐí¶à¹¤¾ßÀ´¶¨ÒåÇ¿ÓÐÁ¦µÄ¿âÈÃÄãץס²¢ÌáÁ¶³öͨÓõÄÐÐΪ¡£ÀýÈ磬¿âÀàµÄ²»Í¬·½Ãæ¿ÉÒÔ±»·Ö³ÉÈô¸ÉÌØÖÊ£¬¶øÕâЩÓпÉÒÔ±»Áé»îµØ»ìºÏÔÚÒ»Æð¡£»òÕߣ¬¿â·½·¨¿ÉÒÔÓòÙ×÷·û²ÎÊý»¯£¬´Ó¶øÈÃÄãÓÐЧµØ¶¨ÒåÄÇЩÄã×Ô¼º¿ØÖƵĹ¹Ôì¡£ÕâЩ¹¹Ôì×éºÏÔÚÒ»Æ𣬾ÍÄܹ»ÈÿâµÄ¶¨Òå¼ÈÊǸ߲㼶µÄÓÖÄÜÁé»îÔËÓá£
ScalaÊǸ߲㼶µÄ
³ÌÐòÔ±×ÜÊÇÔں͸´ÔÓÐÔ¾À²ø¡£ÎªÁ˸߲ú³öµÄ±à³Ì£¬Äã±ØÐëÃ÷°×Ä㹤×÷µÄ´úÂë¡£¹ý¶È¸´ÔӵĴúÂë³ÉÁ˺ܶàÈí¼þ¹¤³Ì±ÀÀ£µÄÔÒò¡£²»ÐÒµÄÊÇ£¬ÖØÒªµÄÈí¼þÍùÍùÓи´ÔÓµÄÐèÇó¡£ÕâÖÖ¸´ÔÓÐÔ²»¿É±ÜÃ⣻±ØÐ루Óɲ»ÊÜ¿Ø£©×ªÎªÊÜ¿Ø¡£
Scala¿ÉÒÔͨ¹ýÈÃÄãÌáÉýÄãÉè¼ÆºÍʹÓõĽӿڵijéÏ󼶱ðÀ´°ïÖúÄã¹ÜÀí¸´ÔÓÐÔ¡£ÀýÈ磬¼ÙÉèÄãÓÐÒ»¸öString±äÁ¿name£¬ÄãÏëŪÇå³þÊÇ·ñString°üº¬Ò»¸ö´óд×Ö·û¡£ÔÚJavaÀÄã»òÐíÕâôд£º
- // ÔÚJavaÀïboolean nameHasUpperCase = false;for (int i = 0; i < name.length(); ++i) { if (Character.isUpperCase(name.charAt(i))) { nameHasUpperCase = true; break; }}
ÔÚScalaÀÄã¿ÉÒÔд³É£º
- val nameHasUpperCase = name.exists(_.isUpperCase)
Java´úÂë°Ñ×Ö´®¿´×÷Ñ»·ÖÐÖð×Ö·û²½½øµÄµÍ²ã¼¶ÊµÌå¡£Scala´úÂë°ÑͬÑùµÄ×Ö´®µ±×÷ÄÜÓÃÂ۶ϣºpredicate²éѯµÄ×Ö·û¸ß²ã¼¶ÐòÁС£Ã÷ÏÔScala´úÂë¸ü¶Ì²¢ÇÒ¡ª¡ª¶ÔѵÁ·ÓÐËصÄÑÛ¾¦À´Ëµ¡ª¡ª±ÈJava´úÂë¸üÈÝÒ׶®¡£Òò´ËScala´úÂëÔÚͨÅ̸´ÔÓ¶ÈÔ¤ËãÉÏÄܼ«¶ÈµØ±äÇá¡£ËüÒ²¸üÉÙ¸øÄã»ú»á·¸´í¡£
Â۶ϣ¬_.isUpperCase£¬ÊÇÒ»¸öScalaÀïÃ溯ÊýʽÎı¾µÄÀý×Ó¡£ËüÃèÊöÁË´øÒ»¸ö×Ö·û²ÎÁ¿£¨ÓÃÏ»®Ïß×Ö·û´ú±í£©µÄº¯Êý£¬²¢²âÊÔÆäÊÇ·ñΪ´óд×Öĸ¡£
ÔÔòÉÏ£¬ÕâÖÖ¿ØÖƵijéÏóÔÚJavaÖÐÒ²ÊÇ¿ÉÄܵġ£Îª´ËÐèÒª¶¨ÒåÒ»¸ö°üº¬³éÏó¹¦Äܵķ½·¨µÄ½Ó¿Ú¡£ÀýÈ磬Èç¹ûÄãÏëÖ§³Ö¶Ô×Ö´®µÄ²éѯ£¬¾ÍÓ¦ÒýÈëÒ»¸öÖ»ÓÐÒ»¸ö·½·¨hasPropertyµÄ½Ó¿ÚCharacterProperty£º
- // ÔÚJavaÀïinterface CharacterProperty { boolean hasProperty(char ch);} È»ºóÄã¿ÉÒÔÔÚJavaÀïÓÃÕâ¸ö½Ó¿Ú¸ñʽһ¸ö·½·¨exists£ºËü´øÒ»¸ö×Ö´®ºÍÒ»¸öCharacterProperty²¢·µ»ØÕæÈç¹û×Ö´®ÖÐÓÐij¸ö×Ö·û·ûºÏÊôÐÔ¡£È»ºóÄã¿ÉÒÔÕâÑùµ÷ÓÃexists£º// ÔÚJavaÀïexists(name, new CharacterProperty { boolean hasProperty(char ch) { return Character.isUpperCase(ch); }});
È»¶ø£¬ËùÓÐÕâЩÕæµÄ¸Ð¾õºÜÖØ¡£Öص½Êµ¼ÊÉ϶àÊýJava³ÌÐòÔ±¶¼²»»áÈÇÕâ¸öÂé·³¡£ËûÃÇ»áÄþԸд¸öÑ»·²¢Ä®ÊÓËûÃÇ´úÂëÀ︴ÔÓÐÔµÄÀÛ¼Ó¡£ÁíÒ»·½Ã棬ScalaÀïµÄº¯ÊýʽÎı¾ÕæµØºÜÇáÁ¿£¬ÓÚÊǾÍƵ·±±»Ê¹Óá£Ëæ×ŶÔScalaµÄÖð²½Á˽⣬Äã»á·¢ÏÖÔ½À´Ô½¶à¶¨ÒåºÍʹÓÃÄã×Ô¼ºµÄ¿ØÖƳéÏóµÄ»ú»á¡£Ä㽫·¢ÏÖÕâÄÜ°ïÖú±ÜÃâ´úÂëÖظ´²¢Òò´Ë±£³ÖÄãµÄ³ÌÐò¼ò¶ÌºÍÇåÎú¡£
ScalaÊǾ²Ì¬ÀàÐ͵Ä
¾²Ì¬ÀàÐÍϵͳÈ϶¨±äÁ¿ºÍ±í´ïʽÓëËüÃdzÖÓкͼÆËãµÄÖµµÄÖÖÀàÓйء£Scala¼á³Ö×÷ΪһÖÖ¾ßÓзdz£ÏȽøµÄ¾²Ì¬ÀàÐÍϵͳµÄÓïÑÔ¡£´ÓJavaÄÇÑùµÄÄÚǶÀàÐÍϵͳÆð²½£¬Äܹ»ÈÃÄãʹÓ÷ºÐÍ£ºgenerics²ÎÊý»¯ÀàÐÍ£¬Óý»¼¯£ºintersectionÁªºÏÀàÐͺÍÓóéÏóÀàÐÍ£ºabstract typeÒþ²ØÀàÐ͵Äϸ½Ú¡£ÕâЩΪ½¨ÔìºÍ×éÖ¯Äã×Ô¼ºµÄÀàÐÍ´òÏÂÁ˼áʵµÄ»ù´¡£¬´Ó¶øÄܹ»Éè¼Æ³ö¼´°²È«ÓÖÄÜÁé»îʹÓõĽӿڡ£
Èç¹ûÄãϲ»¶¶¯Ì¬ÓïÑÔÈçPerl£¬Python£¬Ruby»òGroovy£¬Äã»òÐí·¢ÏÖScala°ÑËüµÄ¾²Ì¬ÀàÐÍϵͳÁÐΪÆäÓŵãÖ®Ò»ÓÐЩÆæ¹Ö¡£±Ï¾¹£¬Ã»Óо²Ì¬ÀàÐÍϵͳÒѱ»ÒýΪ¶¯Ì¬ÓïÑÔµÄijЩÖ÷Òª³¤´¦¡£¾ø´ó¶àÊýÆÕ±éµÄÕë¶Ô¾²Ì¬ÀàÐ͵ÄÂ۶϶¼ÈÏΪËüÃÇʹµÃ³ÌÐò¹ý¶ÈÈß³¤£¬×èÖ¹³ÌÐòÔ±ÓÃËûÃÇÏ£ÍûµÄ·½Ê½±í´ï×Ô¼º£¬²¢Ê¹Èí¼þϵͳ¶¯Ì¬¸Ä±äµÄijЩģʽ³ÉΪ²»¿ÉÄÜ¡£È»¶ø£¬ÕâЩÂ۶Ͼ³£Õë¶ÔµÄ²»ÊǾ²Ì¬ÀàÐ͵Ä˼Ï룬¶øÊÇÖ¸ÔðÌض¨µÄÄÇЩ±»Òâʶµ½Ì«Èß³¤»òÌ«²»Áé»îµÄÀàÐÍϵͳ¡£ÀýÈ磬Alan Kay£¬SmalltalkÓïÑԵķ¢Ã÷Õߣ¬ÓÐÒ»´ÎÆÀÂÛ£º¡°ÎÒ²»ÊÇÕë¶ÔÀàÐÍ£¬¶øÊDz»ÖªµÀÓÐÄĸöûÓÐÍêÍ´µÄÀàÐÍϵͳ£¬ËùÒÔÎÒ»¹ÊÇϲ»¶¶¯Ì¬ÀàÐÍ¡£¡±
ÎÒÃÇÏ£ÍûÄÜÔÚÊéÀï˵·þÄ㣬ScalaµÄÀàÐÍϵͳÊÇԶ̸²»ÉÏ»á±ä³É¡°ÍêÍ´¡±¡£Êµ¼ÊÉÏ£¬ËüƯÁÁµØ˵Ã÷ÁËÁ½¸ö¹ØÓÚ¾²Ì¬ÀàÐÍͨ³£¿¼ÂǵÄÊÂÇ飨µÄ½â¾ö·½°¸£©£ºÍ¨¹ýÀàÐÍÍƶϱÜÃâÁË׸ÑÔºÍͨ¹ýģʽƥÅ估һЩеıàдºÍ×éÖ¯ÀàÐ͵İ취»ñµÃÁËÁé»îÐÔ¡£°ÑÕâЩ°í½Åʯ°áµôºó£¬¾²Ì¬ÀàÐÍϵͳµÄ¾µäÓÅÔ½ÐÔ½«¸ü±»ÉÍʶ¡£ÆäÖÐ×îÖØÒªµÄ°üÀ¨³ÌÐò³éÏóµÄ¿É¼ìÑéÊôÐÔ£¬°²È«µÄÖع¹£¬ÒÔ¼°¸üºÃµÄÎĵµ¡£
¿É¼ìÑéÊôÐÔ¡£¾²Ì¬ÀàÐÍϵͳ¿ÉÒÔ±£Ö¤Ïû³ýijЩÔËÐÐʱµÄ´íÎó¡£ÀýÈ磬¿ÉÒÔ±£Ö¤ÕâÑùµÄÊôÐÔ£º²¼¶ûÐͲ»»áÓëÕûÊýÐÍÏà¼Ó£»Ë½ÓбäÁ¿²»»á´ÓÀàµÄÍⲿ±»·ÃÎÊ£»º¯Êý´øÁËÕýÈ·¸öÊýµÄ²ÎÊý£»Ö»ÓÐ×Ö´®¿ÉÒÔ±»¼Óµ½×Ö´®¼¯Ö®ÖС£
²»¹ýµ±Ç°µÄ¾²Ì¬ÀàÐÍϵͳ»¹²»Äܲ鵽ÆäËûÀàÐ͵ĴíÎ󡣱ȷ½Ëµ£¬Í¨³£²é²»µ½ÎÞ·¨ÖÕ½áµÄº¯Êý£¬Êý×éÔ½½ç£¬»ò³ýÁã´íÎó¡£Í¬ÑùÒ²²é²»µ½ÄãµÄ³ÌÐò²»·ûºÏʽÑùÊ飨¼ÙÉèÓÐÕâôһ·ÝʽÑùÊ飩¡£¾²Ì¬ÀàÐÍϵͳÒò´Ë±»ÈÏΪ²»ºÜÓÐÓöø±»ºöÊÓ¡£ÓßÂÛÈÏΪ¼ÈÈ»ÕâÖÖÀàÐÍϵͳֻÄÜ·¢ÏÖ¼òµ¥´íÎ󣬶øµ¥Ôª²âÊÔÄÜÌṩ¸ü¹ã·ºµÄ¸²¸Ç£¬ÓÖΪºÎ×ÔÑ°·³ÄÕÄØ£¿ÎÒÃÇÈÏΪÕâÖÖÂÛµ÷²»¶ÔÍ·¡£¾¡¹Ü¾²Ì¬ÀàÐÍϵͳȷʵ²»ÄÜÌæ´úµ¥Ôª²âÊÔ£¬µ«ÊÇÈ´ÄܼõÉÙÓÃÀ´ÕÕ¹ËÄÇЩȷÐè²âÊÔµÄÊôÐԵĵ¥Ôª²âÊÔµÄÊýÁ¿¡£Í¬Ñù£¬µ¥Ôª²âÊÔÒ²²»ÄÜÌæ´ú¾²Ì¬ÀàÐÍ¡£×ܶøÑÔÖ®£¬ÈçEdsger DijkstraËù˵£¬²âÊÔÖ»ÄÜÖ¤Ã÷´æÔÚ´íÎ󣬶ø·Ç²»´æÔÚ¡£Òò´Ë£¬¾²Ì¬ÀàÐÍÄܸøµÄ±£Ö¤»òÐíºÜ¼òµ¥£¬µ«ËüÃÇÊÇÎÞÂÛ¶àÉÙ²âÊÔ¶¼²»ÄܸøµÄÕæÕýµÄ±£Ö¤¡£
°²È«µÄÖع¹¡£¾²Ì¬ÀàÐÍϵͳÌṩÁËÈÃÄã¾ßÓи߶ÈÐÅÐĸĶ¯´úÂë»ù´¡µÄ°²È«Íø¡£ÊÔÏëÒ»¸ö¶Ô·½·¨¼ÓÈë¶îÍâµÄ²ÎÊýµÄÖع¹ÊµÀý¡£ÔÚ¾²Ì¬ÀàÐÍÓïÑÔÖУ¬Äã¿ÉÒÔÍê³ÉÐ޸ģ¬ÖرàÒëÄãµÄϵͳ²¢ÈÝÒ×ÐÞ¸ÄËùÓÐÒýÆðÀàÐÍ´íÎóµÄ´úÂëÐС£Ò»µ©ÄãÍê³ÉÁËÕâЩ£¬ÄãÈ·ÐÅÒѾ·¢ÏÖÁËËùÓÐÐèÒªÐ޸ĵĵط½¡£¶ÔÆäËûµÄ¼òµ¥Öع¹£¬Èç¸Ä±ä·½·¨Ãû»ò°Ñ·½·¨´ÓÒ»¸öÀàÒƵ½ÁíÒ»¸ö£¬ÕâÖÖÈ·ÐŶ¼ÓÐЧ¡£ËùÓÐÀý×ÓÖо²Ì¬ÀàÐͼì²é»áÌṩ×ã¹»µÄÈ·ÈÏ£¬±íÃ÷ÐÂϵͳºÍ¾Éϵͳ¿ÉÒÔÒ»ÑùµÄ¹¤×÷¡£
Îĵµ¡£¾²Ì¬ÀàÐÍÊDZ»±àÒëÆ÷¼ì²é¹ýÕýÈ·ÐԵijÌÐòÎĵµ¡£²»ÏñÆÕͨµÄ×¢ÊÍ£¬ÀàÐͱê×¢ÓÀÔ¶¶¼²»»á¹ýÆÚ£¨ÖÁÉÙÈç¹û°üº¬ËüµÄÔ´Îļþ½üÆÚ¸Õ¸Õͨ¹ý±àÒë¾Í²»»á£©¡£¸ü½øÒ»²½Ëµ£¬±àÒëÆ÷ºÍ¼¯³É¿ª·¢»·¾³¿ÉÒÔÀûÓÃÀàÐͱê×¢Ìṩ¸üºÃµÄÉÏÏÂÎÄ°ïÖú¡£¾ÙÀýÀ´Ëµ£¬¼¯³É¿ª·¢»·¾³¿ÉÒÔͨ¹ýÅж¨Ñ¡Öбí´ïʽµÄ¾²Ì¬ÀàÐÍ£¬ÕÒµ½ÀàÐ͵ÄËùÓгÉÔ±£¬²¢È«²¿ÏÔʾ³öÀ´¡£
ËäÈ»¾²Ì¬ÀàÐͶԳÌÐòÎĵµÀ´ËµÍ¨³£ºÜÓÐÓ㬵±ËüÃÇŪÂÒ³ÌÐòʱ£¬Ò²»áÏԵúÜÌÖÑá¡£±ê×¼ÒâÒåÉÏÀ´Ëµ£¬ÓÐÓõÄÎĵµÊÇÄÇЩ³ÌÐòµÄ¶ÁÕß²»¿ÉÄܺÜÈÝÒ׵شӳÌÐòÖÐ×Ô¼ºÏë³öÀ´µÄ¡£ÔÚÈçϵķ½
def f(x: String) = ...
ÖªµÀfµÄ±äÁ¿Ó¦¸ÃÊÇStringÊÇÓÐÓõġ£ÁíÒ»·½Ã棬ÒÔÏÂÀý×ÓÖÐÁ½¸ö±ê×¢ÖÁÉÙÓÐÒ»¸öÊÇÌÖÑáµÄ£º
val x: HashMap[Int, String] = new HashMap[Int, String]()
ºÜÃ÷ÏÔ£¬xÊÇÒÔIntΪ¼ü£¬StringΪֵµÄHashMapÕâ¾ä»°ËµÒ»±é¾Í¹»ÁË£»Ã»±ØҪͬÑùµÄ¾ä×ÓÖظ´Á½±é¡£
ScalaÓзdz£¾«Óڴ˵ÀµÄÀàÐÍÍƶÏϵͳ£¬ÄÜÈÃÄãÊ¡ÂÔ¼¸ºõËùÓеÄͨ³£±»ÈÏΪÊÇÌÖÑáµÄÀàÐÍÐÅÏ¢¡£ÔÚÉÏÀýÖУ¬ÒÔÏÂÁ½¸ö²»Ì«ÌÖÑáµÄÌæ´úÆ·Ò²ÄÜÒ»Ñù¹¤×÷£º
val x = new HashMap[Int, String]()
val x: Map[Int, String] = new HashMap()
ScalaÀïµÄÀàÐÍÍƶϿÉÒÔ×ߵĺÜÔ¶¡£Êµ¼ÊÉÏ£¬¾ÍËãÓû§´úÂëË¿ºÁûÓÐÏÔʽÀàÐÍÒ²²»Ï¡Ææ¡£Òò´Ë£¬Scala±à³Ì¾³£¿´ÉÏÈ¥ÓеãÏñÊǶ¯Ì¬ÀàÐͽű¾ÓïÑÔд³öÀ´µÄ³ÌÐò¡£ÓÈÆäÏÔÖø±íÏÖÔÚ×÷Ϊճ½ÓÒÑдÍêµÄ¿â¿Ø¼þµÄ¿Í»§Ó¦ÓôúÂëÉÏ¡£¶ø¶Ô¿â¿Ø¼þÀ´Ëµ²»ÊÇÕâô»ØÊ£¬ÒòΪËüÃdz£³£Óõ½Ï൱¾«ÃîµÄÀàÐÍȥʹÆäÊÊÓÚÁé»îʹÓõÄģʽ¡£ÕâºÜ×ÔÈ»¡£×ÛÉÏ£¬¹¹³É¿ÉÖØÓÿؼþ½Ó¿ÚµÄ³ÉÔ±µÄÀàÐÍ·ûºÅÓ¦¸ÃÊÇÏÔʽ¸ø³öµÄ£¬ÒòΪËüÃǹ¹³ÉÁ˿ؼþºÍËüµÄʹÓÃÕß¼äÆõÔ¼µÄÖØÒª²¿·Ö¡£