Scalaæ¯ä¸é¨ç°ä»£çå¤èå¼ç¼ç¨è¯è¨ï¼å¿å¨ä»¥ç®ç»ãä¼é
åç±»åå®å
¨çæ¹å¼æ¥è¡¨è¾¾å¸¸ç¨ç¼ç¨æ¨¡å¼ãå®å¹³æ»å°éæäºé¢å对象åå½æ°è¯è¨çç¹æ§ã
Scalaæ¯é¢å对象çï¼Scalaæ¯ä¸ä¸ªçº¯é¢å对象è¯è¨ï¼å¨æç§æä¹ä¸æ¥è®²æææ°å¼é½æ¯å¯¹è±¡ã对象çç±»ååè¡ä¸ºæ¯ç±classåtraitæ¥æè¿°çãClassçæ½è±¡å¯ç±åç±»ååä¸ç§çµæ´»çåºäºmixinçç»åæºå¶ï¼å®å¯ä½ä¸ºå¤é继æ¿çç®åæ¿ä»£æ¹æ¡ï¼æ¥æ©å±ã
Scalaæ¯å½æ°å¼çï¼ Scalaè¿æ¯ä¸ä¸ªå½æ°å¼è¯è¨ï¼å¨æç§æä¹ä¸æ¥è®²ææå½æ°é½æ¯æ°å¼ãScala为å®ä¹å¿åå½æ°æä¾äºä¸ç§è½»é级çè¯æ³ï¼å®æ¯æé«é¶ï¼higher-orderï¼å½æ°ãå
许å½æ°åµå¥ãæ¯æå±é¨å¥ç¨ï¼curryingï¼ãScalaçcaseç±»åå
¶å
ç½®æ¯æç模å¼å¹é
模å代æ°ç±»åå¨è®¸å¤å½æ°å¼ç¼ç¨è¯è¨ä¸é½è¢«ä½¿ç¨ã
Scalaæ¯éæç±»åçï¼Scalaé
å¤äºä¸å¥å¯æ表ç°åçç±»åç³»ç»ï¼è¯¥æ½è±¡æ¦å¿µä»¥ä¸ç§å®å
¨çåä¸è´çæ¹å¼è¢«ä½¿ç¨ã
Scalaæ¯å¯æ©å±çï¼Scalaç设计æ¿è®¤äºå®è·µäºå®ï¼é¢åç¹å®åºç¨å¼åé常éè¦é¢åç¹å®è¯è¨æ©å±ãScalaæä¾äºä¸ä¸ªç¬ç¹çè¯è¨ç»åæºå¶ï¼è¿å¯ä»¥æ´å 容æå°ä»¥ç±»åºçå½¢å¼å¢å æ°çè¯è¨ç»æï¼ä¸¤è
ç»å使ç¨å¯æ¹ä¾¿å°å®ä¹æ°è¯å¥ï¼æ éæ©å±è¯æ³ï¼ä¹æ é使ç¨ç±»ä¼¼å®çå
ç¼ç¨å·¥å
·ã
ä»»ä½æ¹å¼å¯ä»¥è¢«ç¨ä½ä¸ç¼ï¼infixï¼æåç¼ï¼postfixï¼æä½ç¬¦
éå
æç
§æææçç±»åï¼ç®æ ç±»åï¼èªå¨å°è¢«æé
Scalaå¯ä¸Javaå.NETè¿è¡äºæä½ï¼Scala设计æ¶å°±èèäºä¸æµè¡ç¼ç¨ç¯å¢è¯å¥½äº¤äºï¼å¦Java 2è¿è¡æ¶ç¯å¢ï¼JREï¼å .NETæ¡æ¶ï¼CLRï¼ãç¹å«æ¯ä¸ä¸»æµé¢å对象è¯è¨ï¼å¦JavaåC#å°½éæ ç¼äº¤äºãScalaæåJavaåC#ä¸æ ·çç¼è¯æ¨¡åï¼ç¬ç«ç¼è¯ï¼å¨æè£
载类ï¼ï¼å
许访é®æåä¸ä¸çé«è´¨éç±»åºã
对äºæäºå¼åè
æ¥è¯´ï¼è¿äºåºæ¿å·²è¶³ä»¥å¼è¯±ä»ä»¬è±ç¦»Javaè¿å
¥Scalaä¸çãä½å¯¹å¦å¤ä¸äºå¼åè
æ¥è¯´ï¼å®ä»¬å¹¶æ²¡æ为Javaä¸çéå½åæ£å¨æ¼ç»çæ¥å¤ä¸æ¥çç¼ç¨æ´»å¨æä¾æ´å¤å¥½å¤ã
å¨ä¸ç¯å为âScalaï¼éRubyåJavaä¹æé¿âçåæä¸ï¼Ian讲述äºæ许ä¸åºå¨JavaåScalaä¹é´ååºéæ©ï¼ç¸åï¼ç¸å¯¹äºéæ©å
¶å®è¯è¨å¦Rubyï¼éæ©ä½¿ç¨JavaåScalaçæ··åç©æ¯çå¦ä¸ç§éæ©ï¼
许å¤å¼åè
çç±Rubyï¼ä¸è¿ä»ä»¬ä¸è½ä»ä¸è·å足å¤çä¸è¥¿ãå®å¯è½æ¯æå
·ä¾µç¥æ§çè¯è¨ä¹ä¸ï¼å 为Javaææ¯ç¬¬ä¸ä¸ªå°åºçã人们æ»æ¯å¼è¯Rubyççµæ´»èå¯æ©å±çè¯æ³ãéå
çç¹æ§ï¼ä»¥åå
¶ä»£ç å¦ä½ç®æåå
·æ表ç°åã
ä¾å¦ï¼ä½ å¯ä»¥ç¨ä¸ä¸ªç®åè¯æ³å建ä¸ä¸ªMapï¼Ruby称ä¹ä¸ºâhashesâï¼å°½ç®¡hashtableåªæ¯mapä¸ç§å¯è½çå®ç°æ¹å¼ï¼ï¼å¦ï¼
numberMap = {"one" => 1, "two" => 2, "three" => 3}
Javaä¸ä¹å¯¹ççè¯å¥æ¾å¾é¢ä¸ºåé¿ï¼
Map<String, Integer> numberMap = new HashMap<String, Integer>(); numberMap.put("one", 1); numberMap.put("two", 2); numberMap.put("three", 3);
é£ä¹Scalaæä¹æ ·å¢ï¼è®©æ们ççScalaä¸mapçä¾åï¼
var numberMap = Map("one" -> 1, "two" -> 2, "three" -> 3)
ä½ ä¼æ³¨æå°å®çä¸å»é常类似çä»·çRuby代ç ï¼ä½æ¯è¿å¿æä¸äºéè¦åºå«ãç¹å«æ¯ï¼å°±åJavaï¼Scalaç¼è¯å¨ç¥énumberMap使ç¨Stringä½ä¸ºé®ï¼Integerä½ä¸ºå¼ãä¸Javaä¸åçæ¯ï¼ä½ æ éåç¥ï¼å®æ¬èº«å°±è½é¢ä¼è¿ä¸ç¹ï¼è¿ç§°ä¸ºâç±»åæ¨çï¼type inferenceï¼âã
è¿æå³çå¦æä½ è¯å¾ç»numberMapå¢å ä¸ä¸ªæ°çé®å¼å¯¹ï¼ä½æ¯è¦ä½¿ç¨Integerä½ä¸ºé®ï¼Stringä½ä¸ºå¼ï¼Scalaå°å¨ä½ è¯å¾ç¼è¯å®æ¶ç«å»æ¥éï¼æè
ä½ çIDEå°ç«å»è¦åä½ ï¼ã使ç¨Rubyï¼åªæå½ä½ è¿è¡ä½ ç软件并è¯å¾ä»è¯¥Mapä¸æ¾å该é®åå¼æ¶ï¼å¾å°çåå«æ¯IntegeråStringèä¸æ¯æææçStringåIntegerï¼è¿æ¶æä¼å¯¼è´æ¥éã
è¿å强è°ç¼è¯æ¶ç±»åæ£æ¥èçå¤å°å¤å°æ¶é´æ¯å°é¾çï¼ä½å®æ¶é¤äºææç±»å¨æ§è¡æ¶å°ä¼äº§ççbugãScalaç»ä½ 带æ¥äºè¿ä¸å¥½å¤ï¼èä¸ä»£ç 并ä¸ç¹çã
为æ´è¿ä¸æ¥å¨ä¸ä¸ªå°ä¾åä¸å±ç°ä»£ç éç缩åï¼Ted Newardç 究äºå¼ååä¸ä¸ªç±»ï¼ç¨JavaãC#ãVirual BasicãRubyåScalaçåºå«ã请åèå
¶åæScala pt 2ï¼ç®çã
Ian继ç»æåºï¼
Scalaè¿æä¸è¿ä¸²å
¶å®å¥½çRubyç¹æ§ï¼Javaæ缺ä¹çï¼ï¼å
æ¬éå
ï¼ä»¥åé常éåâé¢åç¹å®è¯è¨âçå¯å¡æ§è¯æ³ãå®æ¥æææè¿äºç¹æ§ï¼èä¸ç»åäºéæç±»å好å¤ã
David MacIverå¨å
¶åæ说æ£ç»çï¼ä¸ºä»ä¹éæ©Scalaï¼ä¸å享äºä»å¯¹äºé¢å对象ç¼ç¨ãé¢å模åç¼ç¨ãéæç±»åãå½æ°ç¼ç¨ä»¥å该è¯è¨ä¸ä»æå欢çæªè¨æç¹æ§çè§ç¹ãä»è¡¥å
éï¼
Scala离å®ç¾è¿å·®å¾è¿ãå®æä¸äºè¯æ³ç¼ºé·ï¼ä¸äºç±Java带æ¥çé®é¢ï¼ä¸ä¸ªæé度é®é¢çç¼è¯å¨ä»¥åä¸å ä½ è®°ä¸ä½ççç¢ç¹æ§åè¾¹çæ
åµï¼edge caseï¼ãç¶èï¼æåç°è¿äºé®é¢é¤äºç¦ä½ ä¹å¤å¹¶ä¸çæ£äº§çä»ä¹åæãå¦æåªæ¯æ³åä¸æ¥ä¹¦å好ç代ç ï¼è¯¥è¯è¨çæ ¸å¿æ¯å¼ºå¤§çåé常æç¨çã
为äºæä¾ä¸ä¸ªåè¡¡çè§ç¹ï¼Davidå¨å
¶åæä¸æ¥çæ¢è®¨äºä¸ºä»ä¹ä¸éScalaï¼æä¸ä»éè¿°äºä¸äºè¾¹çæ
åµï¼edge caseï¼ãä½ä¸ºæ»ç»ï¼Davidæå¦ä¸è¯è®ºï¼
æ»èè¨ä¹ï¼æåç°è¿äºåªæ¯å¢å äºä¸äºç¦å¿äºãå®ä»æ¯ææå欢çJVMè¯è¨ï¼ä½æ¯ä½ ççæ³å°åå³äºä½ ææ ·æç½®é£äºå¯¹ä½ æ¥è¯´å¯è½æ¯æ´éè¦çéè¦ä¼å
èèçäºæ
ã
为äºå±ç°Scalaæ¯ä¸é¨ä¸ææççè¯è¨ï¼Programming in Scalaä¸ä¹¦å¾å¿«å°ä¼åºçãå¦æçä¸åï¼Artimaç½ç«ä¸æ该书PDFæ ¼å¼çé¢å°çã
温馨提示:答案为网友推荐,仅供参考