{"id":5740,"date":"2022-04-23T20:24:52","date_gmt":"2022-04-23T12:24:52","guid":{"rendered":"https:\/\/damogame.cn:15443\/wordpress\/?p=5740"},"modified":"2022-04-23T20:24:52","modified_gmt":"2022-04-23T12:24:52","slug":"scala%e8%b6%85%e5%85%a8%e8%af%a6%e8%a7%a3","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/5740","title":{"rendered":"Scala\u8d85\u5168\u8be6\u89e3"},"content":{"rendered":"<div class=\"article-header-box\">\n<div class=\"article-header\">\n<div class=\"article-title-box\">\n<p id=\"articleContentId\" class=\"title-article\"><a href=\"https:\/\/blog.csdn.net\/lukabruce\/article\/details\/81741508\">\u539f\u6587\u5730\u5740<\/a><\/p>\n<\/div>\n<div class=\"article-info-box\">\n<div class=\"article-bar-top\"><img decoding=\"async\" class=\"article-type-img\" src=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/pc\/img\/reprint.png\" alt=\"\" \/><\/p>\n<div class=\"bar-content\"><a class=\"follow-nickName \" href=\"https:\/\/blog.csdn.net\/lukabruce\" target=\"_blank\" rel=\"noopener\">\u5362\u5b50\u58a8<\/a><img decoding=\"async\" class=\"article-time-img article-heard-img\" src=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/pc\/img\/newCurrentTime2.png\" alt=\"\" \/><span class=\"time\">\u4e8e\u00a02018-08-16 14:49:52\u00a0\u53d1\u5e03<\/span><img decoding=\"async\" class=\"article-read-img article-heard-img\" src=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/pc\/img\/articleReadEyes2.png\" alt=\"\" \/><span class=\"read-count\">9267<\/span><a id=\"blog_detail_zk_collection\" class=\"un-collection\" data-report-click=\"{&quot;mod&quot;:&quot;popu_823&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4232&quot;,&quot;ab&quot;:&quot;new&quot;}\"><\/a><img decoding=\"async\" class=\"article-collect-img article-heard-img un-collect-status isdefault\" src=\"https:\/\/csdnimg.cn\/release\/blogv2\/dist\/pc\/img\/tobarCollect2.png\" alt=\"\" \/>\u00a0<span class=\"name\">\u6536\u85cf<\/span>\u00a0<span class=\"get-collection\">86<\/span><\/div>\n<\/div>\n<div class=\"blog-tags-box\">\n<div class=\"tags-box artic-tag-box\"><span class=\"label\">\u5206\u7c7b\u4e13\u680f\uff1a<\/span>\u00a0<a class=\"tag-link\" href=\"https:\/\/blog.csdn.net\/lukabruce\/category_7942955.html\" target=\"_blank\" rel=\"noopener\">Scala<\/a>\u00a0<span class=\"label\">\u6587\u7ae0\u6807\u7b7e\uff1a<\/span>\u00a0<a class=\"tag-link\" href=\"https:\/\/so.csdn.net\/so\/search\/s.do?q=scala&amp;t=blog&amp;o=vip&amp;s=&amp;l=&amp;f=&amp;viparticle=\" target=\"_blank\" rel=\"noopener\" data-report-click=\"{&quot;mod&quot;:&quot;popu_626&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4223&quot;,&quot;strategy&quot;:&quot;scala&quot;,&quot;ab&quot;:&quot;new&quot;}\">scala<\/a><\/div>\n<\/div>\n<div class=\"operating\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"blogColumnPayAdvert\">\n<div class=\"column-group\">\n<div class=\"column-group-item column-group0 column-group-item-one\">\n<div class=\"item-l\"><a class=\"item-target\" title=\"Scala\" href=\"https:\/\/blog.csdn.net\/lukabruce\/category_7942955.html\" target=\"_blank\" rel=\"noopener\" data-report-click=\"{&quot;spm&quot;:&quot;1001.2101.3001.6332&quot;}\"><img decoding=\"async\" class=\"item-target\" src=\"https:\/\/img-blog.csdnimg.cn\/20201014180756780.png?x-oss-process=image\/resize,m_fixed,h_64,w_64\" alt=\"\" \/><span class=\"title item-target\"><span class=\"tit\">Scala<\/span><span class=\"dec\">\u4e13\u680f\u6536\u5f55\u8be5\u5185\u5bb9<\/span><\/span><\/a><\/div>\n<div class=\"item-m\">3 \u7bc7\u6587\u7ae00 \u8ba2\u9605<\/div>\n<div class=\"item-r\"><a class=\"item-target article-column-bt articleColumnFreeBt\" data-id=\"7942955\">\u8ba2\u9605\u4e13\u680f<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<article class=\"baidu_pl\">\n<div id=\"article_content\" class=\"article_content clearfix\">\n<div id=\"content_views\" class=\"htmledit_views\">\n<p><u>\u8f6c\u81ea\uff1a\u3010<a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1\" target=\"_blank\" rel=\"noopener\">https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1<\/a>\u3011<\/u><\/p>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E4%B8%80-scala%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE\" target=\"_blank\" rel=\"noopener\">\u4e00 Scala\u5b89\u88c5\u4e0e\u914d\u7f6e<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#11-%E5%AE%89%E8%A3%85\" target=\"_blank\" rel=\"noopener\">1 \u5b89\u88c5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#12-%E9%85%8D%E7%BD%AEidea\" target=\"_blank\" rel=\"noopener\">2 \u914d\u7f6eIDEA<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E4%BA%8C-scala%E5%9F%BA%E7%A1%80\" target=\"_blank\" rel=\"noopener\">\u4e8c Scala\u57fa\u7840<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#21-hello-scala\" target=\"_blank\" rel=\"noopener\">1 Hello Scala<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#211-idea%E8%BF%90%E8%A1%8Chelloscala%E7%A8%8B%E5%BA%8F\" target=\"_blank\" rel=\"noopener\">11 IDEA\u8fd0\u884cHelloScala\u7a0b\u5e8f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#212-%E6%8E%A7%E5%88%B6%E5%8F%B0%E8%BF%90%E8%A1%8Chelloscala%E7%A8%8B%E5%BA%8F\" target=\"_blank\" rel=\"noopener\">12 \u63a7\u5236\u53f0\u8fd0\u884cHelloScala\u7a0b\u5e8f<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#22-%E5%A3%B0%E6%98%8E%E5%80%BC%E5%92%8C%E5%8F%98%E9%87%8F\" target=\"_blank\" rel=\"noopener\">2 \u58f0\u660e\u503c\u548c\u53d8\u91cf<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#23-%E5%B8%B8%E7%94%A8%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">3 \u5e38\u7528\u7c7b\u578b<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#231-%E5%B8%B8%E7%94%A8%E7%B1%BB%E5%9E%8B%E4%BB%8B%E7%BB%8D\" target=\"_blank\" rel=\"noopener\">31 \u5e38\u7528\u7c7b\u578b\u4ecb\u7ecd<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#232-%E5%B8%B8%E7%94%A8%E7%B1%BB%E5%9E%8B%E7%BB%93%E6%9E%84%E5%9B%BE\" target=\"_blank\" rel=\"noopener\">32 \u5e38\u7528\u7c7b\u578b\u7ed3\u6784\u56fe<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#24-%E7%AE%97%E6%95%B0%E6%93%8D%E4%BD%9C%E7%AC%A6%E9%87%8D%E8%BD%BD\" target=\"_blank\" rel=\"noopener\">4 \u7b97\u6570\u64cd\u4f5c\u7b26\u91cd\u8f7d<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#25-%E8%B0%83%E7%94%A8%E5%87%BD%E6%95%B0%E4%B8%8E%E6%96%B9%E6%B3%95\" target=\"_blank\" rel=\"noopener\">5 \u8c03\u7528\u51fd\u6570\u4e0e\u65b9\u6cd5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#26-option%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">6 option\u7c7b\u578b<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E4%B8%89-%E6%8E%A7%E5%88%B6%E7%BB%93%E6%9E%84%E5%92%8C%E5%87%BD%E6%95%B0\" target=\"_blank\" rel=\"noopener\">\u4e09 \u63a7\u5236\u7ed3\u6784\u548c\u51fd\u6570<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#31-if-else%E8%A1%A8%E8%BE%BE%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">1 if else\u8868\u8fbe\u5f0f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#32-while%E8%A1%A8%E8%BE%BE%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">2 while\u8868\u8fbe\u5f0f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#33-for%E8%A1%A8%E8%BE%BE%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">3 for\u8868\u8fbe\u5f0f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#34-%E5%87%BD%E6%95%B0\" target=\"_blank\" rel=\"noopener\">4 \u51fd\u6570<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#35-%E8%BF%87%E7%A8%8B\" target=\"_blank\" rel=\"noopener\">5 \u8fc7\u7a0b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#36-%E6%87%92%E5%80%BC\" target=\"_blank\" rel=\"noopener\">6 \u61d2\u503c<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#37-%E5%BC%82%E5%B8%B8\" target=\"_blank\" rel=\"noopener\">7 \u5f02\u5e38<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%9B%9B-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84\" target=\"_blank\" rel=\"noopener\">\u56db \u6570\u636e\u7ed3\u6784<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#41-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%89%B9%E7%82%B9\" target=\"_blank\" rel=\"noopener\">1 \u6570\u636e\u7ed3\u6784\u7279\u70b9<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#42-%E6%95%B0%E7%BB%84-array\" target=\"_blank\" rel=\"noopener\">2 \u6570\u7ec4 Array<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#43-%E5%85%83%E7%BB%84-tuple\" target=\"_blank\" rel=\"noopener\">3 \u5143\u7ec4 Tuple<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#44-%E5%88%97%E8%A1%A8-list\" target=\"_blank\" rel=\"noopener\">4 \u5217\u8868 List<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#45-%E9%98%9F%E5%88%97-queue\" target=\"_blank\" rel=\"noopener\">5 \u961f\u5217 Queue<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#46-%E6%98%A0%E5%B0%84-map\" target=\"_blank\" rel=\"noopener\">6 \u6620\u5c04 Map<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#47-%E9%9B%86-set\" target=\"_blank\" rel=\"noopener\">7 \u96c6 Set<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#48-%E9%9B%86%E5%90%88%E5%85%83%E7%B4%A0%E4%B8%8E%E5%87%BD%E6%95%B0%E7%9A%84%E6%98%A0%E5%B0%84\" target=\"_blank\" rel=\"noopener\">8 \u96c6\u5408\u5143\u7d20\u4e0e\u51fd\u6570\u7684\u6620\u5c04<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#49-%E5%8C%96%E7%AE%80%E6%8A%98%E5%8F%A0%E6%89%AB%E6%8F%8F\" target=\"_blank\" rel=\"noopener\">9 \u5316\u7b80\u6298\u53e0\u626b\u63cf<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#410-%E6%8B%89%E9%93%BE\" target=\"_blank\" rel=\"noopener\">10 \u62c9\u94fe<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#411-%E8%BF%AD%E4%BB%A3%E5%99%A8\" target=\"_blank\" rel=\"noopener\">11 \u8fed\u4ee3\u5668<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#412-%E6%B5%81-stream\" target=\"_blank\" rel=\"noopener\">12 \u6d41 Stream<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#413-%E8%A7%86%E5%9B%BE-view\" target=\"_blank\" rel=\"noopener\">13 \u89c6\u56fe View<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#414-%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E7%9A%84%E9%9B%86%E5%90%88\" target=\"_blank\" rel=\"noopener\">14 \u7ebf\u7a0b\u5b89\u5168\u7684\u96c6\u5408<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#415-%E5%B9%B6%E8%A1%8C%E9%9B%86%E5%90%88\" target=\"_blank\" rel=\"noopener\">15 \u5e76\u884c\u96c6\u5408<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#416-%E6%93%8D%E4%BD%9C%E7%AC%A6\" target=\"_blank\" rel=\"noopener\">16 \u64cd\u4f5c\u7b26<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E4%BA%94-%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D\" target=\"_blank\" rel=\"noopener\">\u4e94 \u6a21\u5f0f\u5339\u914d<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#51-switch\" target=\"_blank\" rel=\"noopener\">1 switch<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#52-%E5%AE%88%E5%8D%AB\" target=\"_blank\" rel=\"noopener\">2 \u5b88\u536b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#53-%E6%A8%A1%E5%BC%8F%E4%B8%AD%E7%9A%84%E5%8F%98%E9%87%8F\" target=\"_blank\" rel=\"noopener\">3 \u6a21\u5f0f\u4e2d\u7684\u53d8\u91cf<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#54-%E7%B1%BB%E5%9E%8B%E6%A8%A1%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">4 \u7c7b\u578b\u6a21\u5f0f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#55-%E5%8C%B9%E9%85%8D%E6%95%B0%E7%BB%84%E5%88%97%E8%A1%A8%E5%85%83%E7%BB%84\" target=\"_blank\" rel=\"noopener\">5 \u5339\u914d\u6570\u7ec4\u5217\u8868\u5143\u7ec4<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#56-%E6%8F%90%E5%8F%96%E5%99%A8\" target=\"_blank\" rel=\"noopener\">6 \u63d0\u53d6\u5668<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#57-%E5%8F%98%E9%87%8F%E5%A3%B0%E6%98%8E%E4%B8%AD%E7%9A%84%E6%A8%A1%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">7 \u53d8\u91cf\u58f0\u660e\u4e2d\u7684\u6a21\u5f0f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#58-for%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%AD%E7%9A%84%E6%A8%A1%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">8 for\u8868\u8fbe\u5f0f\u4e2d\u7684\u6a21\u5f0f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#59-%E6%A0%B7%E4%BE%8B%E7%B1%BB\" target=\"_blank\" rel=\"noopener\">9 \u6837\u4f8b\u7c7b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#510-copy%E6%96%B9%E6%B3%95%E5%92%8C%E5%B8%A6%E5%90%8D%E5%8F%82%E6%95%B0\" target=\"_blank\" rel=\"noopener\">10 Copy\u65b9\u6cd5\u548c\u5e26\u540d\u53c2\u6570<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#511-case%E8%AF%AD%E5%8F%A5%E7%9A%84%E4%B8%AD%E7%BD%AE%E7%BC%80%E8%A1%A8%E8%BE%BE%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">11 Case\u8bed\u53e5\u7684\u4e2d\u7f6e\u7f00\u8868\u8fbe\u5f0f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#512-%E5%8C%B9%E9%85%8D%E5%B5%8C%E5%A5%97%E7%BB%93%E6%9E%84\" target=\"_blank\" rel=\"noopener\">12 \u5339\u914d\u5d4c\u5957\u7ed3\u6784<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#513-%E5%AF%86%E5%B0%81%E7%B1%BB\" target=\"_blank\" rel=\"noopener\">13 \u5bc6\u5c01\u7c7b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#514-%E6%A8%A1%E6%8B%9F%E6%9E%9A%E4%B8%BE\" target=\"_blank\" rel=\"noopener\">14 \u6a21\u62df\u679a\u4e3e<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#515-%E5%81%8F%E5%87%BD%E6%95%B0\" target=\"_blank\" rel=\"noopener\">15 \u504f\u51fd\u6570<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%85%AD-%E9%AB%98%E9%98%B6%E5%87%BD%E6%95%B0\" target=\"_blank\" rel=\"noopener\">\u516d \u9ad8\u9636\u51fd\u6570<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#61-%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0%E7%9A%84%E9%AB%98%E9%98%B6%E5%87%BD%E6%95%B0\" target=\"_blank\" rel=\"noopener\">1 \u4f5c\u4e3a\u53c2\u6570\u7684\u9ad8\u9636\u51fd\u6570<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#62-%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0\" target=\"_blank\" rel=\"noopener\">2 \u533f\u540d\u51fd\u6570<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#63-%E9%AB%98%E9%98%B6%E5%87%BD%E6%95%B0\" target=\"_blank\" rel=\"noopener\">3 \u9ad8\u9636\u51fd\u6570<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#64-%E5%8F%82%E6%95%B0%E7%B1%BB%E5%9E%8B%E6%8E%A8%E6%96%AD\" target=\"_blank\" rel=\"noopener\">4 \u53c2\u6570\u7c7b\u578b\u63a8\u65ad<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#65-%E9%97%AD%E5%8C%85\" target=\"_blank\" rel=\"noopener\">5 \u95ed\u5305<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#66-%E6%9F%AF%E9%87%8C%E5%8C%96\" target=\"_blank\" rel=\"noopener\">6 \u67ef\u91cc\u5316<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#67-%E6%8E%A7%E5%88%B6%E6%8A%BD%E8%B1%A1\" target=\"_blank\" rel=\"noopener\">7 \u63a7\u5236\u62bd\u8c61<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E4%B8%83-%E7%B1%BB\" target=\"_blank\" rel=\"noopener\">\u4e03 \u7c7b<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#71-%E7%AE%80%E5%8D%95%E7%B1%BB%E5%92%8C%E6%97%A0%E5%8F%82%E6%96%B9%E6%B3%95\" target=\"_blank\" rel=\"noopener\">1 \u7b80\u5355\u7c7b\u548c\u65e0\u53c2\u65b9\u6cd5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#72-getter-setter%E6%96%B9%E6%B3%95\" target=\"_blank\" rel=\"noopener\">2 Getter Setter\u65b9\u6cd5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#73-%E5%AF%B9%E8%B1%A1%E7%A7%81%E6%9C%89%E5%AD%97%E6%AE%B5\" target=\"_blank\" rel=\"noopener\">3 \u5bf9\u8c61\u79c1\u6709\u5b57\u6bb5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#74-bean%E5%B1%9E%E6%80%A7\" target=\"_blank\" rel=\"noopener\">4 Bean\u5c5e\u6027<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#75-%E6%9E%84%E9%80%A0%E5%99%A8\" target=\"_blank\" rel=\"noopener\">5 \u6784\u9020\u5668<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#76-%E5%B5%8C%E5%A5%97%E7%B1%BB\" target=\"_blank\" rel=\"noopener\">6 \u5d4c\u5957\u7c7b<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%85%AB-%E5%AF%B9%E8%B1%A1\" target=\"_blank\" rel=\"noopener\">\u516b \u5bf9\u8c61<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#81-%E5%8D%95%E4%BE%8B%E5%AF%B9%E8%B1%A1\" target=\"_blank\" rel=\"noopener\">1 \u5355\u4f8b\u5bf9\u8c61<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#82-%E4%BC%B4%E7%94%9F%E5%AF%B9%E8%B1%A1\" target=\"_blank\" rel=\"noopener\">2 \u4f34\u751f\u5bf9\u8c61<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#83-apply%E6%96%B9%E6%B3%95\" target=\"_blank\" rel=\"noopener\">3 Apply\u65b9\u6cd5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#84-%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%AF%B9%E8%B1%A1\" target=\"_blank\" rel=\"noopener\">4 \u5e94\u7528\u7a0b\u5e8f\u5bf9\u8c61<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#85-%E6%9E%9A%E4%B8%BE\" target=\"_blank\" rel=\"noopener\">5 \u679a\u4e3e<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E4%B9%9D-%E5%8C%85%E5%92%8C%E5%BC%95%E7%94%A8\" target=\"_blank\" rel=\"noopener\">\u4e5d \u5305\u548c\u5f15\u7528<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#91-%E5%8C%85%E4%BD%9C%E7%94%A8%E5%9F%9F\" target=\"_blank\" rel=\"noopener\">1 \u5305\u4f5c\u7528\u57df<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#92-%E5%8C%85%E5%AF%B9%E8%B1%A1\" target=\"_blank\" rel=\"noopener\">2 \u5305\u5bf9\u8c61<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#93-%E5%8C%85%E5%8F%AF%E8%A7%81%E6%80%A7\" target=\"_blank\" rel=\"noopener\">3 \u5305\u53ef\u89c1\u6027<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#94-%E5%BC%95%E5%85%A5\" target=\"_blank\" rel=\"noopener\">4 \u5f15\u5165<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#95-%E9%87%8D%E5%91%BD%E5%90%8D%E5%92%8C%E9%9A%90%E8%97%8F%E6%96%B9%E6%B3%95\" target=\"_blank\" rel=\"noopener\">5 \u91cd\u547d\u540d\u548c\u9690\u85cf\u65b9\u6cd5<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%8D%81-%E7%BB%A7%E6%89%BF\" target=\"_blank\" rel=\"noopener\">\u5341 \u7ee7\u627f<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#101-%E7%BB%A7%E6%89%BF%E7%B1%BB\" target=\"_blank\" rel=\"noopener\">1 \u7ee7\u627f\u7c7b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#102-%E9%87%8D%E5%86%99%E6%96%B9%E6%B3%95\" target=\"_blank\" rel=\"noopener\">2 \u91cd\u5199\u65b9\u6cd5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#103-%E7%B1%BB%E5%9E%8B%E6%A3%80%E6%9F%A5%E5%92%8C%E8%BD%AC%E6%8D%A2\" target=\"_blank\" rel=\"noopener\">3 \u7c7b\u578b\u68c0\u67e5\u548c\u8f6c\u6362<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#104-%E5%8F%97%E4%BF%9D%E6%8A%A4%E7%9A%84%E5%AD%97%E6%AE%B5%E5%92%8C%E6%96%B9%E6%B3%95\" target=\"_blank\" rel=\"noopener\">4 \u53d7\u4fdd\u62a4\u7684\u5b57\u6bb5\u548c\u65b9\u6cd5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#105-%E8%B6%85%E7%B1%BB%E7%9A%84%E6%9E%84%E9%80%A0\" target=\"_blank\" rel=\"noopener\">5 \u8d85\u7c7b\u7684\u6784\u9020<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#106-%E9%87%8D%E5%90%8D%E5%AD%97%E6%AE%B5\" target=\"_blank\" rel=\"noopener\">6 \u91cd\u540d\u5b57\u6bb5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#107-%E5%8C%BF%E5%90%8D%E5%AD%90%E7%B1%BB\" target=\"_blank\" rel=\"noopener\">7 \u533f\u540d\u5b50\u7c7b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#108-%E6%8A%BD%E8%B1%A1%E7%B1%BB\" target=\"_blank\" rel=\"noopener\">8 \u62bd\u8c61\u7c7b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#109-%E6%9E%84%E9%80%A0%E9%A1%BA%E5%BA%8F%E5%92%8C%E6%8F%90%E5%89%8D%E5%AE%9A%E4%B9%89\" target=\"_blank\" rel=\"noopener\">9 \u6784\u9020\u987a\u5e8f\u548c\u63d0\u524d\u5b9a\u4e49<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#1010-scala%E7%BB%A7%E6%89%BF%E5%B1%82%E7%BA%A7\" target=\"_blank\" rel=\"noopener\">10 Scala\u7ee7\u627f\u5c42\u7ea7<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%8D%81%E4%B8%80-%E7%89%B9%E8%B4%A8\" target=\"_blank\" rel=\"noopener\">\u5341\u4e00 \u7279\u8d28<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#111-%E4%B8%8D%E5%85%81%E8%AE%B8%E5%A4%9A%E9%87%8D%E9%9B%86%E6%88%90\" target=\"_blank\" rel=\"noopener\">1 \u4e0d\u5141\u8bb8\u591a\u91cd\u96c6\u6210<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#112-%E5%BD%93%E5%81%9A%E6%8E%A5%E5%8F%A3%E4%BD%BF%E7%94%A8%E7%9A%84%E7%89%B9%E8%B4%A8\" target=\"_blank\" rel=\"noopener\">2 \u5f53\u505a\u63a5\u53e3\u4f7f\u7528\u7684\u7279\u8d28<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#113-%E5%B8%A6%E6%9C%89%E5%85%B7%E4%BD%93%E5%AE%9E%E7%8E%B0%E7%9A%84%E7%89%B9%E8%B4%A8\" target=\"_blank\" rel=\"noopener\">3 \u5e26\u6709\u5177\u4f53\u5b9e\u73b0\u7684\u7279\u8d28<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#114-%E5%B8%A6%E6%9C%89%E7%89%B9%E8%B4%A8%E7%9A%84%E5%AF%B9%E8%B1%A1\" target=\"_blank\" rel=\"noopener\">4 \u5e26\u6709\u7279\u8d28\u7684\u5bf9\u8c61<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#115-%E5%8F%A0%E5%8A%A0%E5%9C%A8%E4%B8%80%E8%B5%B7%E7%9A%84%E7%89%B9%E8%B4%A8\" target=\"_blank\" rel=\"noopener\">5 \u53e0\u52a0\u5728\u4e00\u8d77\u7684\u7279\u8d28<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#116-%E5%9C%A8%E7%89%B9%E8%B4%A8%E4%B8%AD%E9%87%8D%E5%86%99%E6%8A%BD%E8%B1%A1%E6%96%B9%E6%B3%95\" target=\"_blank\" rel=\"noopener\">6 \u5728\u7279\u8d28\u4e2d\u91cd\u5199\u62bd\u8c61\u65b9\u6cd5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#117-%E5%BD%93%E5%81%9A%E5%AF%8C%E6%8E%A5%E5%8F%A3%E4%BD%BF%E7%94%A8%E7%9A%84%E7%89%B9%E8%B4%A8\" target=\"_blank\" rel=\"noopener\">7 \u5f53\u505a\u5bcc\u63a5\u53e3\u4f7f\u7528\u7684\u7279\u8d28<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#118-%E7%89%B9%E8%B4%A8%E4%B8%AD%E7%9A%84%E5%85%B7%E4%BD%93%E5%AD%97%E6%AE%B5\" target=\"_blank\" rel=\"noopener\">8 \u7279\u8d28\u4e2d\u7684\u5177\u4f53\u5b57\u6bb5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#119-%E7%89%B9%E8%B4%A8%E4%B8%AD%E7%9A%84%E6%8A%BD%E8%B1%A1%E5%AD%97%E6%AE%B5\" target=\"_blank\" rel=\"noopener\">9 \u7279\u8d28\u4e2d\u7684\u62bd\u8c61\u5b57\u6bb5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#1110-%E7%89%B9%E8%B4%A8%E6%9E%84%E9%80%A0%E9%A1%BA%E5%BA%8F\" target=\"_blank\" rel=\"noopener\">10 \u7279\u8d28\u6784\u9020\u987a\u5e8f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#1111-%E5%88%9D%E5%A7%8B%E5%8C%96%E7%89%B9%E8%B4%A8%E4%B8%AD%E7%9A%84%E5%AD%97%E6%AE%B5\" target=\"_blank\" rel=\"noopener\">11 \u521d\u59cb\u5316\u7279\u8d28\u4e2d\u7684\u5b57\u6bb5<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#1112-%E6%89%A9%E5%B1%95%E7%B1%BB%E7%9A%84%E7%89%B9%E8%B4%A8\" target=\"_blank\" rel=\"noopener\">12 \u6269\u5c55\u7c7b\u7684\u7279\u8d28<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#1113-%E8%87%AA%E8%BA%AB%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">13 \u81ea\u8eab\u7c7b\u578b<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%8D%81%E4%BA%8C-%E6%B3%A8%E8%A7%A3\" target=\"_blank\" rel=\"noopener\">\u5341\u4e8c \u6ce8\u89e3<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#121-%E4%BB%80%E4%B9%88%E5%8F%AF%E4%BB%A5%E8%A2%AB%E6%B3%A8%E8%A7%A3\" target=\"_blank\" rel=\"noopener\">1 \u4ec0\u4e48\u53ef\u4ee5\u88ab\u6ce8\u89e3<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#122-%E6%B3%A8%E8%A7%A3%E5%8F%82%E6%95%B0\" target=\"_blank\" rel=\"noopener\">2 \u6ce8\u89e3\u53c2\u6570<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#123-%E6%B3%A8%E8%A7%A3%E5%AE%9E%E7%8E%B0\" target=\"_blank\" rel=\"noopener\">3 \u6ce8\u89e3\u5b9e\u73b0<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#124-%E9%92%88%E5%AF%B9java%E7%9A%84%E6%B3%A8%E8%A7%A3\" target=\"_blank\" rel=\"noopener\">4 \u9488\u5bf9Java\u7684\u6ce8\u89e3<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#125-%E7%94%B1%E4%BA%8E%E4%BC%98%E5%8C%96%E7%9A%84%E6%B3%A8%E8%A7%A3\" target=\"_blank\" rel=\"noopener\">5 \u7531\u4e8e\u4f18\u5316\u7684\u6ce8\u89e3<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%8D%81%E4%B8%89-%E7%B1%BB%E5%9E%8B%E5%8F%82%E6%95%B0%E5%85%88%E4%BA%86%E8%A7%A3%E5%8D%B3%E5%8F%AF\" target=\"_blank\" rel=\"noopener\">\u5341\u4e09 \u7c7b\u578b\u53c2\u6570\u5148\u4e86\u89e3\u5373\u53ef<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#131-%E6%B3%9B%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">1 \u6cdb\u7c7b\u578b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#132-%E6%B3%9B%E5%9E%8B%E5%87%BD%E6%95%B0\" target=\"_blank\" rel=\"noopener\">2 \u6cdb\u578b\u51fd\u6570<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#133-%E7%B1%BB%E5%9E%8B%E5%8F%98%E9%87%8F%E9%99%90%E5%AE%9A\" target=\"_blank\" rel=\"noopener\">3 \u7c7b\u578b\u53d8\u91cf\u9650\u5b9a<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#135-%E8%A7%86%E5%9B%BE%E7%95%8C%E5%AE%9A\" target=\"_blank\" rel=\"noopener\">5 \u89c6\u56fe\u754c\u5b9a<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#136-%E4%B8%8A%E4%B8%8B%E6%96%87%E7%95%8C%E5%AE%9A\" target=\"_blank\" rel=\"noopener\">6 \u4e0a\u4e0b\u6587\u754c\u5b9a<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#137-manifest%E4%B8%8A%E4%B8%8B%E6%96%87%E7%95%8C%E5%AE%9A\" target=\"_blank\" rel=\"noopener\">7 Manifest\u4e0a\u4e0b\u6587\u754c\u5b9a<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#138-%E5%A4%9A%E9%87%8D%E7%95%8C%E5%AE%9A\" target=\"_blank\" rel=\"noopener\">8 \u591a\u91cd\u754c\u5b9a<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#139-%E7%B1%BB%E5%9E%8B%E7%BA%A6%E6%9D%9F\" target=\"_blank\" rel=\"noopener\">9 \u7c7b\u578b\u7ea6\u675f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#1310-%E5%9E%8B%E5%8F%98\" target=\"_blank\" rel=\"noopener\">10 \u578b\u53d8<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%8D%81%E5%9B%9B-%E9%9A%90%E5%BC%8F%E8%BD%AC%E6%8D%A2%E5%92%8C%E9%9A%90%E5%BC%8F%E5%8F%82%E6%95%B0\" target=\"_blank\" rel=\"noopener\">\u5341\u56db \u9690\u5f0f\u8f6c\u6362\u548c\u9690\u5f0f\u53c2\u6570<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#141-%E9%9A%90%E5%BC%8F%E8%BD%AC%E6%8D%A2\" target=\"_blank\" rel=\"noopener\">1 \u9690\u5f0f\u8f6c\u6362<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#142-%E5%88%A9%E7%94%A8%E9%9A%90%E5%BC%8F%E8%BD%AC%E6%8D%A2%E4%B8%B0%E5%AF%8C%E7%B1%BB%E5%BA%93%E5%8A%9F%E8%83%BD\" target=\"_blank\" rel=\"noopener\">2 \u5229\u7528\u9690\u5f0f\u8f6c\u6362\u4e30\u5bcc\u7c7b\u5e93\u529f\u80fd<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#143-%E9%9A%90%E5%BC%8F%E5%80%BC\" target=\"_blank\" rel=\"noopener\">3 \u9690\u5f0f\u503c<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#144-%E9%9A%90%E5%BC%8F%E8%A7%86%E5%9B%BE\" target=\"_blank\" rel=\"noopener\">4 \u9690\u5f0f\u89c6\u56fe<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#145-%E9%9A%90%E5%BC%8F%E7%B1%BB\" target=\"_blank\" rel=\"noopener\">5 \u9690\u5f0f\u7c7b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#146-%E9%9A%90%E5%BC%8F%E7%9A%84%E8%BD%AC%E6%8D%A2%E6%97%B6%E6%9C%BA\" target=\"_blank\" rel=\"noopener\">6 \u9690\u5f0f\u7684\u8f6c\u6362\u65f6\u673a<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#147-%E9%9A%90%E5%BC%8F%E8%A7%A3%E6%9E%90%E6%9C%BA%E5%88%B6\" target=\"_blank\" rel=\"noopener\">7 \u9690\u5f0f\u89e3\u6790\u673a\u5236<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#148-%E9%9A%90%E5%BC%8F%E8%BD%AC%E6%8D%A2%E7%9A%84%E5%89%8D%E6%8F%90\" target=\"_blank\" rel=\"noopener\">8 \u9690\u5f0f\u8f6c\u6362\u7684\u524d\u63d0<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%8D%81%E4%BA%94-%E6%96%87%E4%BB%B6%E5%92%8C%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">\u5341\u4e94 \u6587\u4ef6\u548c\u6b63\u5219\u8868\u8fbe\u5f0f<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#151-%E8%AF%BB%E5%8F%96%E8%A1%8C\" target=\"_blank\" rel=\"noopener\">1 \u8bfb\u53d6\u884c<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#152-%E8%AF%BB%E5%8F%96%E5%AD%97%E7%AC%A6\" target=\"_blank\" rel=\"noopener\">2 \u8bfb\u53d6\u5b57\u7b26<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#153-%E8%AF%BB%E5%8F%96%E8%AF%8D%E6%B3%95%E5%8D%95%E5%85%83%E5%92%8C%E6%95%B0%E5%AD%97\" target=\"_blank\" rel=\"noopener\">3 \u8bfb\u53d6\u8bcd\u6cd5\u5355\u5143\u548c\u6570\u5b57<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#154-%E8%AF%BB%E5%8F%96%E7%BD%91%E7%BB%9C%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E5%86%99%E5%85%A5%E6%8E%A7%E5%88%B6%E5%8F%B0%E6%93%8D%E4%BD%9C\" target=\"_blank\" rel=\"noopener\">4 \u8bfb\u53d6\u7f51\u7edc\u8d44\u6e90\u6587\u4ef6\u5199\u5165\u63a7\u5236\u53f0\u64cd\u4f5c<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#155-%E5%BA%8F%E5%88%97%E5%8C%96\" target=\"_blank\" rel=\"noopener\">5 \u5e8f\u5217\u5316<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#156-%E8%BF%9B%E7%A8%8B%E6%8E%A7%E5%88%B6\" target=\"_blank\" rel=\"noopener\">6 \u8fdb\u7a0b\u63a7\u5236<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#157-%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\" target=\"_blank\" rel=\"noopener\">7 \u6b63\u5219\u8868\u8fbe\u5f0f<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#%E5%8D%81%E5%85%AD-%E9%AB%98%E7%BA%A7%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">\u5341\u516d \u9ad8\u7ea7\u7c7b\u578b<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#161-%E7%B1%BB%E5%9E%8B%E4%B8%8E%E7%B1%BB%E7%9A%84%E5%8C%BA%E5%88%AB\" target=\"_blank\" rel=\"noopener\">1 \u7c7b\u578b\u4e0e\u7c7b\u7684\u533a\u522b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#162-classof%E4%B8%8Egetclass%E7%9A%84%E5%8C%BA%E5%88%AB\" target=\"_blank\" rel=\"noopener\">2 classOf\u4e0egetClass\u7684\u533a\u522b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#163-%E5%8D%95%E4%BE%8B%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">3 \u5355\u4f8b\u7c7b\u578b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#164-%E7%B1%BB%E5%9E%8B%E6%8A%95%E5%BD%B1\" target=\"_blank\" rel=\"noopener\">4 \u7c7b\u578b\u6295\u5f71<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#165-%E7%B1%BB%E5%9E%8B%E5%88%AB%E5%90%8D\" target=\"_blank\" rel=\"noopener\">5 \u7c7b\u578b\u522b\u540d<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#166-%E7%BB%93%E6%9E%84%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">6 \u7ed3\u6784\u7c7b\u578b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#167-%E5%A4%8D%E5%90%88%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">7 \u590d\u5408\u7c7b\u578b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#168-%E4%B8%AD%E7%BD%AE%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">8 \u4e2d\u7f6e\u7c7b\u578b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#169-%E8%87%AA%E8%BA%AB%E7%B1%BB%E5%9E%8B\" target=\"_blank\" rel=\"noopener\">9 \u81ea\u8eab\u7c7b\u578b<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#1610-%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8F%8D%E5%B0%84\" target=\"_blank\" rel=\"noopener\">10 \u8fd0\u884c\u65f6\u53cd\u5c04<\/a>\n<ul>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#16101-%E8%8E%B7%E5%8F%96%E8%BF%90%E8%A1%8C%E6%97%B6%E7%B1%BB%E5%9E%8B%E4%BF%A1%E6%81%AF\" target=\"_blank\" rel=\"noopener\">101 \u83b7\u53d6\u8fd0\u884c\u65f6\u7c7b\u578b\u4fe1\u606f<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#16102-%E8%BF%90%E8%A1%8C%E6%97%B6%E7%B1%BB%E5%9E%8B%E5%AE%9E%E4%BE%8B%E5%8C%96\" target=\"_blank\" rel=\"noopener\">102 \u8fd0\u884c\u65f6\u7c7b\u578b\u5b9e\u4f8b\u5316<\/a><\/li>\n<li><a href=\"https:\/\/blog.csdn.net\/c391183914\/article\/details\/78647533?locationNum=2&amp;fps=1#16103-%E8%BF%90%E8%A1%8C%E6%97%B6%E7%B1%BB%E6%88%90%E5%91%98%E7%9A%84%E8%AE%BF%E9%97%AE\" target=\"_blank\" rel=\"noopener\">103 \u8fd0\u884c\u65f6\u7c7b\u6210\u5458\u7684\u8bbf\u95ee<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h1 id=\"\u4e00-scala\u5b89\u88c5\u4e0e\u914d\u7f6e\"><a name=\"t0\"><\/a><a name=\"t0\"><\/a>\u4e00\u3001\u00a0<a class=\"hl hl-1\" href=\"https:\/\/so.csdn.net\/so\/search?q=Scala&amp;spm=1001.2101.3001.7020\" target=\"_blank\" rel=\"noopener\" data-report-view=\"{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https:\/\/so.csdn.net\/so\/search?q=Scala&amp;spm=1001.2101.3001.7020&quot;}\" data-report-click=\"{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https:\/\/so.csdn.net\/so\/search?q=Scala&amp;spm=1001.2101.3001.7020&quot;}\" data-tit=\"Scala\" data-pretit=\"scala\">Scala<\/a>\u5b89\u88c5\u4e0e\u914d\u7f6e<\/h1>\n<h2 id=\"11-\u5b89\u88c5\"><a name=\"t1\"><\/a><a name=\"t1\"><\/a>1.1 \u5b89\u88c5<\/h2>\n<p>Scala\u9700\u8981Java\u8fd0\u884c\u65f6\u5e93\uff0c\u5b89\u88c5Scala\u9700\u8981\u9996\u5148\u5b89\u88c5JVM\u865a\u62df\u673a\uff0c\u63a8\u8350\u5b89\u88c5JDK1.8\u3002<br \/>\n\u5728<a href=\"http:\/\/www.scala-lang.org\/\" target=\"_blank\" rel=\"noopener\">http:\/\/www.scala-lang.org\/<\/a>\u00a0\u4e0b\u8f7dScala2.11.8\u7a0b\u5e8f\u5b89\u88c5\u5305<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127175851324\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p>\u6839\u636e\u4e0d\u540c\u7684\u64cd\u4f5c\u7cfb\u7edf\u9009\u62e9\u4e0d\u540c\u7684\u5b89\u88c5\u5305\uff0c\u4e0b\u8f7d\u5b8c\u6210\u540e\uff0c\u5c06\u5b89\u88c5\u5305\u89e3\u538b\u5230\u5b89\u88c5\u76ee\u5f55\u3002\u5c06scala\u5b89\u88c5\u76ee\u5f55\u4e0b\u7684bin\u76ee\u5f55\u52a0\u5165\u5230PATH\u73af\u5883\u53d8\u91cf\uff1a<br \/>\nSCALA_HOME:<br \/>\n<code>SCALA_HOME= D:\\scala-2.11.8<\/code><br \/>\nPATH:<br \/>\n<code>\u5728PATH\u53d8\u91cf\u4e2d\u6dfb\u52a0\uff1a%SCALA_HOME%\\bin<\/code><br \/>\n\u5b8c\u6210\u4ee5\u4e0a\u6d41\u7a0b\u540e\uff0c\u5728\u547d\u4ee4\u884c\u8f93\u5165\uff1ascala\uff0c\u8fdb\u5165\u5982\u4e0b\u754c\u9762\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127175927806\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u6ce8\u610f\uff1a\u8be5\u64cd\u4f5cWindows\u548cLinux\u914d\u7f6e\u6d41\u7a0b\u662f\u4e00\u6837\u7684\u3002\u53ef\u4ee5\u53c2\u8003Java\u7684JDK\u7684\u914d\u7f6e\u8fc7\u7a0b\u3002<br \/>\n\u5230\u6b64\u4e3a\u6b62\uff0cScala\u7684\u5b89\u88c5\u5df2\u7ecf\u6210\u529f\u3002<\/p>\n<h2 id=\"12-\u914d\u7f6eidea\"><a name=\"t2\"><\/a><a name=\"t2\"><\/a>1.2 \u914d\u7f6eIDEA<\/h2>\n<p>1) \u6253\u5f00IDEA\u5de5\u5177\uff0c\u5982\u56fe\uff1a\u70b9\u51fbConfigure<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180005391\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n2) \u70b9\u51fbPlugins<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180020591\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n3) \u70b9\u51fbInstall plugin from disk<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180038289\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n4) \u9009\u62e9scala\u7684plugins<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180109300\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n5) \u6b64\u65f6\u4f1a\u663e\u793a\u4e00\u4e2aScala\u7684\u6761\u76ee\uff0c\u5728\u53f3\u4fa7\u70b9\u51fbRestart IntelliJ IDEA<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180302629\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n6) \u521b\u5efaMaven\u9879\u76ee<br \/>\n\u521b\u5efa\u7684maven\u9879\u76ee\u9ed8\u8ba4\u662f\u4e0d\u652f\u6301scala\u7684\uff0c\u9700\u8981\u4e3a\u9879\u76ee\u6dfb\u52a0scala\u7684framework\uff0c\u5982\u56fe\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180334532\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u5728\u8fd9\u91cc\u9009\u62e9Scala\u540e\uff0c\u5728\u53f3\u8fb9\u7684Use library\u4e2d\u914d\u7f6e\u4f60\u7684\u5b89\u88c5\u76ee\u5f55\u5373\u53ef\uff0c\u6700\u540e\u70b9\u51fbOK\u3002<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180408164\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n7) \u5728\u9879\u76ee\u7684\u76ee\u5f55\u7ed3\u6784\u4e2d\uff0c\u521b\u5efascala\u6587\u4ef6\u5939\uff0c\u5e76\u6807\u8bb0\u4e3asource<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180433274\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180454766\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n8) \u4ee5\u4e0a\u914d\u7f6e\u90fd\u5b8c\u6210\u540e\uff0c\u5c31\u53ef\u4ee5\u5728scala\u4e0a\u70b9\u51fb\u53f3\u952e\u521b\u5efascala class\u4e86<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180512219\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h1 id=\"\u4e8c-scala\u57fa\u7840\"><a name=\"t3\"><\/a><a name=\"t3\"><\/a>\u4e8c\u3001 Scala\u57fa\u7840<\/h1>\n<h2 id=\"21-hello-scala\"><a name=\"t4\"><\/a><a name=\"t4\"><\/a>2.1 Hello Scala<\/h2>\n<h3 id=\"211-idea\u8fd0\u884chelloscala\u7a0b\u5e8f\"><a name=\"t5\"><\/a><a name=\"t5\"><\/a>2.1.1 IDEA\u8fd0\u884cHelloScala\u7a0b\u5e8f<\/h3>\n<p>1) \u5728scala\u4e0a\u53f3\u952e\uff0c\u521b\u5efascala object<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180736934\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n2) \u7f16\u5199\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">object<\/span> HelloScala {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">main<\/span>(<span class=\"hljs-params\">args: Array[String]<\/span>): Unit = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;Hello Scala&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>\u53f3\u952eRun HelloScala\uff0c\u5982\u56fe\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180826532\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h3 id=\"212-\u63a7\u5236\u53f0\u8fd0\u884chelloscala\u7a0b\u5e8f\"><a name=\"t6\"><\/a><a name=\"t6\"><\/a>2.1.2 \u63a7\u5236\u53f0\u8fd0\u884cHelloScala\u7a0b\u5e8f<\/h3>\n<p>1) \u6253\u5305<br \/>\nscala\u7a0b\u5e8f\u7684\u6253\u5305\u8fc7\u7a0b\u548cjava\u5de5\u7a0b\u7684\u6253\u5305\u662f\u4e00\u6837\u7684\uff0c\u56e0\u4e3a\u6211\u4eec\u90fd\u662f\u4f7f\u7528maven\u6784\u5efa\u7684\u9879\u76ee\uff0c\u6240\u4ee5\u4f60\u53ea\u9700\u8981\u4e00Java\u7684Maven\u5de5\u7a0b\u4e00\u81f4\u7684\u6253\u5305\u65b9\u5f0f\u6253\u5305\u9879\u76ee\u5373\u53ef\u3002\u5373\uff1a\u4f7f\u7528idea\uff0c\u53f3\u4fa7\u7684maven\u5de5\u5177\uff0c\u53cc\u51fbpackage\u5373\u53ef\uff0c\u8be5\u6b65\u9aa4\u5b8c\u6210\u540e\u4f1a\u5728\u9879\u76ee\u7684\u76ee\u5f55\u7ed3\u6784\u4e2d\u751f\u6210\u4e00\u4e2atarget\u6587\u4ef6\u5939\uff0c\u5176\u4e2d\u6709\u6253\u5305\u597d\u7684jar\u6587\u4ef6\u5982\u56fe\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180903672\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u6253\u5305\u597d\u7684jar\u6587\u4ef6\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127180929333\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n2) \u8fd0\u884c<br \/>\n\u5c06\u8be5jar\u5305\u590d\u5236\u5230\u4efb\u610f\u4f4d\u7f6e\uff0c\u7136\u540e\u6253\u5f00cmd\uff0c\u6267\u884c\u547d\u4ee4\uff1a<br \/>\n<code>scala -cp C:\\Users\\61661\\Desktop\\scala-1.0-SNAPSHOT.jar HelloScala<\/code><br \/>\n\u5373\u53ef\u770b\u5230\u6548\u679c\u5982\u56fe\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127181006180\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2 id=\"22-\u58f0\u660e\u503c\u548c\u53d8\u91cf\"><a name=\"t7\"><\/a><a name=\"t7\"><\/a>2.2 \u58f0\u660e\u503c\u548c\u53d8\u91cf<\/h2>\n<p>Scala\u58f0\u660e\u53d8\u91cf\u6709\u4e24\u79cd\u65b9\u5f0f\uff0c\u4e00\u4e2a\u7528val\uff0c\u4e00\u4e2a\u7528var\u3002<br \/>\nval \/ var \u53d8\u91cf\u540d : \u53d8\u91cf\u7c7b\u578b = \u53d8\u91cf\u503c\u3002<br \/>\nval\u5b9a\u4e49\u7684\u503c\u662f\u4e0d\u53ef\u53d8\u7684\uff0c\u5b83\u4e0d\u662f\u4e00\u4e2a\u5e38\u91cf\uff0c\u662f\u4e0d\u53ef\u53d8\u91cf\uff0c\u6216\u79f0\u4e4b\u4e3a\u53ea\u8bfb\u53d8\u91cf\u3002<br \/>\nval\u793a\u4f8b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-keyword\">val<\/span> a1 = <span class=\"hljs-number\">10<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; a1 = <span class=\"hljs-number\">20<\/span>(\u6b64\u5904\u4f1a\u62a5\u9519\uff0c\u56e0\u4e3a<span class=\"hljs-keyword\">val<\/span>\u4e0d\u5141\u8bb8\u521d\u59cb\u5316\u540e\u518d\u6b21\u4fee\u6539a1\u53d8\u91cf\u7684\u5f15\u7528)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>var\u793a\u4f8b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-keyword\">var<\/span> a2 = <span class=\"hljs-number\">10<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; a2 = <span class=\"hljs-number\">20<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a<\/em><br \/>\n<em>1\u3001scala\u9ed8\u8ba4\u4e3a\u533f\u540d\u53d8\u91cf\u5206\u914dval<\/em><br \/>\n<em>2\u3001val\u5b9a\u4e49\u7684\u53d8\u91cf\u867d\u7136\u4e0d\u80fd\u6539\u53d8\u5176\u5f15\u7528\u7684\u5185\u5b58\u5730\u5740\uff0c\u4f46\u662f\u53ef\u4ee5\u6539\u53d8\u5176\u5f15\u7528\u7684\u5bf9\u8c61\u7684\u5185\u90e8\u7684\u5176\u4ed6\u5c5e\u6027\u503c\u3002<\/em><br \/>\n<em>3\u3001\u4e3a\u4e86\u51cf\u5c11\u53ef\u53d8\u6027\u5f15\u8d77\u7684bug\uff0c\u5e94\u8be5\u5c3d\u53ef\u80fd\u5730\u4f7f\u7528\u4e0d\u53ef\u53d8\u53d8\u91cf\u3002\u53d8\u91cf\u7c7b\u578b\u53ef\u4ee5\u7701\u7565\uff0c\u89e3\u6790\u5668\u4f1a\u6839\u636e\u503c\u8fdb\u884c\u63a8\u65ad\u3002val\u548cvar\u58f0\u660e\u53d8\u91cf\u65f6\u90fd\u5fc5\u987b\u521d\u59cb\u5316\u3002<\/em><\/p>\n<h2 id=\"23-\u5e38\u7528\u7c7b\u578b\"><a name=\"t8\"><\/a><a name=\"t8\"><\/a>2.3 \u5e38\u7528\u7c7b\u578b<\/h2>\n<h3 id=\"231-\u5e38\u7528\u7c7b\u578b\u4ecb\u7ecd\"><a name=\"t9\"><\/a><a name=\"t9\"><\/a>2.3.1 \u5e38\u7528\u7c7b\u578b\u4ecb\u7ecd<\/h3>\n<p>Scala\u67098\u79cd\u6570\u636e\u7c7b\u578b\uff1aByte\u3001Char\u3001Short\u3001Int\u3001Long\u3001Float\u3001Double\u4ee5\u53caBoolean\u3002<\/p>\n<div class=\"table-box\">\n<table>\n<thead>\n<tr>\n<th>\u7c7b\u578b<\/th>\n<th>\u4ecb\u7ecd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Boolean<\/strong><\/td>\n<td>true \u6216\u8005 false<\/td>\n<\/tr>\n<tr>\n<td><strong>Byte<\/strong><\/td>\n<td>8\u4f4d, \u6709\u7b26\u53f7<\/td>\n<\/tr>\n<tr>\n<td><strong>Short<\/strong><\/td>\n<td>16\u4f4d, \u6709\u7b26\u53f7<\/td>\n<\/tr>\n<tr>\n<td><strong>Int<\/strong><\/td>\n<td>32\u4f4d, \u6709\u7b26\u53f7<\/td>\n<\/tr>\n<tr>\n<td><strong>Long<\/strong><\/td>\n<td>64\u4f4d, \u6709\u7b26\u53f7<\/td>\n<\/tr>\n<tr>\n<td><strong>Char<\/strong><\/td>\n<td>16\u4f4d, \u65e0\u7b26\u53f7<\/td>\n<\/tr>\n<tr>\n<td><strong>Float<\/strong><\/td>\n<td>32\u4f4d, \u5355\u7cbe\u5ea6\u6d6e\u70b9\u6570<\/td>\n<\/tr>\n<tr>\n<td><strong>Double<\/strong><\/td>\n<td>64\u4f4d, \u53cc\u7cbe\u5ea6\u6d6e\u70b9\u6570<\/td>\n<\/tr>\n<tr>\n<td><strong>String<\/strong><\/td>\n<td>\u5176\u5b9e\u5c31\u662f\u7531Char\u6570\u7ec4\u7ec4\u6210<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u4e0eJava\u4e2d\u7684\u6570\u636e\u7c7b\u578b\u4e0d\u540c\uff0cScala\u5e76\u4e0d\u533a\u5206\u57fa\u672c\u7c7b\u578b\u548c\u5f15\u7528\u7c7b\u578b\uff0c\u6240\u4ee5\u8fd9\u4e9b\u7c7b\u578b\u90fd\u662f\u5bf9\u8c61\uff0c\u53ef\u4ee5\u8c03\u7528\u76f8\u5bf9\u5e94\u7684\u65b9\u6cd5\u3002String\u76f4\u63a5\u4f7f\u7528\u7684\u662fjava.lang.String. \u4e0d\u8fc7\uff0c\u7531\u4e8eString\u5b9e\u9645\u662f\u4e00\u7cfb\u5217Char\u7684\u4e0d\u53ef\u53d8\u7684\u96c6\u5408\uff0cScala\u4e2d\u5927\u90e8\u5206\u9488\u5bf9\u96c6\u5408\u7684\u64cd\u4f5c\uff0c\u90fd\u53ef\u4ee5\u7528\u4e8eString\uff0c\u5177\u4f53\u6765\u8bf4\uff0cString\u7684\u8fd9\u4e9b\u65b9\u6cd5\u5b58\u5728\u4e8e\u7c7bscala.collection.immutable.StringOps\u4e2d\u3002<\/p>\n<p>\u7531\u4e8eString\u5728\u9700\u8981\u65f6\u80fd\u9690\u5f0f\u8f6c\u6362\u4e3aStringOps\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u4efb\u4f55\u989d\u5916\u7684\u8f6c\u6362\uff0cString\u5c31\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e9b\u65b9\u6cd5\u3002<\/p>\n<p>\u6bcf\u4e00\u79cd\u6570\u636e\u7c7b\u578b\u90fd\u6709\u5bf9\u5e94\u7684Rich* \u7c7b\u578b\uff0c\u5982RichInt\u3001RichChar\u7b49\uff0c\u4e3a\u57fa\u672c\u7c7b\u578b\u63d0\u4f9b\u4e86\u66f4\u591a\u7684\u6709\u7528\u64cd\u4f5c\u3002<\/p>\n<h3 id=\"232-\u5e38\u7528\u7c7b\u578b\u7ed3\u6784\u56fe\"><a name=\"t10\"><\/a><a name=\"t10\"><\/a>2.3.2 \u5e38\u7528\u7c7b\u578b\u7ed3\u6784\u56fe<\/h3>\n<p>Scala\u4e2d\uff0c\u6240\u6709\u7684\u503c\u90fd\u662f\u7c7b\u5bf9\u8c61\uff0c\u800c\u6240\u6709\u7684\u7c7b\uff0c\u5305\u62ec\u503c\u7c7b\u578b\uff0c\u90fd\u6700\u7ec8\u7ee7\u627f\u81ea\u4e00\u4e2a\u7edf\u4e00\u7684\u6839\u7c7b\u578bAny\u3002\u7edf\u4e00\u7c7b\u578b\uff0c\u662fScala\u7684\u53c8\u4e00\u5927\u7279\u70b9\u3002\u66f4\u7279\u522b\u7684\u662f\uff0cScala\u4e2d\u8fd8\u5b9a\u4e49\u4e86\u51e0\u4e2a\u5e95\u5c42\u7c7b\uff08Bottom Class\uff09\uff0c\u6bd4\u5982Null\u548cNothing\u3002<\/p>\n<p>1) Null\u662f\u6240\u6709\u5f15\u7528\u7c7b\u578b\u7684\u5b50\u7c7b\u578b\uff0c\u800cNothing\u662f\u6240\u6709\u7c7b\u578b\u7684\u5b50\u7c7b\u578b\u3002Null\u7c7b\u53ea\u6709\u4e00\u4e2a\u5b9e\u4f8b\u5bf9\u8c61\uff0cnull\uff0c\u7c7b\u4f3c\u4e8eJava\u4e2d\u7684null\u5f15\u7528\u3002null\u53ef\u4ee5\u8d4b\u503c\u7ed9\u4efb\u610f\u5f15\u7528\u7c7b\u578b\uff0c\u4f46\u662f\u4e0d\u80fd\u8d4b\u503c\u7ed9\u503c\u7c7b\u578b\u3002<\/p>\n<p>2) Nothing\uff0c\u53ef\u4ee5\u4f5c\u4e3a\u6ca1\u6709\u6b63\u5e38\u8fd4\u56de\u503c\u7684\u65b9\u6cd5\u7684\u8fd4\u56de\u7c7b\u578b\uff0c\u975e\u5e38\u76f4\u89c2\u7684\u544a\u8bc9\u4f60\u8fd9\u4e2a\u65b9\u6cd5\u4e0d\u4f1a\u6b63\u5e38\u8fd4\u56de\uff0c\u800c\u4e14\u7531\u4e8eNothing\u662f\u5176\u4ed6\u4efb\u610f\u7c7b\u578b\u7684\u5b50\u7c7b\uff0c\u4ed6\u8fd8\u80fd\u8ddf\u8981\u6c42\u8fd4\u56de\u503c\u7684\u65b9\u6cd5\u517c\u5bb9\u3002<\/p>\n<p>3) Unit\u7c7b\u578b\u7528\u6765\u6807\u8bc6\u8fc7\u7a0b\uff0c\u4e5f\u5c31\u662f\u6ca1\u6709\u660e\u786e\u8fd4\u56de\u503c\u7684\u51fd\u6570\u3002 \u7531\u6b64\u53ef\u89c1\uff0cUnit\u7c7b\u4f3c\u4e8eJava\u91cc\u7684void\u3002Unit\u53ea\u6709\u4e00\u4e2a\u5b9e\u4f8b\uff0c()\uff0c\u8fd9\u4e2a\u5b9e\u4f8b\u4e5f\u6ca1\u6709\u5b9e\u8d28\u7684\u610f\u4e49\u3002<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127181847112\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2 id=\"24-\u7b97\u6570\u64cd\u4f5c\u7b26\u91cd\u8f7d\"><a name=\"t11\"><\/a><a name=\"t11\"><\/a>2.4 \u7b97\u6570\u64cd\u4f5c\u7b26\u91cd\u8f7d<\/h2>\n<p>+-*\/%\u53ef\u4ee5\u5b8c\u6210\u548cJava\u4e2d\u76f8\u540c\u7684\u5de5\u4f5c\uff0c\u4f46\u662f\u6709\u4e00\u70b9\u533a\u522b\uff0c\u4ed6\u4eec\u90fd\u662f\u65b9\u6cd5\u3002\u4f60\u51e0\u4e4e\u53ef\u4ee5\u7528\u4efb\u4f55\u7b26\u53f7\u6765\u4e3a\u65b9\u6cd5\u547d\u540d\u3002<br \/>\n\u4e3e\u4f8b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-undefined\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; 1 + 2<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u7b49\u540c\u4e8e\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; 1.+(2)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-undefined\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1aScala\u4e2d\u6ca1\u6709++\u3001\u2013\u64cd\u4f5c\u7b26\uff0c\u9700\u8981\u901a\u8fc7+=\u3001-=\u6765\u5b9e\u73b0\u540c\u6837\u7684\u6548\u679c\u3002<\/em><\/p>\n<h2 id=\"25-\u8c03\u7528\u51fd\u6570\u4e0e\u65b9\u6cd5\"><a name=\"t12\"><\/a><a name=\"t12\"><\/a>2.5 \u8c03\u7528\u51fd\u6570\u4e0e\u65b9\u6cd5<\/h2>\n<p>\u5728scala\u4e2d\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u6211\u4eec\u4e0d\u4f1a\u523b\u610f\u7684\u53bb\u533a\u5206\u51fd\u6570\u4e0e\u65b9\u6cd5\u7684\u533a\u522b\uff0c\u4f46\u662f\u4ed6\u4eec\u786e\u5b9e\u662f\u4e0d\u540c\u7684\u4e1c\u897f\u3002\u540e\u9762\u6211\u4eec\u518d\u8be6\u7ec6\u63a2\u8ba8\u3002\u9996\u5148\u6211\u4eec\u8981\u5b66\u4f1a\u4f7f\u7528scala\u6765\u8c03\u7528\u51fd\u6570\u4e0e\u65b9\u6cd5\u3002<br \/>\n1) \u8c03\u7528\u51fd\u6570\uff0c\u6c42\u65b9\u6839<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">scala<\/span>&gt; <span class=\"hljs-keyword\">import<\/span> scala.math._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">scala<\/span>&gt; sqrt(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p>2) \u8c03\u7528\u65b9\u6cd5\uff0c\u9759\u6001\u65b9\u6cd5\uff08scala\u4e2d\u6ca1\u6709\u9759\u6001\u65b9\u6cd5\u8fd9\u4e2a\u6982\u5ff5\uff0c\u9700\u8981\u901a\u8fc7\u4f34\u751f\u7c7b\u5bf9\u8c61\u6765\u5b9e\u73b0\uff09<br \/>\nscala&gt; BigInt.probablePrime(16, scala.util.Random)<br \/>\n3) \u8c03\u7528\u65b9\u6cd5\uff0c\u975e\u9759\u6001\u65b9\u6cd5\uff0c\u4f7f\u7528\u5bf9\u8c61\u8c03\u7528<\/p>\n<pre class=\"has\"><code class=\"hljs language-sql\">scala<span class=\"hljs-operator\">&gt;<\/span> \"HelloWorld\".<span class=\"hljs-keyword\">distinct<\/span><\/code><\/pre>\n<p>4) apply\u4e0eupdate\u65b9\u6cd5<br \/>\napply\u65b9\u6cd5\u662f\u8c03\u7528\u65f6\u53ef\u4ee5\u7701\u7565\u65b9\u6cd5\u540d\u7684\u65b9\u6cd5\u3002\u7528\u4e8e\u6784\u9020\u548c\u83b7\u53d6\u5143\u7d20\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-cpp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;Hello&#8221;<\/span>(<span class=\"hljs-number\">4<\/span>) \u7b49\u540c\u4e8e <span class=\"hljs-string\">&#8220;Hello&#8221;<\/span>.<span class=\"hljs-built_in\">apply<\/span>(<span class=\"hljs-number\">4<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">Array<\/span>(<span class=\"hljs-number\">1<\/span>,<span class=\"hljs-number\">2<\/span>,<span class=\"hljs-number\">3<\/span>) \u7b49\u540c\u4e8e Array.<span class=\"hljs-built_in\">apply<\/span>(<span class=\"hljs-number\">1<\/span>,<span class=\"hljs-number\">2<\/span>,<span class=\"hljs-number\">3<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u5982\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-string\">&#8220;Hello&#8221;<\/span>(<span class=\"hljs-number\">4<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-string\">&#8220;Hello&#8221;<\/span>.<span class=\"hljs-built_in\">apply<\/span>(<span class=\"hljs-number\">4<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-cpp\"><\/code><\/pre>\n<p>\u5728StringOps\u4e2d\u4f60\u4f1a\u53d1\u73b0\u4e00\u4e2a def apply(n: Int): Char\u65b9\u6cd5\u5b9a\u4e49\u3002update\u65b9\u6cd5\u4e5f\u662f\u8c03\u7528\u65f6\u53ef\u4ee5\u7701\u7565\u65b9\u6cd5\u540d\u7684\u65b9\u6cd5\uff0c\u7528\u4e8e\u5143\u7d20\u7684\u66f4\u65b0\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-title\">arr<\/span><span class=\"hljs-params\">(<span class=\"hljs-number\">4<\/span>)<\/span> = 5 \u7b49\u540c\u4e8e <span class=\"hljs-title\">arr<\/span>.<span class=\"hljs-title\">update<\/span><span class=\"hljs-params\">(<span class=\"hljs-number\">4<\/span>,<span class=\"hljs-number\">5<\/span>)<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u5982\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">val<\/span> <span class=\"hljs-title\">arr1<\/span> = <span class=\"hljs-title\">new<\/span> A<span class=\"hljs-title\">rray<\/span>[I<span class=\"hljs-title\">nt<\/span>]<span class=\"hljs-params\">(<span class=\"hljs-number\">5<\/span>)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">arr1<\/span><span class=\"hljs-params\">(<span class=\"hljs-number\">1<\/span>)<\/span> = 2<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">arr1<\/span>.<span class=\"hljs-title\">update<\/span><span class=\"hljs-params\">(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(arr1.mkString(<span class=\"hljs-string\">&#8220;,&#8221;<\/span>))<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<h2 id=\"26-option\u7c7b\u578b\"><a name=\"t13\"><\/a><a name=\"t13\"><\/a>2.6 option\u7c7b\u578b<\/h2>\n<p>Scala\u4e3a\u5355\u4e2a\u503c\u63d0\u4f9b\u4e86\u5bf9\u8c61\u7684\u5305\u88c5\u5668\uff0c\u8868\u793a\u4e3a\u90a3\u79cd\u53ef\u80fd\u5b58\u5728\u4e5f\u53ef\u80fd\u4e0d\u5b58\u5728\u7684\u503c\u3002\u4ed6\u53ea\u6709\u4e24\u4e2a\u6709\u6548\u7684\u5b50\u7c7b\u5bf9\u8c61\uff0c\u4e00\u4e2a\u662fSome\uff0c\u8868\u793a\u67d0\u4e2a\u503c\uff0c\u53e6\u5916\u4e00\u4e2a\u662fNone\uff0c\u8868\u793a\u4e3a\u7a7a\uff0c\u901a\u8fc7Option\u7684\u4f7f\u7528\uff0c\u907f\u514d\u4e86\u4f7f\u7528null\u3001\u7a7a\u5b57\u7b26\u4e32\u7b49\u65b9\u5f0f\u6765\u8868\u793a\u7f3a\u5c11\u67d0\u4e2a\u503c\u7684\u505a\u6cd5\u3002<br \/>\n\u5982\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> map1 = Map(<span class=\"hljs-string\">&#8220;Alice&#8221;<\/span> -&gt; <span class=\"hljs-number\">20<\/span>, <span class=\"hljs-string\">&#8220;Bob&#8221;<\/span> -&gt; <span class=\"hljs-number\">30<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(map1.<span class=\"hljs-keyword\">get<\/span>(<span class=\"hljs-string\">&#8220;Alice&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(map1.<span class=\"hljs-keyword\">get<\/span>(<span class=\"hljs-string\">&#8220;Jone&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h1 id=\"\u4e09-\u63a7\u5236\u7ed3\u6784\u548c\u51fd\u6570\"><a name=\"t14\"><\/a><a name=\"t14\"><\/a>\u4e09\u3001 \u63a7\u5236\u7ed3\u6784\u548c\u51fd\u6570<\/h1>\n<h2 id=\"31-if-else\u8868\u8fbe\u5f0f\"><a name=\"t15\"><\/a><a name=\"t15\"><\/a>3.1 if else\u8868\u8fbe\u5f0f<\/h2>\n<p>scala\u4e2d\u6ca1\u6709\u4e09\u76ee\u8fd0\u7b97\u7b26\uff0c\u56e0\u4e3a\u6839\u672c\u4e0d\u9700\u8981\u3002scala\u4e2dif else\u8868\u8fbe\u5f0f\u662f\u6709\u8fd4\u56de\u503c\u7684\uff0c\u5982\u679cif\u6216\u8005else\u8fd4\u56de\u7684\u7c7b\u578b\u4e0d\u4e00\u6837\uff0c\u5c31\u8fd4\u56deAny\u7c7b\u578b\uff08\u6240\u6709\u7c7b\u578b\u7684\u516c\u5171\u8d85\u7c7b\u578b\uff09\u3002<br \/>\n\u4f8b\u5982\uff1aif else\u8fd4\u56de\u7c7b\u578b\u4e00\u6837<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> a3 = <span class=\"hljs-number\">10<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> a4 =<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(a3 &gt; <span class=\"hljs-number\">20<\/span>){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;a3\u5927\u4e8e20&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<span class=\"hljs-keyword\">else<\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;a3\u5c0f\u4e8e20&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(a4)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>\u4f8b\u5982\uff1aif else\u8fd4\u56de\u7c7b\u578b\u4e0d\u4e00\u6837<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> a5 =<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(a3 &gt; <span class=\"hljs-number\">20<\/span>){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;a3\u5927\u4e8e20&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(a5)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>\u5982\u679c\u7f3a\u5c11\u4e00\u4e2a\u5224\u65ad\uff0c\u4ec0\u4e48\u90fd\u6ca1\u6709\u8fd4\u56de\uff0c\u4f46\u662fScala\u8ba4\u4e3a\u4efb\u4f55\u8868\u8fbe\u5f0f\u90fd\u4f1a\u6709\u503c\uff0c\u5bf9\u4e8e\u7a7a\u503c\uff0c\u4f7f\u7528Unit\u7c7b\uff0c\u5199\u505a()\uff0c\u53eb\u505a\u65e0\u7528\u5360\u4f4d\u7b26\uff0c\u76f8\u5f53\u4e8ejava\u4e2d\u7684void\u3002<br \/>\n<em>\u5c16\u53eb\u63d0\u793a\uff1a\u884c\u5c3e\u7684\u4f4d\u7f6e\u4e0d\u9700\u8981\u5206\u53f7\uff0c\u53ea\u8981\u80fd\u591f\u4ece\u4e0a\u4e0b\u6587\u5224\u65ad\u51fa\u8bed\u53e5\u7684\u7ec8\u6b62\u5373\u53ef\u3002\u4f46\u662f\u5982\u679c\u5728\u5355\u884c\u4e2d\u5199\u591a\u4e2a\u8bed\u53e5\uff0c\u5219\u9700\u8981\u5206\u53f7\u5206\u5272\u3002\u5728Scala\u4e2d\uff0c{}\u5feb\u5305\u542b\u4e00\u7cfb\u5217\u8868\u8fbe\u5f0f\uff0c\u5176\u7ed3\u679c\u4e5f\u662f\u4e00\u4e2a\u8868\u8fbe\u5f0f\u3002\u5757\u4e2d\u6700\u540e\u4e00\u4e2a\u8868\u8fbe\u5f0f\u7684\u503c\u5c31\u662f\u5757\u7684\u503c\u3002<\/em><\/p>\n<h2 id=\"32-while\u8868\u8fbe\u5f0f\"><a name=\"t16\"><\/a><a name=\"t16\"><\/a>3.2 while\u8868\u8fbe\u5f0f<\/h2>\n<p>Scala\u63d0\u4f9b\u548cJava\u4e00\u6837\u7684while\u548cdo\u5faa\u73af\uff0c\u4e0eIf\u8bed\u53e5\u4e0d\u540c\uff0cWhile\u8bed\u53e5\u672c\u8eab\u6ca1\u6709\u503c\uff0c\u5373\u6574\u4e2aWhile\u8bed\u53e5\u7684\u7ed3\u679c\u662fUnit\u7c7b\u578b\u7684()\u3002<br \/>\n1) while\u5faa\u73af<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> n = <span class=\"hljs-number\">1<\/span>;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> while1 = <span class=\"hljs-keyword\">while<\/span>(n &lt;= <span class=\"hljs-number\">10<\/span>){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">n += <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(while1)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(n)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>2) while\u5faa\u73af\u7684\u4e2d\u65ad<\/p>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.util.control.Breaks<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val <span class=\"hljs-keyword\">loop<\/span> = <span class=\"hljs-keyword\">new<\/span> Breaks<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">loop<\/span>.breakable{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">while<\/span>(n &lt;= <span class=\"hljs-number\">20<\/span>){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">n += <span class=\"hljs-number\">1<\/span>;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(n == <span class=\"hljs-number\">18<\/span>){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">loop<\/span>.<span class=\"hljs-keyword\">break<\/span>()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(n)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1ascala\u5e76\u6ca1\u6709\u63d0\u4f9bbreak\u548ccontinue\u8bed\u53e5\u6765\u9000\u51fa\u5faa\u73af\uff0c\u5982\u679c\u9700\u8981break\uff0c\u53ef\u4ee5\u901a\u8fc7\u51e0\u79cd\u65b9\u6cd5\u6765\u505a1\u3001\u4f7f\u7528Boolean\u578b\u7684\u63a7\u5236\u53d8\u91cf 2\u3001\u4f7f\u7528\u5d4c\u5957\u51fd\u6570\uff0c\u4ece\u51fd\u6570\u4e2dreturn 3\u3001\u4f7f\u7528Breaks\u5bf9\u8c61\u7684break\u65b9\u6cd5\u3002<\/em><\/p>\n<h2 id=\"33-for\u8868\u8fbe\u5f0f\"><a name=\"t17\"><\/a><a name=\"t17\"><\/a>3.3 for\u8868\u8fbe\u5f0f<\/h2>\n<p>Scala \u4e5f\u4e3afor \u5faa\u73af\u8fd9\u4e00\u5e38\u89c1\u7684\u63a7\u5236\u7ed3\u6784\u63d0\u4f9b\u4e86\u975e\u5e38\u591a\u7684\u7279\u6027\uff0c\u8fd9\u4e9bfor \u5faa\u73af\u7684\u7279\u6027\u88ab\u79f0\u4e3afor \u63a8\u5bfc\u5f0f\uff08for comprehension\uff09\u6216for \u8868\u8fbe\u5f0f\uff08for expression\uff09\u3002<br \/>\n1) for\u793a\u4f8b1\uff1ato\u5de6\u53f3\u4e24\u8fb9\u4e3a\u524d\u95ed\u540e\u95ed\u7684\u8bbf\u95ee<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">for(<span class=\"hljs-selector-tag\">i<\/span> &lt;- <span class=\"hljs-number\">1<\/span> <span class=\"hljs-selector-tag\">to<\/span> <span class=\"hljs-number\">3<\/span>; j &lt;- <span class=\"hljs-number\">1<\/span> <span class=\"hljs-selector-tag\">to<\/span> <span class=\"hljs-number\">3<\/span>){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">print(<span class=\"hljs-selector-tag\">i<\/span> * j + &#8221; &#8220;)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println()<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>2) for\u793a\u4f8b2\uff1auntil\u5de6\u53f3\u4e24\u8fb9\u4e3a\u524d\u95ed\u540e\u5f00\u7684\u8bbf\u95ee<\/p>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span>(i &lt;- <span class=\"hljs-number\">1<\/span> <span class=\"hljs-keyword\">until<\/span> <span class=\"hljs-number\">3<\/span>; j &lt;- <span class=\"hljs-number\">1<\/span> <span class=\"hljs-keyword\">until<\/span> <span class=\"hljs-number\">3<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">print<\/span>(i * j + <span class=\"hljs-string\">&#8221; &#8220;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println()<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<p>3) for\u793a\u4f8b3\uff1a\u5f15\u5165\u4fdd\u62a4\u5f0f\uff08\u4e5f\u79f0\u6761\u4ef6\u5224\u65ad\u5f0f\uff09\u8be5\u8bed\u53e5\u53ea\u6253\u53701 3\u3002\u4fdd\u62a4\u5f0f\u6ee1\u8db3\u4e3atrue\u5219\u8fdb\u5165\u5faa\u73af\u5185\u90e8\uff0c\u6ee1\u8db3\u4e3afalse\u5219\u8df3\u8fc7\uff0c\u7c7b\u4f3c\u4e8econtinue<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span>(i &lt;- <span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">3<\/span> <span class=\"hljs-keyword\">if<\/span> i != <span class=\"hljs-number\">2<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">print<\/span>(i + <span class=\"hljs-string\">&#8221; &#8220;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>()<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>4) for\u793a\u4f8b4\uff1a\u5f15\u5165\u53d8\u91cf<\/p>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-title\">for<\/span><span class=\"hljs-params\">(i &lt;- <span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">3<\/span>; j = <span class=\"hljs-number\">4<\/span> &#8211; i)<\/span> {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">print<\/span><span class=\"hljs-params\">(j + <span class=\"hljs-string\">&#8221; &#8220;<\/span>)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">()<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<p>5) for\u793a\u4f8b5\uff1a\u5c06\u904d\u5386\u8fc7\u7a0b\u4e2d\u5904\u7406\u7684\u7ed3\u679c\u8fd4\u56de\u5230\u4e00\u4e2a\uff0c\u4f7f\u7528yield\u5173\u952e\u5b57<\/p>\n<pre class=\"has\"><code class=\"hljs language-vbnet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val for5 = <span class=\"hljs-keyword\">for<\/span>(i &lt;- <span class=\"hljs-number\">1<\/span> <span class=\"hljs-keyword\">to<\/span> <span class=\"hljs-number\">10<\/span>) <span class=\"hljs-keyword\">yield<\/span> i<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(for5)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-vbnet\"><\/code><\/pre>\n<p>6) for\u793a\u4f8b6\uff1a\u4f7f\u7528\u82b1\u62ec\u53f7{}\u4ee3\u66ff\u5c0f\u62ec\u53f7()<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">i &lt;- <span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">3<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">j = <span class=\"hljs-number\">4<\/span> &#8211; i}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">print<\/span>(i * j + <span class=\"hljs-string\">&#8221; &#8220;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>()<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a{}\u548c()\u5bf9\u4e8efor\u8868\u8fbe\u5f0f\u6765\u8bf4\u90fd\u53ef\u4ee5\u3002for \u63a8\u5bfc\u5f0f\u6709\u4e00\u4e2a\u4e0d\u6210\u6587\u7684\u7ea6\u5b9a\uff1a\u5f53for \u63a8\u5bfc\u5f0f\u4ec5\u5305\u542b\u5355\u4e00\u8868\u8fbe\u5f0f\u65f6\u4f7f\u7528\u539f\u62ec\u53f7\uff0c\u5f53\u5176\u5305\u542b\u591a\u4e2a\u8868\u8fbe\u5f0f\u65f6\u4f7f\u7528\u5927\u62ec\u53f7\u3002\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\u4f7f\u7528\u539f\u62ec\u53f7\u65f6\uff0c\u65e9\u524d\u7248\u672c\u7684Scala \u8981\u6c42\u8868\u8fbe\u5f0f\u4e4b\u95f4\u5fc5\u987b\u4f7f\u7528\u5206\u53f7\u3002<\/em><\/p>\n<h2 id=\"34-\u51fd\u6570\"><a name=\"t18\"><\/a><a name=\"t18\"><\/a>3.4 \u51fd\u6570<\/h2>\n<p>scala\u5b9a\u4e49\u51fd\u6570\u7684\u6807\u51c6\u683c\u5f0f\u4e3a\uff1a<br \/>\n<code>def \u51fd\u6570\u540d(\u53c2\u6570\u540d1: \u53c2\u6570\u7c7b\u578b1, \u53c2\u6570\u540d2: \u53c2\u6570\u7c7b\u578b2) : \u8fd4\u56de\u7c7b\u578b = {\u51fd\u6570\u4f53}<\/code><br \/>\n1) \u51fd\u6570\u793a\u4f8b1\uff1a\u8fd4\u56deUnit\u7c7b\u578b\u7684\u51fd\u6570<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def shout1(<span class=\"hljs-attribute\">content<\/span>: String) : Unit = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-attribute\">content<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>2) \u51fd\u6570\u793a\u4f8b2\uff1a\u8fd4\u56deUnit\u7c7b\u578b\u7684\u51fd\u6570\uff0c\u4f46\u662f\u6ca1\u6709\u663e\u5f0f\u6307\u5b9a\u8fd4\u56de\u7c7b\u578b\u3002\uff08\u5f53\u7136\u4e5f\u53ef\u4ee5\u8fd4\u56de\u975eUnit\u7c7b\u578b\u7684\u503c\uff09<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def shout2(<span class=\"hljs-attribute\">content<\/span>: String) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-attribute\">content<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>3) \u51fd\u6570\u793a\u4f8b3\uff1a\u8fd4\u56de\u503c\u7c7b\u578b\u6709\u591a\u79cd\u53ef\u80fd\uff0c\u6b64\u65f6\u4e5f\u53ef\u4ee5\u7701\u7565Unit<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">shout3<\/span>(<span class=\"hljs-params\">content: String<\/span>) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(content.length &gt;= <span class=\"hljs-number\">3<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">content + <span class=\"hljs-string\">&#8220;\u55b5\u55b5\u55b5~&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-number\">3<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>4) \u51fd\u6570\u793a\u4f8b4\uff1a\u5e26\u6709\u9ed8\u8ba4\u503c\u53c2\u6570\u7684\u51fd\u6570\uff0c\u8c03\u7528\u8be5\u51fd\u6570\u65f6\uff0c\u53ef\u4ee5\u53ea\u7ed9\u65e0\u9ed8\u8ba4\u503c\u7684\u53c2\u6570\u4f20\u9012\u503c\uff0c\u4e5f\u53ef\u4ee5\u90fd\u4f20\u9012\uff0c\u65b0\u503c\u4f1a\u8986\u76d6\u9ed8\u8ba4\u503c\uff1b\u4f20\u9012\u53c2\u6570\u65f6\u5982\u679c\u4e0d\u6309\u7167\u5b9a\u4e49\u987a\u5e8f\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u53c2\u6570\u540d\u6765\u6307\u5b9a\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">shout4<\/span>(<span class=\"hljs-params\">content: String, leg: Int = <span class=\"hljs-number\">4<\/span><\/span>) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(content + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + leg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>5) \u51fd\u6570\u793a\u4f8b5\uff1a\u53d8\u957f\u53c2\u6570\uff08\u4e0d\u786e\u5b9a\u4e2a\u6570\u53c2\u6570\uff0c\u7c7b\u4f3cJava\u7684\u2026\uff09<\/p>\n<pre class=\"has\"><code class=\"hljs language-r\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-built_in\">sum<\/span><span class=\"hljs-punctuation\">(<\/span>args<span class=\"hljs-operator\">:<\/span> Int<span class=\"hljs-operator\">*<\/span><span class=\"hljs-punctuation\">)<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-punctuation\">{<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">var result <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span><span class=\"hljs-punctuation\">(<\/span>arg <span class=\"hljs-operator\">&lt;-<\/span> args<span class=\"hljs-punctuation\">)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">result <span class=\"hljs-operator\">+<\/span><span class=\"hljs-operator\">=<\/span> arg<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">result<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-punctuation\">}<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-r\"><\/code><\/pre>\n<p>6) \u9012\u5f52\u51fd\u6570\uff1a\u9012\u5f52\u51fd\u6570\u5728\u4f7f\u7528\u65f6\u5fc5\u987b\u6709\u660e\u786e\u7684\u8fd4\u56de\u503c\u7c7b\u578b<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">factorial<\/span>(<span class=\"hljs-params\">n: Int<\/span>): Int = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(n &lt;= <span class=\"hljs-number\">0<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">n * factorial(n &#8211; <span class=\"hljs-number\">1<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a<\/em><br \/>\n<em>1\u3001Scala\u53ef\u4ee5\u901a\u8fc7=\u53f3\u8fb9\u7684\u8868\u8fbe\u5f0f \u63a8\u65ad\u51fa\u51fd\u6570\u7684\u8fd4\u56de\u7c7b\u578b\u3002\u5982\u679c\u51fd\u6570\u4f53\u9700\u8981\u591a\u4e2a\u8868\u8fbe\u5f0f\uff0c\u53ef\u4ee5\u7528\u4ee3\u7801\u5757{}\u3002<\/em><br \/>\n<em>2\u3001\u53ef\u4ee5\u628areturn \u5f53\u505a \u51fd\u6570\u7248\u672c\u7684break\u8bed\u53e5\u3002<\/em><br \/>\n<em>3\u3001\u9012\u5f52\u51fd\u6570\u4e00\u5b9a\u8981\u6307\u5b9a\u8fd4\u56de\u7c7b\u578b\u3002<\/em><br \/>\n<em>4\u3001\u53d8\u957f\u53c2\u6570\u901a\u8fc7*\u6765\u6307\u5b9a\uff0c\u6240\u6709\u53c2\u6570\u4f1a\u8f6c\u5316\u4e3a\u4e00\u4e2aseq\u5e8f\u5217\u3002<\/em><\/p>\n<h2 id=\"35-\u8fc7\u7a0b\"><a name=\"t19\"><\/a><a name=\"t19\"><\/a>3.5 \u8fc7\u7a0b<\/h2>\n<p>\u6211\u4eec\u5c06\u51fd\u6570\u7684\u8fd4\u56de\u7c7b\u578b\u4e3aUnit\u7684\u51fd\u6570\u79f0\u4e4b\u4e3a\u8fc7\u7a0b\u3002<br \/>\n1) \u5b9a\u4e49\u8fc7\u7a0b\u793a\u4f8b1\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def shout1(<span class=\"hljs-attribute\">content<\/span>: String) : Unit = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-attribute\">content<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>2) \u5b9a\u4e49\u8fc7\u7a0b\u793a\u4f8b2\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def shout1(<span class=\"hljs-attribute\">content<\/span>: String) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-attribute\">content<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>3) \u5b9a\u4e49\u8fc7\u7a0b\u793a\u4f8b3\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-title function_\">shout1<\/span>(<span class=\"hljs-params\">content: <span class=\"hljs-built_in\">String<\/span><\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(content)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u8fd9\u53ea\u662f\u4e00\u4e2a\u903b\u8f91\u4e0a\u7684\u7ec6\u5206\uff0c\u5982\u679c\u56e0\u4e3a\u8be5\u6982\u5ff5\u5bfc\u81f4\u4e86\u7406\u89e3\u4e0a\u7684\u6df7\u6dc6\uff0c\u53ef\u4ee5\u6682\u65f6\u76f4\u63a5\u8df3\u8fc7\u8fc7\u7a0b\u8fd9\u6837\u7684\u63cf\u8ff0\u3002\u6bd5\u7adf\u8fc7\u7a0b\uff0c\u5728\u67d0\u79cd\u610f\u4e49\u4e0a\u4e5f\u662f\u51fd\u6570\u3002<\/em><\/p>\n<h2 id=\"36-\u61d2\u503c\"><a name=\"t20\"><\/a><a name=\"t20\"><\/a>3.6 \u61d2\u503c<\/h2>\n<p>\u5f53val\u88ab\u58f0\u660e\u4e3alazy\u65f6\uff0c\u4ed6\u7684\u521d\u59cb\u5316\u5c06\u88ab\u63a8\u8fdf\uff0c\u76f4\u5230\u6211\u4eec\u9996\u6b21\u5bf9\u6b64\u53d6\u503c\uff0c\u9002\u7528\u4e8e\u521d\u59cb\u5316\u5f00\u9500\u8f83\u5927\u7684\u573a\u666f\u3002<br \/>\n1) lazy\u793a\u4f8b\uff1a\u901a\u8fc7lazy\u5173\u952e\u5b57\u7684\u4f7f\u7528\u4e0e\u5426\uff0c\u6765\u89c2\u5bdf\u6267\u884c\u8fc7\u7a0b<\/p>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">object<\/span> Lazy {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">init<\/span>(): String<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;init\u65b9\u6cd5\u6267\u884c&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;\u563f\u563f\u563f\uff0c\u6211\u6765\u4e86~&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">main<\/span>(<span class=\"hljs-params\">args: Array[String]<\/span>): Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">lazy val msg = <span class=\"hljs-keyword\">init<\/span>()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;lazy\u65b9\u6cd5\u6ca1\u6709\u6267\u884c&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<h2 id=\"37-\u5f02\u5e38\"><a name=\"t21\"><\/a><a name=\"t21\"><\/a>3.7 \u5f02\u5e38<\/h2>\n<p>\u5f53\u78b0\u5230\u5f02\u5e38\u60c5\u51b5\u65f6\uff0c\u65b9\u6cd5\u629b\u51fa\u4e00\u4e2a\u5f02\u5e38\uff0c\u7ec8\u6b62\u65b9\u6cd5\u672c\u8eab\u7684\u6267\u884c\uff0c\u5f02\u5e38\u4f20\u9012\u5230\u5176\u8c03\u7528\u8005\uff0c\u8c03\u7528\u8005\u53ef\u4ee5\u5904\u7406\u8be5\u5f02\u5e38\uff0c\u4e5f\u53ef\u4ee5\u5347\u7ea7\u5230\u5b83\u7684\u8c03\u7528\u8005\u3002\u8fd0\u884c\u7cfb\u7edf\u4f1a\u4e00\u76f4\u8fd9\u6837\u5347\u7ea7\u5f02\u5e38\uff0c\u76f4\u5230\u6709\u8c03\u7528\u8005\u80fd\u5904\u7406\u5b83\u3002 \u5982\u679c\u4e00\u76f4\u6ca1\u6709\u5904\u7406\uff0c\u5219\u7ec8\u6b62\u6574\u4e2a\u7a0b\u5e8f\u3002<\/p>\n<p>Scala\u7684\u5f02\u5e38\u7684\u5de5\u4f5c\u673a\u5236\u548cJava\u4e00\u6837\uff0c\u4f46\u662fScala\u6ca1\u6709\u201cchecked\u201d\u5f02\u5e38\uff0c\u4f60\u4e0d\u9700\u8981\u58f0\u660e\u8bf4\u51fd\u6570\u6216\u8005\u65b9\u6cd5\u53ef\u80fd\u4f1a\u629b\u51fa\u67d0\u79cd\u5f02\u5e38\u3002\u53d7\u68c0\u5f02\u5e38\u5728\u7f16\u8bd1\u5668\u88ab\u68c0\u67e5\uff0cjava\u5fc5\u987b\u58f0\u660e\u65b9\u6cd5\u6240\u4f1a\u629b\u51fa\u7684\u5f02\u5e38\u7c7b\u578b\u3002<br \/>\n<strong>\u629b\u51fa\u5f02\u5e38\uff1a<\/strong>\u7528throw\u5173\u952e\u5b57\uff0c\u629b\u51fa\u4e00\u4e2a\u5f02\u5e38\u5bf9\u8c61\u3002\u6240\u6709\u5f02\u5e38\u90fd\u662fThrowable\u7684\u5b50\u7c7b\u578b\u3002throw\u8868\u8fbe\u5f0f\u662f\u6709\u7c7b\u578b\u7684\uff0c\u5c31\u662fNothing\uff0c\u56e0\u4e3aNothing\u662f\u6240\u6709\u7c7b\u578b\u7684\u5b50\u7c7b\u578b\uff0c\u6240\u4ee5throw\u8868\u8fbe\u5f0f\u53ef\u4ee5\u7528\u5728\u9700\u8981\u7c7b\u578b\u7684\u5730\u65b9\u3002<br \/>\n<strong>\u6355\u6349\u5f02\u5e38\uff1a<\/strong>\u5728Scala\u91cc\uff0c\u501f\u7528\u4e86\u6a21\u5f0f\u5339\u914d\u7684\u601d\u60f3\u6765\u505a\u5f02\u5e38\u7684\u5339\u914d\uff0c\u56e0\u6b64\uff0c\u5728catch\u7684\u4ee3\u7801\u91cc\uff0c\u662f\u4e00\u7cfb\u5217case\u5b57\u53e5\u3002<\/p>\n<p>\u5f02\u5e38\u6355\u6349\u7684\u673a\u5236\u4e0e\u5176\u4ed6\u8bed\u8a00\u4e2d\u4e00\u6837\uff0c\u5982\u679c\u6709\u5f02\u5e38\u53d1\u751f\uff0ccatch\u5b57\u53e5\u662f\u6309\u6b21\u5e8f\u6355\u6349\u7684\u3002\u56e0\u6b64\uff0c\u5728catch\u5b57\u53e5\u4e2d\uff0c\u8d8a\u5177\u4f53\u7684\u5f02\u5e38\u8d8a\u8981\u9760\u524d\uff0c\u8d8a\u666e\u904d\u7684\u5f02\u5e38\u8d8a\u9760\u540e\u3002 \u5982\u679c\u629b\u51fa\u7684\u5f02\u5e38\u4e0d\u5728catch\u5b57\u53e5\u4e2d\uff0c\u8be5\u5f02\u5e38\u5219\u65e0\u6cd5\u5904\u7406\uff0c\u4f1a\u88ab\u5347\u7ea7\u5230\u8c03\u7528\u8005\u5904\u3002<\/p>\n<p>finally\u5b57\u53e5\u7528\u4e8e\u6267\u884c\u4e0d\u7ba1\u662f\u6b63\u5e38\u5904\u7406\u8fd8\u662f\u6709\u5f02\u5e38\u53d1\u751f\u65f6\u90fd\u9700\u8981\u6267\u884c\u7684\u6b65\u9aa4\uff0c\u4e00\u822c\u7528\u4e8e\u5bf9\u8c61\u7684\u6e05\u7406\u5de5\u4f5c\u3002<br \/>\n1) \u5f02\u5e38\u793a\u4f8b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">object<\/span> ExceptionSyllabus {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def divider(x: <span class=\"hljs-keyword\">Int<\/span>, y: <span class=\"hljs-keyword\">Int<\/span>): <span class=\"hljs-keyword\">Float<\/span>= {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(y == <span class=\"hljs-number\">0<\/span>) <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-built_in\">Exception<\/span>(<span class=\"hljs-string\">&#8220;0\u4f5c\u4e3a\u4e86\u9664\u6570&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> x \/ y<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def main(args: <span class=\"hljs-keyword\">Array<\/span>[<span class=\"hljs-keyword\">String<\/span>]): Unit = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">try<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(divider(<span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">3<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">} <span class=\"hljs-keyword\">catch<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> ex: <span class=\"hljs-built_in\">Exception<\/span> =&gt; println(<span class=\"hljs-string\">&#8220;\u6355\u83b7\u4e86\u5f02\u5e38\uff1a&#8221;<\/span> + ex)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">} <span class=\"hljs-keyword\">finally<\/span> {}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<h1 id=\"\u56db-\u6570\u636e\u7ed3\u6784\"><a name=\"t22\"><\/a><a name=\"t22\"><\/a>\u56db\u3001 \u6570\u636e\u7ed3\u6784<\/h1>\n<h2 id=\"41-\u6570\u636e\u7ed3\u6784\u7279\u70b9\"><a name=\"t23\"><\/a><a name=\"t23\"><\/a>4.1 \u6570\u636e\u7ed3\u6784\u7279\u70b9<\/h2>\n<p>Scala\u540c\u65f6\u652f\u6301\u53ef\u53d8\u96c6\u5408\u548c\u4e0d\u53ef\u53d8\u96c6\u5408\uff0c\u4e0d\u53ef\u53d8\u96c6\u5408\u4ece\u4e0d\u53ef\u53d8\uff0c\u53ef\u4ee5\u5b89\u5168\u7684\u5e76\u53d1\u8bbf\u95ee\u3002<br \/>\n\u4e24\u4e2a\u4e3b\u8981\u7684\u5305\uff1a<br \/>\n<strong>\u4e0d\u53ef\u53d8\u96c6\u5408\uff1ascala.collection.immutable<\/strong><br \/>\n<strong>\u53ef\u53d8\u96c6\u5408\uff1a scala.collection.mutable<\/strong><br \/>\nScala\u4f18\u5148\u91c7\u7528\u4e0d\u53ef\u53d8\u96c6\u5408\uff0c\u5bf9\u4e8e\u51e0\u4e4e\u6240\u6709\u7684\u96c6\u5408\u7c7b\uff0cScala\u90fd\u540c\u65f6\u63d0\u4f9b\u4e86\u53ef\u53d8\u548c\u4e0d\u53ef\u53d8\u7684\u7248\u672c\u3002<br \/>\n\u4e0d\u53ef\u53d8\u96c6\u5408\u7ee7\u627f\u5c42\u6b21\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127184449638\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u53ef\u53d8\u96c6\u5408\u7ee7\u627f\u5c42\u6b21\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127184516403\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<h2 id=\"42-\u6570\u7ec4-array\"><a name=\"t24\"><\/a><a name=\"t24\"><\/a>4.2 \u6570\u7ec4 Array<\/h2>\n<p>1) \u5b9a\u957f\u6570\u7ec4<\/p>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5b9a\u4e49<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val arr1 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">Array<\/span>[<span class=\"hljs-keyword\">Int<\/span>](<span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u8d4b\u503c<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">arr1(<span class=\"hljs-number\">1<\/span>) = <span class=\"hljs-number\">7<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u6216\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5b9a\u4e49<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val arr1 = <span class=\"hljs-keyword\">Array<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<p>2) \u53d8\u957f\u6570\u7ec4<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5b9a\u4e49<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> arr2 = ArrayBuffer[<span class=\"hljs-built_in\">Int<\/span>]()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u8ffd\u52a0\u503c<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">arr2.append(<span class=\"hljs-number\">7<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u91cd\u65b0\u8d4b\u503c<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">arr2(<span class=\"hljs-number\">0<\/span>) = <span class=\"hljs-number\">7<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>3) \u5b9a\u957f\u6570\u7ec4\u4e0e\u53d8\u957f\u6570\u7ec4\u7684\u8f6c\u6362<\/p>\n<pre class=\"has\"><code class=\"hljs language-undefined\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">arr1.toBuffer<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">arr2.toArray<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-undefined\"><\/code><\/pre>\n<p>4) \u591a\u7ef4\u6570\u7ec4<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5b9a\u4e49<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> arr3 = Array.ofDim[<span class=\"hljs-built_in\">Double<\/span>](<span class=\"hljs-number\">3<\/span>,<span class=\"hljs-number\">4<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u8d4b\u503c<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">arr3(<span class=\"hljs-number\">1<\/span>)(<span class=\"hljs-number\">1<\/span>) = <span class=\"hljs-number\">11.11<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>5) \u4e0eJava\u6570\u7ec4\u7684\u4e92\u8f6c<br \/>\nScal\u6570\u7ec4\u8f6cJava\u6570\u7ec4\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> arr4 = <span class=\"hljs-type\">ArrayBuffer<\/span>(<span class=\"hljs-string\">&#8220;1&#8221;<\/span>, <span class=\"hljs-string\">&#8220;2&#8221;<\/span>, <span class=\"hljs-string\">&#8220;3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Scala to Java<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.<span class=\"hljs-type\">JavaConversions<\/span>.bufferAsJavaList<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> javaArr = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ProcessBuilder<\/span>(arr4)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(javaArr.command())<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>Java\u6570\u7ec4\u8f6cScala\u6570\u7ec4\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.JavaConversions.asScalaBuffer<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.mutable.Buffer<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">val<\/span> scalaArr: <span class=\"hljs-type\">Buffer<\/span>[<span class=\"hljs-type\">String<\/span>] = javaArr.command()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span>(scalaArr)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p>6) \u6570\u7ec4\u7684\u904d\u5386<\/p>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-title\">for<\/span><span class=\"hljs-params\">(x &lt;- arr1)<\/span> {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(x)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<h2 id=\"43-\u5143\u7ec4-tuple\"><a name=\"t25\"><\/a><a name=\"t25\"><\/a>4.3 \u5143\u7ec4 Tuple<\/h2>\n<p>\u5143\u7ec4\u4e5f\u662f\u53ef\u4ee5\u7406\u89e3\u4e3a\u4e00\u4e2a\u5bb9\u5668\uff0c\u53ef\u4ee5\u5b58\u653e\u5404\u79cd\u76f8\u540c\u6216\u4e0d\u540c\u7c7b\u578b\u7684\u6570\u636e\u3002<br \/>\n1) \u5143\u7ec4\u7684\u521b\u5efa<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> tuple1 = (<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-string\">&#8220;heiheihei&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(tuple1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>2) \u5143\u7ec4\u6570\u636e\u7684\u8bbf\u95ee\uff0c\u6ce8\u610f\u5143\u7ec4\u5143\u7d20\u7684\u8bbf\u95ee\u6709\u4e0b\u5212\u7ebf\uff0c\u5e76\u4e14\u8bbf\u95ee\u4e0b\u6807\u4ece1\u5f00\u59cb\uff0c\u800c\u4e0d\u662f0<\/p>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">value1<\/span> <span class=\"hljs-operator\">=<\/span> tuple1._4<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span><span class=\"hljs-params\">(value1)<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<p>3) \u5143\u7ec4\u7684\u904d\u5386<br \/>\n\u65b9\u5f0f1\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-title\">for<\/span> <span class=\"hljs-params\">(elem &lt;- tuple1.productIterator)<\/span> {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">print<\/span><span class=\"hljs-params\">(elem)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">()<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<p>\u65b9\u5f0f2\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">tuple1.productIterator.<span class=\"hljs-keyword\">foreach<\/span>(i =&gt; println(i))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">tuple1.productIterator.<span class=\"hljs-keyword\">foreach<\/span>(<span class=\"hljs-keyword\">print<\/span>(_))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<h2 id=\"44-\u5217\u8868-list\"><a name=\"t26\"><\/a><a name=\"t26\"><\/a>4.4 \u5217\u8868 List<\/h2>\n<p>\u5982\u679cList\u5217\u8868\u4e3a\u7a7a\uff0c\u5219\u4f7f\u7528Nil\u6765\u8868\u793a\u3002<br \/>\n1) \u521b\u5efaList<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list1 = List(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(list1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>2) \u8bbf\u95eeList\u5143\u7d20<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> value1 = list1(<span class=\"hljs-number\">1<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(value1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>3) List\u5143\u7d20\u7684\u8ffd\u52a0<\/p>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">list2<\/span> <span class=\"hljs-operator\">=<\/span> list1 :+ <span class=\"hljs-number\">99<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(list2)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">list3<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-number\">100<\/span> +: list1<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span><span class=\"hljs-params\">(list3)<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<p>4) List\u7684\u521b\u5efa\u4e0e\u8ffd\u52a0\uff0c\u7b26\u53f7\u201c::\u201d\uff0c\u6ce8\u610f\u89c2\u5bdf\u53bb\u6389Nil\u548c\u4e0d\u53bb\u6389Nil\u7684\u533a\u522b<\/p>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">list4<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-number\">1<\/span> :: <span class=\"hljs-number\">2<\/span> :: <span class=\"hljs-number\">3<\/span> :: list1 :: Nil<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span><span class=\"hljs-params\">(list4)<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<h2 id=\"45-\u961f\u5217-queue\"><a name=\"t27\"><\/a><a name=\"t27\"><\/a>4.5 \u961f\u5217 Queue<\/h2>\n<p>\u961f\u5217\u6570\u636e\u5b58\u53d6\u7b26\u5408\u5148\u8fdb\u5148\u51fa\u7b56\u7565<br \/>\n1) \u961f\u5217\u7684\u521b\u5efa<\/p>\n<pre class=\"has\"><code class=\"hljs language-cpp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.<span class=\"hljs-keyword\">mutable<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val q1 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">mutable<\/span>.Queue[Int]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(q1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-cpp\"><\/code><\/pre>\n<p>2) \u961f\u5217\u5143\u7d20\u7684\u8ffd\u52a0<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">q1 += <span class=\"hljs-number\">1<\/span>;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(q1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>3) \u5411\u961f\u5217\u4e2d\u8ffd\u52a0List<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">q1 ++= List(<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(q1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>4) \u6309\u7167\u8fdb\u5165\u961f\u5217\u7684\u987a\u5e8f\u5220\u9664\u5143\u7d20<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">q1.dequeue()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(q1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>5) \u585e\u5165\u6570\u636e<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">q1.enqueue(<span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">8<\/span>, <span class=\"hljs-number\">7<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(q1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>6) \u8fd4\u56de\u961f\u5217\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><span class=\"hljs-built_in\">println<\/span>(q1.head)<\/code><\/pre>\n<p>7) \u8fd4\u56de\u961f\u5217\u6700\u540e\u4e00\u4e2a\u5143\u7d20<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><span class=\"hljs-built_in\">println<\/span>(q1.last)<\/code><\/pre>\n<p>8) \u8fd4\u56de\u9664\u4e86\u7b2c\u4e00\u4e2a\u4ee5\u5916\u7684\u5143\u7d20<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><span class=\"hljs-built_in\">println<\/span>(q1.tail)<\/code><\/pre>\n<h2 id=\"46-\u6620\u5c04-map\"><a name=\"t28\"><\/a><a name=\"t28\"><\/a>4.6 \u6620\u5c04 Map<\/h2>\n<p>\u8fd9\u4e2a\u5730\u65b9\u7684\u5b66\u4e60\uff0c\u5c31\u7c7b\u6bd4Java\u7684map\u96c6\u5408\u5b66\u4e60\u5373\u53ef\u3002<br \/>\n1) \u6784\u9020\u4e0d\u53ef\u53d8\u6620\u5c04<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><span class=\"hljs-title\">val<\/span> map1 = <span class=\"hljs-type\">Map<\/span>(<span class=\"hljs-string\">\"Alice\"<\/span> -&gt; <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-string\">\"Bob\"<\/span> -&gt; <span class=\"hljs-number\">20<\/span>, <span class=\"hljs-string\">\"Kotlin\"<\/span> -&gt; <span class=\"hljs-number\">30<\/span>)<\/code><\/pre>\n<p>2) \u6784\u9020\u53ef\u53d8\u6620\u5c04<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><span class=\"hljs-title\">val<\/span> map2 = scala.collection.mutable.<span class=\"hljs-type\">Map<\/span>(<span class=\"hljs-string\">\"Alice\"<\/span> -&gt; <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-string\">\"Bob\"<\/span> -&gt; <span class=\"hljs-number\">20<\/span>, <span class=\"hljs-string\">\"Kotlin\"<\/span> -&gt; <span class=\"hljs-number\">30<\/span>)<\/code><\/pre>\n<p>3) \u7a7a\u7684\u6620\u5c04<\/p>\n<pre class=\"has\"><code class=\"hljs language-php\">val map3 = <span class=\"hljs-keyword\">new<\/span> scala.collection.mutable.HashMap[<span class=\"hljs-keyword\">String<\/span>, <span class=\"hljs-keyword\">Int<\/span>]<\/code><\/pre>\n<p>4) \u5bf9\u5076\u5143\u7ec4<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\">val map4 = <span class=\"hljs-title class_\">Map<\/span>((<span class=\"hljs-string\">\"Alice\"<\/span>, <span class=\"hljs-number\">10<\/span>), (<span class=\"hljs-string\">\"Bob\"<\/span>, <span class=\"hljs-number\">20<\/span>), (<span class=\"hljs-string\">\"Kotlin\"<\/span>, <span class=\"hljs-number\">30<\/span>))<\/code><\/pre>\n<p>5) \u53d6\u503c<br \/>\n\u5982\u679c\u6620\u5c04\u4e2d\u6ca1\u6709\u503c\uff0c\u5219\u4f1a\u629b\u51fa\u5f02\u5e38\uff0c\u4f7f\u7528contains\u65b9\u6cd5\u68c0\u67e5\u662f\u5426\u5b58\u5728key\u3002\u5982\u679c\u901a\u8fc7 \u6620\u5c04.get(\u952e) \u8fd9\u6837\u7684\u8c03\u7528\u8fd4\u56de\u4e00\u4e2aOption\u5bf9\u8c61\uff0c\u8981\u4e48\u662fSome\uff0c\u8981\u4e48\u662fNone\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> value1 = map1(<span class=\"hljs-string\">&#8220;Alice&#8221;<\/span>)<span class=\"hljs-comment\">\/\/\u5efa\u8bae\u4f7f\u7528get\u65b9\u6cd5\u5f97\u5230map\u4e2d\u7684\u5143\u7d20<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(value1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>6) \u66f4\u65b0\u503c<\/p>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-title\">map2<\/span><span class=\"hljs-params\">(<span class=\"hljs-string\">&#8220;Alice&#8221;<\/span>)<\/span> = 99<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(map2(<span class=\"hljs-string\">&#8220;Alice&#8221;<\/span>))<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u6216\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">map2<\/span> += <span class=\"hljs-params\">(<span class=\"hljs-string\">&#8220;Bob&#8221;<\/span> -&gt; <span class=\"hljs-number\">99<\/span>)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">map2<\/span> -= <span class=\"hljs-params\">(<span class=\"hljs-string\">&#8220;Alice&#8221;<\/span>, <span class=\"hljs-string\">&#8220;Kotlin&#8221;<\/span>)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(map2)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u6216\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">val<\/span> <span class=\"hljs-title\">map5<\/span> = <span class=\"hljs-title\">map2<\/span> + <span class=\"hljs-params\">(<span class=\"hljs-string\">&#8220;AAA&#8221;<\/span> -&gt; <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-string\">&#8220;BBB&#8221;<\/span> -&gt; <span class=\"hljs-number\">20<\/span>)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(map5)<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<p>7) \u904d\u5386<\/p>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-title\">for<\/span> <span class=\"hljs-params\">((k, v)<\/span> &lt;- <span class=\"hljs-title\">map1<\/span>) <span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(k + <span class=\"hljs-string\">&#8221; is mapped to &#8220;<\/span> + v)<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">for<\/span> <span class=\"hljs-params\">(v &lt;- map1.keys)<\/span> <span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(v)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">for<\/span> <span class=\"hljs-params\">(v &lt;- map1.values)<\/span> <span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(v)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">for<\/span><span class=\"hljs-params\">(v &lt;- map1)<\/span> <span class=\"hljs-title\">prinln<\/span><span class=\"hljs-params\">(v)<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<h2 id=\"47-\u96c6-set\"><a name=\"t29\"><\/a><a name=\"t29\"><\/a>4.7 \u96c6 Set<\/h2>\n<p>\u96c6\u662f\u4e0d\u91cd\u590d\u5143\u7d20\u7684\u7ed3\u5408\u3002\u96c6\u4e0d\u4fdd\u7559\u987a\u5e8f\uff0c\u9ed8\u8ba4\u662f\u4ee5\u54c8\u5e0c\u96c6\u5b9e\u73b0\u3002<\/p>\n<p>\u5982\u679c\u60f3\u8981\u6309\u7167\u5df2\u6392\u5e8f\u7684\u987a\u5e8f\u6765\u8bbf\u95ee\u96c6\u4e2d\u7684\u5143\u7d20\uff0c\u53ef\u4ee5\u4f7f\u7528SortedSet\uff08\u5df2\u6392\u5e8f\u6570\u636e\u96c6\uff09\uff0c\u5df2\u6392\u5e8f\u7684\u6570\u636e\u96c6\u662f\u7528\u7ea2\u9ed1\u6811\u5b9e\u73b0\u7684\u3002<\/p>\n<p>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cScala \u4f7f\u7528\u7684\u662f\u4e0d\u53ef\u53d8\u96c6\u5408\uff0c\u5982\u679c\u4f60\u60f3\u4f7f\u7528\u53ef\u53d8\u96c6\u5408\uff0c\u9700\u8981\u5f15\u7528 scala.collection.mutable.Set \u5305\u3002<br \/>\n1) Set\u4e0d\u53ef\u53d8\u96c6\u5408\u7684\u521b\u5efa<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val <span class=\"hljs-built_in\">set<\/span> = <span class=\"hljs-type\">Set<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-built_in\">set<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>2) Set\u53ef\u53d8\u96c6\u5408\u7684\u521b\u5efa\uff0c\u5982\u679cimport\u4e86\u53ef\u53d8\u96c6\u5408\uff0c\u90a3\u4e48\u540e\u7eed\u4f7f\u7528\u9ed8\u8ba4\u4e5f\u662f\u53ef\u53d8\u96c6\u5408<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.mutable.<span class=\"hljs-type\">Set<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val mutableSet = <span class=\"hljs-type\">Set<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>3) \u53ef\u53d8\u96c6\u5408\u7684\u5143\u7d20\u6dfb\u52a0<\/p>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">mutableSet.<span class=\"hljs-keyword\">add<\/span>(<span class=\"hljs-number\">4<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">mutableSet += <span class=\"hljs-number\">6<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u6ce8\u610f\u8be5\u65b9\u6cd5\u8fd4\u56de\u4e00\u4e2a\u65b0\u7684Set\u96c6\u5408\uff0c\u800c\u975e\u5728\u539f\u6709\u7684\u57fa\u7840\u4e0a\u8fdb\u884c\u6dfb\u52a0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">mutableSet.+(<span class=\"hljs-number\">5<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<p>4) \u53ef\u53d8\u96c6\u5408\u7684\u5143\u7d20\u5220\u9664<\/p>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">mutableSet -= <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">mutableSet.<span class=\"hljs-keyword\">remove<\/span>(<span class=\"hljs-number\">2<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(mutableSet)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<p>5) \u904d\u5386<\/p>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-title\">for<\/span><span class=\"hljs-params\">(x &lt;- mutableSet)<\/span> {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">println<\/span><span class=\"hljs-params\">(x)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-erlang\"><\/code><\/pre>\n<p>6) Set\u66f4\u591a\u5e38\u7528\u64cd\u4f5c<\/p>\n<div class=\"table-box\">\n<table>\n<thead>\n<tr>\n<th>\u5e8f\u53f7<\/th>\n<th>\u65b9\u6cd5<\/th>\n<th>\u63cf\u8ff0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>def +(elem: A): Set[A]<\/td>\n<td>\u4e3a\u96c6\u5408\u6dfb\u52a0\u65b0\u5143\u7d20\uff0c\u5e76\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u96c6\u5408\uff0c\u9664\u975e\u5143\u7d20\u5df2\u5b58\u5728<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>def -(elem: A): Set[A]<\/td>\n<td>\u79fb\u9664\u96c6\u5408\u4e2d\u7684\u5143\u7d20\uff0c\u5e76\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u96c6\u5408<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>def contains(elem: A): Boolean<\/td>\n<td>\u5982\u679c\u5143\u7d20\u5728\u96c6\u5408\u4e2d\u5b58\u5728\uff0c\u8fd4\u56de true\uff0c\u5426\u5219\u8fd4\u56de false\u3002<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>def &amp;(that: Set[A]): Set[A]<\/td>\n<td>\u8fd4\u56de\u4e24\u4e2a\u96c6\u5408\u7684\u4ea4\u96c6<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>def &amp;~(that: Set[A]): Set[A]<\/td>\n<td>\u8fd4\u56de\u4e24\u4e2a\u96c6\u5408\u7684\u5dee\u96c6<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>def ++(elems: A): Set[A]<\/td>\n<td>\u5408\u5e76\u4e24\u4e2a\u96c6\u5408<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>def drop(n: Int): Set[A]]<\/td>\n<td>\u8fd4\u56de\u4e22\u5f03\u524dn\u4e2a\u5143\u7d20\u65b0\u96c6\u5408<\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td>def dropRight(n: Int): Set[A]<\/td>\n<td>\u8fd4\u56de\u4e22\u5f03\u6700\u540en\u4e2a\u5143\u7d20\u65b0\u96c6\u5408<\/td>\n<\/tr>\n<tr>\n<td>9<\/td>\n<td>def dropWhile(p: (A) =&gt; Boolean): Set[A]<\/td>\n<td>\u4ece\u5de6\u5411\u53f3\u4e22\u5f03\u5143\u7d20\uff0c\u76f4\u5230\u6761\u4ef6p\u4e0d\u6210\u7acb<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>def max: A<\/td>\n<td>\u67e5\u627e\u6700\u5927\u5143\u7d20<\/td>\n<\/tr>\n<tr>\n<td>11<\/td>\n<td>def min: A<\/td>\n<td>\u67e5\u627e\u6700\u5c0f\u5143\u7d20<\/td>\n<\/tr>\n<tr>\n<td>12<\/td>\n<td>def take(n: Int): Set[A]<\/td>\n<td>\u8fd4\u56de\u524d n \u4e2a\u5143\u7d20<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 id=\"48-\u96c6\u5408\u5143\u7d20\u4e0e\u51fd\u6570\u7684\u6620\u5c04\"><a name=\"t30\"><\/a><a name=\"t30\"><\/a>4.8 \u96c6\u5408\u5143\u7d20\u4e0e\u51fd\u6570\u7684\u6620\u5c04<\/h2>\n<p>1) map\uff1a\u5c06\u96c6\u5408\u4e2d\u7684\u6bcf\u4e00\u4e2a\u5143\u7d20\u6620\u5c04\u5230\u67d0\u4e00\u4e2a\u51fd\u6570<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val names = List(<span class=\"hljs-string\">&#8220;Alice&#8221;<\/span>, <span class=\"hljs-string\">&#8220;Bob&#8221;<\/span>, <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(names.<span class=\"hljs-keyword\">map<\/span>(_.toUpperCase))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>2) flatmap\uff1aflat\u5373\u538b\u6241\uff0c\u538b\u5e73\uff0c\u6241\u5e73\u5316\uff0c\u6548\u679c\u5c31\u662f\u5c06\u96c6\u5408\u4e2d\u7684\u6bcf\u4e2a\u5143\u7d20\u7684\u5b50\u5143\u7d20\u6620\u5c04\u5230\u67d0\u4e2a\u51fd\u6570\u5e76\u8fd4\u56de\u65b0\u7684\u96c6\u5408<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> names = List(<span class=\"hljs-string\">&#8220;Alice&#8221;<\/span>, <span class=\"hljs-string\">&#8220;Bob&#8221;<\/span>, <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(names.flatMap(_.toUpperCase()))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"49-\u5316\u7b80\u6298\u53e0\u626b\u63cf\"><a name=\"t31\"><\/a><a name=\"t31\"><\/a>4.9 \u5316\u7b80\u3001\u6298\u53e0\u3001\u626b\u63cf<\/h2>\n<p>1) \u6298\u53e0\uff0c\u5316\u7b80\uff1a\u5c06\u4e8c\u5143\u51fd\u6570\u5f15\u7528\u4e8e\u96c6\u5408\u4e2d\u7684\u51fd\u6570<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list = List(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> i1 = list.reduceLeft(_ &#8211; _)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> i2 = list.reduceRight(_ &#8211; _)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(i1)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(i2)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>.reduceLefft(_ &#8211; _)\u8fd9\u4e2a\u51fd\u6570\u7684\u6267\u884c\u903b\u8f91\u5982\u56fe\u6240\u793a\uff1a<br \/>\n<img decoding=\"async\" class=\"has\" src=\"https:\/\/img-blog.csdn.net\/20171127193411598\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n.reduceRight(_ &#8211; _)\u53cd\u4e4b\u540c\u7406<br \/>\n2) \u6298\u53e0\uff0c\u5316\u7b80\uff1afold<br \/>\nfold\u51fd\u6570\u5c06\u4e0a\u4e00\u6b65\u8fd4\u56de\u7684\u503c\u4f5c\u4e3a\u51fd\u6570\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u7ee7\u7eed\u4f20\u9012\u53c2\u4e0e\u8fd0\u7b97\uff0c\u76f4\u5230list\u4e2d\u7684\u6240\u6709\u5143\u7d20\u88ab\u904d\u5386\u3002\u53ef\u4ee5\u628areduceLeft\u770b\u505a\u7b80\u5316\u7248\u7684foldLeft\u3002\u76f8\u5173\u51fd\u6570\uff1afold\uff0cfoldLeft\uff0cfoldRight\uff0c\u53ef\u4ee5\u53c2\u8003reduce\u7684\u76f8\u5173\u65b9\u6cd5\u7406\u89e3\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val list2 = List(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">8<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val i4 = list2.fold(<span class=\"hljs-number\">5<\/span>)(<span class=\"hljs-function\"><span class=\"hljs-params\">(sum, y)<\/span> =&gt;<\/span> sum + y)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(i4)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<p>foldRight<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list3 = List(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">8<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> i5 = list3.foldRight(<span class=\"hljs-number\">100<\/span>)(_ &#8211; _)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(i5)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1afoldLeft\u548cfoldRight\u6709\u4e00\u79cd\u7f29\u5199\u65b9\u6cd5\u5bf9\u5e94\u5206\u522b\u662f\/:\u548c:\\\u00a0<\/em><br \/>\n\u4f8b\u5982\uff1a<br \/>\nfoldLeft<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list4 = List(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">8<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> i6 = (<span class=\"hljs-number\">0<\/span> \/: list4)(_ &#8211; _)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(i6)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>3) \u7edf\u8ba1\u4e00\u53e5\u8bdd\u4e2d\uff0c\u5404\u4e2a\u6587\u5b57\u51fa\u73b0\u7684\u6b21\u6570<\/p>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val sentence = <span class=\"hljs-string\">&#8220;\u4e00\u9996\u73b0\u4ee3\u8bd7\u300a\u7b11\u91cc\u85cf\u5200\u300b:\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u5200\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8\u54c8&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-regexp\">\/\/m<\/span> + (\u201c\u4e00\u201d -&gt; <span class=\"hljs-number\">1<\/span>, \u201c\u9996\u201d -&gt; <span class=\"hljs-number\">1<\/span>, \u201c\u54c8\u201d -&gt; <span class=\"hljs-number\">1<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val i7 = <span class=\"hljs-function\"><span class=\"hljs-params\">(<span class=\"hljs-built_in\">Map<\/span>[Char, Int]() \/: sentence)((m, c) =&gt; m + (c -&gt; (m.getOrElse(c, <span class=\"hljs-number\">0<\/span>) + <span class=\"hljs-number\">1<\/span>)))<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println<span class=\"hljs-params\">(i7)<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<p>4) \u6298\u53e0\uff0c\u5316\u7b80\uff0c\u626b\u63cf<br \/>\n\u8fd9\u4e2a\u7406\u89e3\u9700\u8981\u7ed3\u5408\u4e0a\u9762\u7684\u77e5\u8bc6\u70b9\uff0c\u626b\u63cf\uff0c\u5373\u5bf9\u67d0\u4e2a\u96c6\u5408\u7684\u6240\u6709\u5143\u7d20\u505afold\u64cd\u4f5c\uff0c\u4f46\u662f\u4f1a\u628a\u4ea7\u751f\u7684\u6240\u6709\u4e2d\u95f4\u7ed3\u679c\u653e\u7f6e\u4e8e\u4e00\u4e2a\u96c6\u5408\u4e2d\u4fdd\u5b58\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-rust\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val <span class=\"hljs-type\">i8<\/span> = (<span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">10<\/span>).<span class=\"hljs-title function_ invoke__\">scanLeft<\/span>(<span class=\"hljs-number\">0<\/span>)(_ + _)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_ invoke__\">println<\/span>(<span class=\"hljs-type\">i8<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-rust\"><\/code><\/pre>\n<h2 id=\"410-\u62c9\u94fe\"><a name=\"t32\"><\/a><a name=\"t32\"><\/a>4.10 \u62c9\u94fe<\/h2>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list1 = List(<span class=\"hljs-string\">&#8220;15837312345&#8221;<\/span>, <span class=\"hljs-string\">&#8220;13737312345&#8221;<\/span>, <span class=\"hljs-string\">&#8220;13811332299&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list2 = List(<span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">87<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(i1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"411-\u8fed\u4ee3\u5668\"><a name=\"t33\"><\/a><a name=\"t33\"><\/a>4.11 \u8fed\u4ee3\u5668<\/h2>\n<p>\u4f60\u53ef\u4ee5\u901a\u8fc7iterator\u65b9\u6cd5\u4ece\u96c6\u5408\u83b7\u5f97\u4e00\u4e2a\u8fed\u4ee3\u5668\uff0c\u901a\u8fc7while\u5faa\u73af\u548cfor\u8868\u8fbe\u5f0f\u5bf9\u96c6\u5408\u8fdb\u884c\u904d\u5386\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val <span class=\"hljs-built_in\">iterator<\/span> = <span class=\"hljs-keyword\">List<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>).<span class=\"hljs-built_in\">iterator<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">while<\/span> (<span class=\"hljs-built_in\">iterator<\/span>.hasNext) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-built_in\">iterator<\/span>.next())<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u6216\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span>(<span class=\"hljs-class\"><span class=\"hljs-keyword\">enum<\/span> &lt;- <span class=\"hljs-title\">iterator<\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-class\"><span class=\"hljs-keyword\">enum<\/span>)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\">}<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<h2 id=\"412-\u6d41-stream\"><a name=\"t34\"><\/a><a name=\"t34\"><\/a>4.12 \u6d41 Stream<\/h2>\n<p>stream\u662f\u4e00\u4e2a\u96c6\u5408\u3002\u8fd9\u4e2a\u96c6\u5408\uff0c\u53ef\u4ee5\u7528\u4e8e\u5b58\u653e\uff0c\u65e0\u7a77\u591a\u4e2a\u5143\u7d20\uff0c\u4f46\u662f\u8fd9\u65e0\u7a77\u4e2a\u5143\u7d20\u5e76\u4e0d\u4f1a\u4e00\u6b21\u6027\u751f\u4ea7\u51fa\u6765\uff0c\u800c\u662f\u9700\u8981\u7528\u5230\u591a\u5927\u7684\u533a\u95f4\uff0c\u5c31\u4f1a\u52a8\u6001\u7684\u751f\u4ea7\uff0c\u672b\u5c3e\u5143\u7d20\u9075\u5faalazy\u89c4\u5219\u3002<br \/>\n1) \u4f7f\u7528#::\u5f97\u5230\u4e00\u4e2astream<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">numsForm<\/span>(<span class=\"hljs-params\">n: BigInt<\/span>) : Stream[BigInt] = n <span class=\"hljs-comment\">#:: numsForm(n + 1)<\/span><\/code><\/pre>\n<p>2) \u4f20\u9012\u4e00\u4e2a\u503c\uff0c\u5e76\u6253\u5370stream\u96c6\u5408<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> tenOrMore = numsForm(<span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(tenOrMore)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>3) tail\u7684\u6bcf\u4e00\u6b21\u4f7f\u7528\uff0c\u90fd\u4f1a\u52a8\u6001\u7684\u5411stream\u96c6\u5408\u6309\u7167\u89c4\u5219\u751f\u6210\u65b0\u7684\u5143\u7d20<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(tenOrMore.tail)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(tenOrMore)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>4) \u4f7f\u7528map\u6620\u5c04stream\u7684\u5143\u7d20\u5e76\u8fdb\u884c\u4e00\u4e9b\u8ba1\u7b97<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><span class=\"hljs-built_in\">println<\/span>(numsForm(<span class=\"hljs-number\">5<\/span>).<span class=\"hljs-keyword\">map<\/span>(x =&gt; x * x))<\/code><\/pre>\n<h2 id=\"413-\u89c6\u56fe-view\"><a name=\"t35\"><\/a><a name=\"t35\"><\/a>4.13 \u89c6\u56fe View<\/h2>\n<p>Stream\u7684\u61d2\u6267\u884c\u884c\u4e3a\uff0c\u4f60\u53ef\u4ee5\u5bf9\u5176\u4ed6\u96c6\u5408\u5e94\u7528view\u65b9\u6cd5\u6765\u5f97\u5230\u7c7b\u4f3c\u7684\u6548\u679c\uff0c\u8be5\u65b9\u6cd5\u4ea7\u51fa\u4e00\u4e2a\u5176\u65b9\u6cd5\u603b\u662f\u88ab\u61d2\u6267\u884c\u7684\u96c6\u5408\u3002\u4f46\u662fview\u4e0d\u4f1a\u7f13\u5b58\u6570\u636e\uff0c\u6bcf\u6b21\u90fd\u8981\u91cd\u65b0\u8ba1\u7b97\u3002<br \/>\n\u4f8b\u5982\uff1a\u6211\u4eec\u627e\u523010\u4e07\u4ee5\u5185\uff0c\u6240\u6709\u6570\u5b57\u5012\u5e8f\u6392\u5217\u8fd8\u662f\u5b83\u672c\u8eab\u7684\u6570\u5b57\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val viewSquares = (<span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">100000<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">.view<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">.<span class=\"hljs-keyword\">map<\/span>(x =&gt; {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ println(x)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">x.toLong * x.toLong<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}).filter(x =&gt; {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">x.toString == x.toString.reverse<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">})<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(viewSquares(<span class=\"hljs-number\">3<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span>(x &lt;- viewSquares){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">print<\/span>(x + <span class=\"hljs-string\">&#8220;\uff0c&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<h2 id=\"414-\u7ebf\u7a0b\u5b89\u5168\u7684\u96c6\u5408\"><a name=\"t36\"><\/a><a name=\"t36\"><\/a>4.14 \u7ebf\u7a0b\u5b89\u5168\u7684\u96c6\u5408<\/h2>\n<p>\u6240\u6709\u7ebf\u7a0b\u5b89\u5168\u7684\u96c6\u5408\u90fd\u662f\u4ee5Synchronized\u5f00\u5934\u7684\u96c6\u5408\uff0c\u4f8b\u5982\uff1a<br \/>\nSynchronizedBuffer<br \/>\nSynchronizedMap<br \/>\nSynchronizedPriorityQueue<br \/>\nSynchronizedQueue<br \/>\nSynchronizedSet<br \/>\nSynchronizedStack<\/p>\n<h2 id=\"415-\u5e76\u884c\u96c6\u5408\"><a name=\"t37\"><\/a><a name=\"t37\"><\/a>4.15 \u5e76\u884c\u96c6\u5408<\/h2>\n<p>Scala\u4e3a\u4e86\u5145\u5206\u4f7f\u7528\u591a\u6838CPU\uff0c\u63d0\u4f9b\u4e86\u5e76\u884c\u96c6\u5408\uff08\u6709\u522b\u4e8e\u524d\u9762\u7684\u4e32\u884c\u96c6\u5408\uff09\uff0c\u7528\u4e8e\u591a\u6838\u73af\u5883\u7684\u5e76\u884c\u8ba1\u7b97\u3002<br \/>\n\u4e3b\u8981\u7528\u5230\u7684\u7b97\u6cd5\u6709\uff1a<br \/>\nDivide and conquer : \u5206\u6cbb\u7b97\u6cd5\uff0cScala\u901a\u8fc7splitters\uff0ccombiners\u7b49\u62bd\u8c61\u5c42\u6765\u5b9e\u73b0\uff0c\u4e3b\u8981\u539f\u7406\u662f\u5c06\u8ba1\u7b97\u5de5\u4f5c\u5206\u89e3\u5f88\u591a\u4efb\u52a1\uff0c\u5206\u53d1\u7ed9\u4e00\u4e9b\u5904\u7406\u5668\u53bb\u5b8c\u6210\uff0c\u5e76\u5c06\u5b83\u4eec\u5904\u7406\u7ed3\u679c\u5408\u5e76\u8fd4\u56de<br \/>\nWork stealin\uff1a\u7b97\u6cd5\uff0c\u4e3b\u8981\u7528\u4e8e\u4efb\u52a1\u8c03\u5ea6\u8d1f\u8f7d\u5747\u8861\uff08load-balancing\uff09\uff0c\u901a\u4fd7\u70b9\u5b8c\u6210\u81ea\u5df1\u7684\u6240\u6709\u4efb\u52a1\u4e4b\u540e\uff0c\u53d1\u73b0\u5176\u4ed6\u4eba\u8fd8\u6709\u6d3b\u6ca1\u5e72\u5b8c\uff0c\u4e3b\u52a8\uff08\u6216\u88ab\u5b89\u6392\uff09\u5e2e\u4ed6\u4eba\u4e00\u8d77\u5e72\uff0c\u8fd9\u6837\u8fbe\u5230\u5c3d\u65e9\u5e72\u5b8c\u7684\u76ee\u7684\u3002<br \/>\n1) \u6253\u53701~5<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">(<span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">5<\/span>).foreach(<span class=\"hljs-built_in\">println<\/span>(_))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">(<span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">5<\/span>).par.foreach(<span class=\"hljs-built_in\">println<\/span>(_))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>2) \u67e5\u770b\u5e76\u884c\u96c6\u5408\u4e2d\u5143\u7d20\u8bbf\u95ee\u7684\u7ebf\u7a0b<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result1 = (<span class=\"hljs-number\">0<\/span> to <span class=\"hljs-number\">10000<\/span>).<span class=\"hljs-keyword\">map<\/span>{<span class=\"hljs-keyword\">case<\/span> _ =&gt; Thread.currentThread.getName}.distinct<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result2 = (<span class=\"hljs-number\">0<\/span> to <span class=\"hljs-number\">10000<\/span>).par.<span class=\"hljs-keyword\">map<\/span>{<span class=\"hljs-keyword\">case<\/span> _ =&gt; Thread.currentThread.getName}.distinct<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(result1)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(result2)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<h2 id=\"416-\u64cd\u4f5c\u7b26\"><a name=\"t38\"><\/a><a name=\"t38\"><\/a>4.16 \u64cd\u4f5c\u7b26<\/h2>\n<p>\u8fd9\u90e8\u5206\u5185\u5bb9\u6ca1\u6709\u5fc5\u8981\u523b\u610f\u53bb\u7406\u89e3\u548c\u8bb0\u5fc6\uff0c\u8bed\u6cd5\u4f7f\u7528\u7684\u591a\u4e86\uff0c\u81ea\u7136\u5c31\u4f1a\u4ea7\u751f\u611f\u89c9\uff0c\u8be5\u90e8\u5206\u5185\u5bb9\u6682\u65f6\u5927\u81f4\u4e86\u89e3\u4e00\u4e0b\u5373\u53ef\u3002<br \/>\n1) \u5982\u679c\u60f3\u5728\u53d8\u91cf\u540d\u3001\u7c7b\u540d\u7b49\u5b9a\u4e49\u4e2d\u4f7f\u7528\u8bed\u6cd5\u5173\u952e\u5b57\uff08\u4fdd\u7559\u5b57\uff09\uff0c\u53ef\u4ee5\u914d\u5408\u53cd\u5f15\u53f7\u53cd\u5f15\u53f7\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><span class=\"hljs-keyword\">val<\/span> `<span class=\"hljs-keyword\">val<\/span>` = <span class=\"hljs-number\">42<\/span><\/code><\/pre>\n<p>2) \u8fd9\u79cd\u5f62\u5f0f\u53eb\u4e2d\u7f6e\u64cd\u4f5c\u7b26\uff0cA\u64cd\u4f5c\u7b26B\u7b49\u540c\u4e8eA.\u64cd\u4f5c\u7b26(B)<br \/>\n3) \u540e\u7f6e\u64cd\u4f5c\u7b26\uff0cA\u64cd\u4f5c\u7b26\u7b49\u540c\u4e8eA.\u64cd\u4f5c\u7b26\uff0c\u5982\u679c\u64cd\u4f5c\u7b26\u5b9a\u4e49\u7684\u65f6\u5019\u4e0d\u5e26()\u5219\u8c03\u7528\u65f6\u4e0d\u80fd\u52a0\u62ec\u53f7<br \/>\n4) \u524d\u7f6e\u64cd\u4f5c\u7b26\uff0c+\u3001-\u3001\uff01\u3001~\u7b49\u64cd\u4f5c\u7b26A\u7b49\u540c\u4e8eA.unary_\u64cd\u4f5c\u7b26<br \/>\n5) \u8d4b\u503c\u64cd\u4f5c\u7b26\uff0cA\u64cd\u4f5c\u7b26=B\u7b49\u540c\u4e8eA=A\u64cd\u4f5c\u7b26B<\/p>\n<h1 id=\"\u4e94-\u6a21\u5f0f\u5339\u914d\"><a name=\"t39\"><\/a><a name=\"t39\"><\/a>\u4e94\u3001 \u6a21\u5f0f\u5339\u914d<\/h1>\n<h2 id=\"51-switch\"><a name=\"t40\"><\/a><a name=\"t40\"><\/a>5.1 switch<\/h2>\n<p>\u4e0edefault\u7b49\u6548\u7684\u662f\u6355\u83b7\u6240\u6709\u7684case_ \u6a21\u5f0f\u3002\u5982\u679c\u6ca1\u6709\u6a21\u5f0f\u5339\u914d\uff0c\u629b\u51faMatchError\uff0c\u6bcf\u4e2acase\u4e2d\uff0c\u4e0d\u7528break\u8bed\u53e5\u3002\u53ef\u4ee5\u5728match\u4e2d\u4f7f\u7528\u4efb\u4f55\u7c7b\u578b\uff0c\u800c\u4e0d\u4ec5\u4ec5\u662f\u6570\u5b57\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">var result = 0;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val op : Char = <span class=\"hljs-string\">&#8216;-&#8216;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">op <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">&#8216;+&#8217;<\/span> =&gt; result = <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">&#8216;-&#8216;<\/span> =&gt; result = &#8211;<span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> _ =&gt; result = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">println<\/span>(result)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<h2 id=\"52-\u5b88\u536b\"><a name=\"t41\"><\/a><a name=\"t41\"><\/a>5.2 \u5b88\u536b<\/h2>\n<p>\u50cfif\u8868\u8fbe\u5f0f\u4e00\u6837\uff0cmatch\u4e5f\u63d0\u4f9b\u5b88\u536b\u529f\u80fd\uff0c\u5b88\u536b\u53ef\u4ee5\u662f\u4efb\u4f55Boolean\u6761\u4ef6<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span> (ch &lt;- <span class=\"hljs-string\">&#8220;+-3!&#8221;<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> sign = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> digit = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">ch match {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">&#8216;+&#8217;<\/span> =&gt; sign = <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">&#8216;-&#8216;<\/span> =&gt; sign = &#8211;<span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> _ <span class=\"hljs-keyword\">if<\/span> ch.<span class=\"hljs-property\">toString<\/span>.<span class=\"hljs-title function_\">equals<\/span>(<span class=\"hljs-string\">&#8220;3&#8221;<\/span>) =&gt; digit = <span class=\"hljs-number\">3<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-function\"><span class=\"hljs-params\">_<\/span> =&gt;<\/span> sign = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(ch + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + sign + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + digit)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<h2 id=\"53-\u6a21\u5f0f\u4e2d\u7684\u53d8\u91cf\"><a name=\"t42\"><\/a><a name=\"t42\"><\/a>5.3 \u6a21\u5f0f\u4e2d\u7684\u53d8\u91cf<\/h2>\n<p>\u5982\u679c\u5728case\u5173\u952e\u5b57\u540e\u8ddf\u53d8\u91cf\u540d\uff0c\u90a3\u4e48match\u524d\u8868\u8fbe\u5f0f\u7684\u503c\u4f1a\u8d4b\u7ed9\u90a3\u4e2a\u53d8\u91cf\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val str = <span class=\"hljs-string\">&#8220;+-3!&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span> (i &lt;- str.<span class=\"hljs-property\">indices<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> sign = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> digit = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">str<\/span>(i) match {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">&#8216;+&#8217;<\/span> =&gt; sign = <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">&#8216;-&#8216;<\/span> =&gt; sign = &#8211;<span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> ch <span class=\"hljs-keyword\">if<\/span> <span class=\"hljs-title class_\">Character<\/span>.<span class=\"hljs-title function_\">isDigit<\/span>(ch) =&gt; digit = <span class=\"hljs-title class_\">Character<\/span>.<span class=\"hljs-title function_\">digit<\/span>(ch, <span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-function\"><span class=\"hljs-params\">_<\/span> =&gt;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(<span class=\"hljs-title function_\">str<\/span>(i) + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + sign + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + digit)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<h2 id=\"54-\u7c7b\u578b\u6a21\u5f0f\"><a name=\"t43\"><\/a><a name=\"t43\"><\/a>5.4 \u7c7b\u578b\u6a21\u5f0f<\/h2>\n<p>\u53ef\u4ee5\u5339\u914d\u5bf9\u8c61\u7684\u4efb\u610f\u7c7b\u578b\uff0c\u4f46\u662f\u4e0d\u80fd\u76f4\u63a5\u5339\u914d\u6cdb\u578b\u7c7b\u578b\uff0c\u8fd9\u6837\u63cf\u8ff0\u6bd4\u8f83\u62bd\u8c61\uff0c\u770b\u4e0b\u9762\u7684\u4f8b\u5b50\uff1a\u8fd9\u6837\u505a\u7684\u610f\u4e49\u5728\u4e8e\uff0c\u907f\u514d\u4e86\u4f7f\u7528isInstanceOf\u548casInstanceOf\u65b9\u6cd5\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val a = <span class=\"hljs-number\">8<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val obj = <span class=\"hljs-keyword\">if<\/span>(a == <span class=\"hljs-number\">1<\/span>) <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(a == <span class=\"hljs-number\">2<\/span>) <span class=\"hljs-string\">&#8220;2&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(a == <span class=\"hljs-number\">3<\/span>) <span class=\"hljs-title class_\">BigInt<\/span>(<span class=\"hljs-number\">3<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(a == <span class=\"hljs-number\">4<\/span>) <span class=\"hljs-title class_\">Map<\/span>(<span class=\"hljs-string\">&#8220;aa&#8221;<\/span> -&gt; <span class=\"hljs-number\">1<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(a == <span class=\"hljs-number\">5<\/span>) <span class=\"hljs-title class_\">Map<\/span>(<span class=\"hljs-number\">1<\/span> -&gt; <span class=\"hljs-string\">&#8220;aa&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(a == <span class=\"hljs-number\">6<\/span>) <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(a == <span class=\"hljs-number\">7<\/span>) <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-string\">&#8220;aa&#8221;<\/span>, <span class=\"hljs-number\">1<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span>(a == <span class=\"hljs-number\">8<\/span>) <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-string\">&#8220;aa&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val r1 = obj match {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">x<\/span>: <span class=\"hljs-function\"><span class=\"hljs-params\">Int<\/span> =&gt;<\/span> x<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">s<\/span>: <span class=\"hljs-function\"><span class=\"hljs-params\">String<\/span> =&gt;<\/span> s.<span class=\"hljs-property\">toInt<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-function\"><span class=\"hljs-params\">BigInt<\/span> =&gt;<\/span> &#8211;<span class=\"hljs-number\">1<\/span> <span class=\"hljs-comment\">\/\/\u4e0d\u80fd\u8fd9\u4e48\u5339\u914d<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">_<\/span>: <span class=\"hljs-function\"><span class=\"hljs-params\">BigInt<\/span> =&gt;<\/span> <span class=\"hljs-title class_\">Int<\/span>.<span class=\"hljs-property\">MaxValue<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">m<\/span>: <span class=\"hljs-title class_\">Map<\/span>[<span class=\"hljs-title class_\">String<\/span>, <span class=\"hljs-title class_\">Int<\/span>] =&gt; <span class=\"hljs-string\">&#8220;Map[String, Int]\u7c7b\u578b\u7684Map\u96c6\u5408&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">m<\/span>: <span class=\"hljs-title class_\">Map<\/span>[_, _] =&gt; <span class=\"hljs-string\">&#8220;Map\u96c6\u5408&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">a<\/span>: <span class=\"hljs-title class_\">Array<\/span>[<span class=\"hljs-title class_\">Int<\/span>] =&gt; <span class=\"hljs-string\">&#8220;It&#8217;s an Array[Int]&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">a<\/span>: <span class=\"hljs-title class_\">Array<\/span>[<span class=\"hljs-title class_\">String<\/span>] =&gt; <span class=\"hljs-string\">&#8220;It&#8217;s an Array[String]&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">a<\/span>: <span class=\"hljs-title class_\">Array<\/span>[_] =&gt; <span class=\"hljs-string\">&#8220;It&#8217;s an array of something other than Int&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-function\"><span class=\"hljs-params\">_<\/span> =&gt;<\/span> <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(r1 + <span class=\"hljs-string\">&#8220;, &#8220;<\/span> + r1.<span class=\"hljs-property\">getClass<\/span>.<span class=\"hljs-property\">getName<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1aMap\u7c7b\u578b\u7684\u6cdb\u578b\u5728\u5339\u914d\u7684\u65f6\u5019\uff0c\u4f1a\u81ea\u52a8\u5220\u9664\u6cdb\u578b\u7c7b\u578b\uff0c\u53ea\u4f1a\u5339\u914d\u5230Map\u7c7b\u578b\uff0c\u800c\u4e0d\u4f1a\u7cbe\u786e\u5230Map\u91cc\u9762\u7684\u6cdb\u578b\u7c7b\u578b\u3002<\/em><\/p>\n<h2 id=\"55-\u5339\u914d\u6570\u7ec4\u5217\u8868\u5143\u7ec4\"><a name=\"t44\"><\/a><a name=\"t44\"><\/a>5.5 \u5339\u914d\u6570\u7ec4\u3001\u5217\u8868\u3001\u5143\u7ec4<\/h2>\n<p>Array(0) \u5339\u914d\u53ea\u6709\u4e00\u4e2a\u5143\u7d20\u4e14\u4e3a0\u7684\u6570\u7ec4\u3002<br \/>\nArray(x,y) \u5339\u914d\u6570\u7ec4\u6709\u4e24\u4e2a\u5143\u7d20\uff0c\u5e76\u5c06\u4e24\u4e2a\u5143\u7d20\u8d4b\u503c\u4e3ax\u548cy\u3002<br \/>\nArray(0,_*) \u5339\u914d\u6570\u7ec4\u4ee50\u5f00\u59cb\u3002<br \/>\n1) \u5339\u914d\u6570\u7ec4<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span> (arr &lt;- <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-number\">0<\/span>), <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">0<\/span>), <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">0<\/span>), <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">0<\/span>), <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">1<\/span>))) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result = arr match {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-number\">0<\/span>) =&gt; <span class=\"hljs-string\">&#8220;0&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-title class_\">Array<\/span>(x, y) =&gt; x + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + y<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-title class_\">Array<\/span>(x, y, z) =&gt; x + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + y + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + z<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-number\">0<\/span>, _*) =&gt; <span class=\"hljs-string\">&#8220;0&#8230;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-function\"><span class=\"hljs-params\">_<\/span> =&gt;<\/span> <span class=\"hljs-string\">&#8220;something else&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(result)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<p>2) \u5339\u914d\u5217\u8868<br \/>\n\u4e0e\u5339\u914d\u6570\u7ec4\u76f8\u4f3c\uff0c\u540c\u6837\u53ef\u4ee5\u5e94\u7528\u4e8e\u5217\u8868<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">for (lst &lt;- Array(List(0), List(1, 0), List(0, 0, 0), List(1, 0, 0))) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result = lst <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-number\">0<\/span> :: <span class=\"hljs-attr\">Nil<\/span> =&gt; <span class=\"hljs-string\">&#8220;0&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> x :: y :: <span class=\"hljs-attr\">Nil<\/span> =&gt; x + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + y<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-number\">0<\/span> :: <span class=\"hljs-attr\">tail<\/span> =&gt; <span class=\"hljs-string\">&#8220;0 &#8230;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> _ =&gt; <span class=\"hljs-string\">&#8220;something else&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">println<\/span>(result)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<p>3) \u5339\u914d\u5143\u7ec4<br \/>\n\u540c\u6837\u53ef\u4ee5\u5e94\u7528\u4e8e\u5143\u7ec4<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span> (pair &lt;- <span class=\"hljs-title class_\">Array<\/span>((<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">1<\/span>), (<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">0<\/span>), (<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>))) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result = pair match {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-function\">(<span class=\"hljs-params\"><span class=\"hljs-number\">0<\/span>, _<\/span>) =&gt;<\/span> <span class=\"hljs-string\">&#8220;0 &#8230;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-function\">(<span class=\"hljs-params\">y, <span class=\"hljs-number\">0<\/span><\/span>) =&gt;<\/span> y + <span class=\"hljs-string\">&#8221; 0&#8243;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-function\"><span class=\"hljs-params\">_<\/span> =&gt;<\/span> <span class=\"hljs-string\">&#8220;neither is 0&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(result)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<h2 id=\"56-\u63d0\u53d6\u5668\"><a name=\"t45\"><\/a><a name=\"t45\"><\/a>5.6 \u63d0\u53d6\u5668<\/h2>\n<p>\u6a21\u5f0f\u5339\u914d\uff0c\u4ec0\u4e48\u624d\u7b97\u662f\u5339\u914d\u5462\uff1f\u5373\uff0ccase\u4e2dunapply\u65b9\u6cd5\u8fd4\u56desome\u96c6\u5408\u5219\u4e3a\u5339\u914d\u6210\u529f\uff0c\u8fd4\u56denone\u96c6\u5408\u5219\u4e3a\u5339\u914d\u5931\u8d25\u3002\u4e0b\u9762\u6211\u4eec\u6765\u770b\u51e0\u4e2a\u4f8b\u5b50\u505a\u8be6\u7ec6\u63a2\u8ba8\u3002<br \/>\n1) unapply<br \/>\n\u2014\u2014 \u8c03\u7528unapply\uff0c\u4f20\u5165number<br \/>\n\u2014\u2014 \u63a5\u6536\u8fd4\u56de\u503c\u5e76\u5224\u65ad\u8fd4\u56de\u503c\u662fNone\uff0c\u8fd8\u662fSome<br \/>\n\u2014\u2014 \u5982\u679c\u662fSome\uff0c\u5219\u5c06\u5176\u89e3\u5f00\uff0c\u5e76\u5c06\u5176\u4e2d\u7684\u503c\u8d4b\u503c\u7ed9n\uff08\u5c31\u662fcase Square(n)\u4e2d\u7684n\uff09<br \/>\n\u521b\u5efaobject Square\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-selector-tag\">object<\/span> Square {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def unapply(z: Double): Option[Double] = <span class=\"hljs-built_in\">Some<\/span>(math.<span class=\"hljs-built_in\">sqrt<\/span>(z))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>\u6a21\u5f0f\u5339\u914d\u4f7f\u7528\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val number: Double = 36.0<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">number <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> Square(n) =&gt; println(s<span class=\"hljs-string\">&#8220;square root of <span class=\"hljs-variable\">$number<\/span> is <span class=\"hljs-variable\">$n<\/span>&#8220;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> _ =&gt; println(<span class=\"hljs-string\">&#8220;nothing matched&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<p>2) unapplySeq<br \/>\n\u2014\u2014 \u8c03\u7528unapplySeq\uff0c\u4f20\u5165namesString<br \/>\n\u2014\u2014 \u63a5\u6536\u8fd4\u56de\u503c\u5e76\u5224\u65ad\u8fd4\u56de\u503c\u662fNone\uff0c\u8fd8\u662fSome<br \/>\n\u2014\u2014 \u5982\u679c\u662fSome\uff0c\u5219\u5c06\u5176\u89e3\u5f00<br \/>\n\u2014\u2014 \u5224\u65ad\u89e3\u5f00\u4e4b\u540e\u5f97\u5230\u7684sequence\u4e2d\u7684\u5143\u7d20\u7684\u4e2a\u6570\u662f\u5426\u662f\u4e09\u4e2a<br \/>\n\u2014\u2014 \u5982\u679c\u662f\u4e09\u4e2a\uff0c\u5219\u628a\u4e09\u4e2a\u5143\u7d20\u5206\u522b\u53d6\u51fa\uff0c\u8d4b\u503c\u7ed9first\uff0csecond\u548cthird<br \/>\n\u521b\u5efaobject Names\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">object Names {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def unapplySe<span class=\"hljs-string\">q(str: String)<\/span>: Option[Se<span class=\"hljs-string\">q[String]<\/span>] = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (str.contains(<span class=\"hljs-string\">&#8220;,&#8221;<\/span>)) Some(str.<span class=\"hljs-keyword\">split<\/span>(<span class=\"hljs-string\">&#8220;,&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> None<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<p>\u6a21\u5f0f\u5339\u914d\u4f7f\u7528\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> namesString = <span class=\"hljs-string\">&#8220;Alice,Bob,Thomas&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">namesString <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-type\">Names<\/span>(first, second, third) =&gt; {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;the string contains three people&#8217;s names&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">s&#8221;<span class=\"hljs-subst\">$first<\/span> <span class=\"hljs-subst\">$second<\/span> <span class=\"hljs-subst\">$third<\/span>&#8220;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> _ =&gt; println(<span class=\"hljs-string\">&#8220;nothing matched&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"57-\u53d8\u91cf\u58f0\u660e\u4e2d\u7684\u6a21\u5f0f\"><a name=\"t46\"><\/a><a name=\"t46\"><\/a>5.7 \u53d8\u91cf\u58f0\u660e\u4e2d\u7684\u6a21\u5f0f<\/h2>\n<p>match\u4e2d\u6bcf\u4e00\u4e2acase\u90fd\u53ef\u4ee5\u5355\u72ec\u63d0\u53d6\u51fa\u6765\uff0c\u610f\u601d\u662f\u4e00\u6837\u7684\uff0c\u5982\u4e0b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-sql\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val (x, y) <span class=\"hljs-operator\">=<\/span> (<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val (q, r) <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-type\">BigInt<\/span>(<span class=\"hljs-number\">10<\/span>) <span class=\"hljs-operator\">\/<\/span><span class=\"hljs-operator\">%<\/span> <span class=\"hljs-number\">3<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val arr <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">Array<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">7<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">9<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val <span class=\"hljs-keyword\">Array<\/span>(<span class=\"hljs-keyword\">first<\/span>, <span class=\"hljs-keyword\">second<\/span>, _<span class=\"hljs-operator\">*<\/span>) <span class=\"hljs-operator\">=<\/span> arr<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-keyword\">first<\/span>, <span class=\"hljs-keyword\">second<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-sql\"><\/code><\/pre>\n<h2 id=\"58-for\u8868\u8fbe\u5f0f\u4e2d\u7684\u6a21\u5f0f\"><a name=\"t47\"><\/a><a name=\"t47\"><\/a>5.8 for\u8868\u8fbe\u5f0f\u4e2d\u7684\u6a21\u5f0f<\/h2>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.JavaConverters._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">for<\/span> ((k, v) &lt;- <span class=\"hljs-type\">System<\/span>.getProperties.asScala)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(k + <span class=\"hljs-string\">&#8221; -&gt; &#8220;<\/span> + v)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">for<\/span> ((k, <span class=\"hljs-string\">&#8220;&#8221;<\/span>) &lt;- <span class=\"hljs-type\">System<\/span>.getProperties.asScala)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(k)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title\">for<\/span> ((k, v) &lt;- <span class=\"hljs-type\">System<\/span>.getProperties.asScala <span class=\"hljs-keyword\">if<\/span> v == <span class=\"hljs-string\">&#8220;&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(k)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1afor\u4e2d\u5339\u914d\u4f1a\u81ea\u52a8\u5ffd\u7565\u5931\u8d25\u7684\u5339\u914d<\/em><\/p>\n<h2 id=\"59-\u6837\u4f8b\u7c7b\"><a name=\"t48\"><\/a><a name=\"t48\"><\/a>5.9 \u6837\u4f8b\u7c7b<\/h2>\n<p>\u6837\u4f8b\u7c7b\u9996\u5148\u662f\u7c7b\uff0c\u9664\u6b64\u4e4b\u5916\u5b83\u662f\u4e3a\u6a21\u5f0f\u5339\u914d\u800c\u4f18\u5316\u7684\u7c7b\uff0c\u6837\u4f8b\u7c7b\u7528case\u5173\u952e\u5b57\u8fdb\u884c\u58f0\u660e\uff1a<br \/>\n1) \u6837\u4f8b\u7c7b\u7684\u521b\u5efa<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> unit6<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Amount<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Dollar<\/span>(<span class=\"hljs-params\">value: <span class=\"hljs-type\">Double<\/span><\/span>) <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Amount<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Currency<\/span>(<span class=\"hljs-params\">value: <span class=\"hljs-type\">Double<\/span>, unit: <span class=\"hljs-type\">String<\/span><\/span>) <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Amount<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Nothing<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Amount<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>2) \u5f53\u6211\u4eec\u6709\u4e00\u4e2a\u7c7b\u578b\u4e3aAmount\u7684\u5bf9\u8c61\u65f6\uff0c\u6211\u4eec\u53ef\u4ee5\u7528\u6a21\u5f0f\u5339\u914d\u6765\u5339\u914d\u4ed6\u7684\u7c7b\u578b\uff0c\u5e76\u5c06\u5c5e\u6027\u503c\u7ed1\u5b9a\u5230\u53d8\u91cf\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">for (amt &lt;- Array(Dollar(1000.0), Currency(1000.0, <span class=\"hljs-string\">&#8220;EUR&#8221;<\/span>), Nothing)) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result = amt <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> Dollar(v) =&gt; <span class=\"hljs-string\">&#8220;$&#8221;<\/span> + v<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> Currency(<span class=\"hljs-number\">_<\/span>, u) =&gt; u<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">Nothing<\/span> =&gt; <span class=\"hljs-string\">&#8220;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">println<\/span>(amt + <span class=\"hljs-string\">&#8220;: &#8220;<\/span> + result)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<p>\u5f53\u4f60\u58f0\u660e\u6837\u4f8b\u7c7b\u65f6\uff0c\u5982\u4e0b\u51e0\u4ef6\u4e8b\u60c5\u4f1a\u81ea\u52a8\u53d1\u751f\uff1a<br \/>\n\u2014\u2014 \u6784\u9020\u5176\u4e2d\u7684\u6bcf\u4e00\u4e2a\u53c2\u6570\u90fd\u6210\u4e3aval\u2014\u2014\u9664\u975e\u5b83\u88ab\u663e\u5f0f\u5730\u58f0\u660e\u4e3avar\uff08\u4e0d\u5efa\u8bae\u8fd9\u6837\u505a\uff09<br \/>\n\u2014\u2014 \u5728\u534a\u751f\u5bf9\u8c61\u4e2d\u63d0\u4f9bapply\u65b9\u6cd5\u8ba9\u4f60\u4e0d\u7528new\u5173\u952e\u5b57\u5c31\u80fd\u6784\u9020\u51fa\u76f8\u5e94\u7684\u5bf9\u8c61\uff0c\u6bd4\u5982Dollar(29.95)\u6216Currency(29.95, \u201cEUR\u201d)<br \/>\n\u2014\u2014 \u63d0\u4f9bunapply\u65b9\u6cd5\u8ba9\u6a21\u5f0f\u5339\u914d\u53ef\u4ee5\u5de5\u4f5c<br \/>\n\u2014\u2014 \u5c06\u751f\u6210toString\u3001equals\u3001hashCode\u548ccopy\u65b9\u6cd5\u2014\u2014\u9664\u975e\u663e\u5f0f\u5730\u7ed9\u51fa\u8fd9\u4e9b\u65b9\u6cd5\u7684\u5b9a\u4e49\u3002<br \/>\n\u9664\u4e0a\u8ff0\u5916\uff0c\u6837\u4f8b\u7c7b\u548c\u5176\u4ed6\u7c7b\u578b\u5b8c\u5168\u4e00\u6837\u3002\u4f60\u53ef\u4ee5\u6dfb\u52a0\u65b9\u6cd5\u548c\u5b57\u6bb5\uff0c\u6269\u5c55\u5b83\u4eec\u3002<\/p>\n<h2 id=\"510-copy\u65b9\u6cd5\u548c\u5e26\u540d\u53c2\u6570\"><a name=\"t49\"><\/a><a name=\"t49\"><\/a>5.10 Copy\u65b9\u6cd5\u548c\u5e26\u540d\u53c2\u6570<\/h2>\n<p>copy\u521b\u5efa\u4e00\u4e2a\u4e0e\u73b0\u6709\u5bf9\u8c61\u503c\u76f8\u540c\u7684\u65b0\u5bf9\u8c61\uff0c\u5e76\u53ef\u4ee5\u901a\u8fc7\u5e26\u540d\u53c2\u6570\u6765\u4fee\u6539\u67d0\u4e9b\u5c5e\u6027\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val amt = Currency(<span class=\"hljs-number\">29.95<\/span>, <span class=\"hljs-string\">&#8220;EUR&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val price = amt.<span class=\"hljs-built_in\">copy<\/span>(value = <span class=\"hljs-number\">19.95<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(amt)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(price)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(amt.<span class=\"hljs-built_in\">copy<\/span>(unit = <span class=\"hljs-string\">&#8220;CHF&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<h2 id=\"511-case\u8bed\u53e5\u7684\u4e2d\u7f6e\u7f00\u8868\u8fbe\u5f0f\"><a name=\"t50\"><\/a><a name=\"t50\"><\/a>5.11 Case\u8bed\u53e5\u7684\u4e2d\u7f6e(\u7f00)\u8868\u8fbe\u5f0f<\/h2>\n<p>\u4ec0\u4e48\u662f\u4e2d\u7f6e\u8868\u8fbe\u5f0f\uff1f1 + 2\uff0c\u8fd9\u5c31\u662f\u4e00\u4e2a\u4e2d\u7f6e\u8868\u8fbe\u5f0f\u3002\u5982\u679cunapply\u65b9\u6cd5\u4ea7\u51fa\u4e00\u4e2a\u5143\u7ec4\uff0c\u4f60\u53ef\u4ee5\u5728case\u8bed\u53e5\u4e2d\u4f7f\u7528\u4e2d\u7f6e\u8868\u793a\u6cd5\u3002\u6bd4\u5982\u53ef\u4ee5\u5339\u914d\u4e00\u4e2aList\u5e8f\u5217\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">List(1, 7, 2, 9) <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> first :: second :: <span class=\"hljs-attr\">rest<\/span> =&gt; println(first + second + rest.length)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> _ =&gt; <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<h2 id=\"512-\u5339\u914d\u5d4c\u5957\u7ed3\u6784\"><a name=\"t51\"><\/a><a name=\"t51\"><\/a>5.12 \u5339\u914d\u5d4c\u5957\u7ed3\u6784<\/h2>\n<p>\u6bd4\u5982\u67d0\u4e00\u7cfb\u5217\u5546\u54c1\u60f3\u6346\u7ed1\u6253\u6298\u51fa\u552e<br \/>\n1) \u521b\u5efa\u6837\u4f8b\u7c7b<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Item<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Article<\/span>(<span class=\"hljs-params\">description: <span class=\"hljs-type\">String<\/span>, price: <span class=\"hljs-type\">Double<\/span><\/span>) <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Item<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Bundle<\/span>(<span class=\"hljs-params\">description: <span class=\"hljs-type\">String<\/span>, discount: <span class=\"hljs-type\">Double<\/span>, item: <span class=\"hljs-type\">Item<\/span>*<\/span>) <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Item<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>2) \u5339\u914d\u5d4c\u5957\u7ed3\u6784<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> sale = Bundle(<span class=\"hljs-string\">&#8220;\u611a\u4eba\u8282\u5927\u7529\u5356\u7cfb\u5217&#8221;<\/span>, <span class=\"hljs-number\">10<\/span>,<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">Article(<span class=\"hljs-string\">&#8220;\u300a\u4e5d\u9634\u771f\u7ecf\u300b&#8221;<\/span>, <span class=\"hljs-number\">40<\/span>),<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">Bundle(<span class=\"hljs-string\">&#8220;\u4ece\u51fa\u95e8\u4e00\u6761\u72d7\u5230\u88c5\u5907\u5168\u53d1\u5149\u7684\u4fee\u70bc\u4e4b\u8def\u7cfb\u5217&#8221;<\/span>, <span class=\"hljs-number\">20<\/span>,<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">Article(<span class=\"hljs-string\">&#8220;\u300a\u5982\u4f55\u5feb\u901f\u6361\u8d77\u5730\u4e0a\u7684\u88c5\u5907\u300b&#8221;<\/span>, <span class=\"hljs-number\">80<\/span>),<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">Article(<span class=\"hljs-string\">&#8220;\u300a\u540d\u5b57\u8d77\u5f97\u592a\u957f\u8eb2\u5728\u6811\u540e\u5bb9\u6613\u88ab\u5730\u65b9\u53d1\u73b0\u300b&#8221;<\/span>,<span class=\"hljs-number\">30<\/span>)))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>3) \u5c06descr\u7ed1\u5b9a\u5230\u7b2c\u4e00\u4e2aArticle\u7684\u63cf\u8ff0<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result1 = sale <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> Bundle(<span class=\"hljs-number\">_<\/span>, <span class=\"hljs-number\">_<\/span>, Article(<span class=\"hljs-literal\">descr<\/span>, <span class=\"hljs-number\">_<\/span>), <span class=\"hljs-number\">_<\/span>*) =&gt; <span class=\"hljs-literal\">descr<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">println<\/span>(result1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<p>4) \u901a\u8fc7@\u8868\u793a\u6cd5\u5c06\u5d4c\u5957\u7684\u503c\u7ed1\u5b9a\u5230\u53d8\u91cf\u3002_*\u7ed1\u5b9a\u5269\u4f59Item\u5230rest<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result2 = sale <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> Bundle(<span class=\"hljs-number\">_<\/span>, <span class=\"hljs-number\">_<\/span>, art @ Article(<span class=\"hljs-number\">_<\/span>, <span class=\"hljs-number\">_<\/span>), rest @ <span class=\"hljs-number\">_<\/span>*) =&gt; (art, rest)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">println<\/span>(result2)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<p>5) \u4e0d\u4f7f\u7528_*\u7ed1\u5b9a\u5269\u4f59Item\u5230rest<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result3 = sale <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> Bundle(<span class=\"hljs-number\">_<\/span>, <span class=\"hljs-number\">_<\/span>, art @ Article(<span class=\"hljs-number\">_<\/span>, <span class=\"hljs-number\">_<\/span>), rest) =&gt; (art, rest)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">println<\/span>(result3)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<p>6) \u8ba1\u7b97\u67d0\u4e2aItem\u4ef7\u683c\u7684\u51fd\u6570\uff0c\u5e76\u8c03\u7528<\/p>\n<pre class=\"has\"><code class=\"hljs language-cpp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">price<\/span><span class=\"hljs-params\">(it: Item)<\/span>: Double =<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">it match {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-title\">Article<\/span><span class=\"hljs-params\">(_, p)<\/span> <\/span>=&gt; <span class=\"hljs-function\">p<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-title\">Bundle<\/span><span class=\"hljs-params\">(_, disc, its@_*)<\/span> =&gt; its.<span class=\"hljs-built_in\">map<\/span>(price _).sum &#8211; disc<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(SwitchBaseSyllabus.<span class=\"hljs-built_in\">price<\/span>(sale))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-cpp\"><\/code><\/pre>\n<h2 id=\"513-\u5bc6\u5c01\u7c7b\"><a name=\"t52\"><\/a><a name=\"t52\"><\/a>5.13 \u5bc6\u5c01\u7c7b<\/h2>\n<p>\u5982\u679c\u60f3\u8ba9case\u7c7b\u7684\u6240\u6709\u5b50\u7c7b\u90fd\u5fc5\u987b\u5728\u7533\u660e\u8be5\u7c7b\u7684\u76f8\u540c\u7684\u6587\u4ef6\u4e2d\u5b9a\u4e49\uff0c\u53ef\u4ee5\u5c06\u6837\u4f8b\u7c7b\u7684\u901a\u7528\u8d85\u7c7b\u58f0\u660e\u4e3asealed\uff0c\u53eb\u505a\u5bc6\u5c01\u7c7b\uff0c\u5bc6\u5c01\u5c31\u662f\u5916\u90e8\u7528\u6237\u4e0d\u80fd\u5728\u5176\u4ed6\u6587\u4ef6\u4e2d\u5b9a\u4e49\u5b50\u7c7b\u3002<\/p>\n<h2 id=\"514-\u6a21\u62df\u679a\u4e3e\"><a name=\"t53\"><\/a><a name=\"t53\"><\/a>5.14 \u6a21\u62df\u679a\u4e3e<\/h2>\n<p>\u6837\u4f8b\u7c7b\u53ef\u4ee5\u6a21\u62df\u51fa\u679a\u4e3e\u7c7b\u578b<br \/>\n1) \u521b\u5efa\u5bc6\u5c01\u6837\u4f8b\u7c7b\uff08\u4e0d\u5bc6\u5c01\u4e5f\u53ef\u4ee5\uff0c\u5728\u8fd9\u91cc\u53ea\u662f\u4e3a\u4e86\u7528\u4e00\u4e0bsealed\u5173\u952e\u5b57\uff09<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> unit6<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">sealed<\/span> <span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TrafficLightColor<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Red<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">TrafficLightColor<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Yellow<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">TrafficLightColor<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Green<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">TrafficLightColor<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>2) \u6a21\u62df\u679a\u4e3e<\/p>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">for (color &lt;- Array(Red, Yellow, Green))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">color <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">Red<\/span> =&gt; <span class=\"hljs-string\">&#8220;stop&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">Yellow<\/span> =&gt; <span class=\"hljs-string\">&#8220;slowly&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-attr\">Green<\/span> =&gt; <span class=\"hljs-string\">&#8220;go&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">})<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-puppet\"><\/code><\/pre>\n<h2 id=\"515-\u504f\u51fd\u6570\"><a name=\"t54\"><\/a><a name=\"t54\"><\/a>5.15 \u504f\u51fd\u6570<\/h2>\n<p>\u504f\u51fd\u6570\uff0c\u5b83\u53ea\u5bf9\u4f1a\u4f5c\u7528\u4e8e\u6307\u5b9a\u7c7b\u578b\u7684\u53c2\u6570\u6216\u6307\u5b9a\u8303\u56f4\u503c\u7684\u53c2\u6570\u5b9e\u65bd\u8ba1\u7b97<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val f: PartialFunction[Char, Int] = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">&#8216;+&#8217;<\/span> =&gt; <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">&#8216;-&#8216;<\/span> =&gt; <span class=\"hljs-number\">-1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(f(<span class=\"hljs-string\">&#8216;-&#8216;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(f.isDefinedAt(<span class=\"hljs-string\">&#8216;0&#8217;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(f(<span class=\"hljs-string\">&#8216;+&#8217;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ println(f(&#8216;0&#8217;))<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>\u518d\u6df1\u5165\u63a2\u8ba8\u4e00\u70b9\u70b9\uff1a<br \/>\n\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u5c06List\u96c6\u5408\u91cc\u9762\u6570\u636e+1\u7684\u504f\u51fd\u6570\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val f1 = new PartialFunction[<span class=\"hljs-type\">Any<\/span>, Int] {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">apply<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">any<\/span>: <span class=\"hljs-type\">Any<\/span><\/span>) = <span class=\"hljs-built_in\">any<\/span>.asInstanceOf[Int] + <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">isDefinedAt<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">any<\/span>: <span class=\"hljs-type\">Any<\/span><\/span>) = <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-built_in\">any<\/span>.isInstanceOf[Int]) true <span class=\"hljs-keyword\">else<\/span> false<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val rf1 = <span class=\"hljs-type\">List<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-string\">&#8220;seven&#8221;<\/span>) collect f1<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(rf1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>\u5982\u4e0a\u7684\u529f\u80fd\uff0c\u7b49\u540c\u4e8e\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def f2: PartialFunction[Any, <span class=\"hljs-built_in\">Int<\/span>] = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">case i: <span class=\"hljs-built_in\">Int<\/span> =&gt; i + <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> rf2 = List(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-string\">&#8220;seven&#8221;<\/span>) collect f2<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(rf2)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h1 id=\"\u516d-\u9ad8\u9636\u51fd\u6570\"><a name=\"t55\"><\/a><a name=\"t55\"><\/a>\u516d\u3001 \u9ad8\u9636\u51fd\u6570<\/h1>\n<h2 id=\"61-\u4f5c\u4e3a\u53c2\u6570\u7684\u9ad8\u9636\u51fd\u6570\"><a name=\"t56\"><\/a><a name=\"t56\"><\/a>6.1 \u4f5c\u4e3a\u53c2\u6570\u7684\u9ad8\u9636\u51fd\u6570<\/h2>\n<p>\u51fd\u6570\u4f5c\u4e3a\u4e00\u4e2a\u53d8\u91cf\u4f20\u5165\u5230\u4e86\u53e6\u4e00\u4e2a\u51fd\u6570\u4e2d\uff0c\u90a3\u4e48\u8be5\u4f5c\u4e3a\u53c2\u6570\u7684\u51fd\u6570\u7684\u7c7b\u578b\u662f\uff1afunction1\uff0c\u5373\uff1a\uff08\u53c2\u6570\u7c7b\u578b\uff09 =&gt; \u8fd4\u56de\u7c7b\u578b<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def plus(x: Int) = <span class=\"hljs-number\">3<\/span> + x<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result1 = <span class=\"hljs-built_in\">Array<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>).<span class=\"hljs-built_in\">map<\/span>(<span class=\"hljs-built_in\">plus<\/span>(_))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(result1.<span class=\"hljs-built_in\">mkString<\/span>(<span class=\"hljs-string\">&#8220;,&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u5e26\u6709\u4e00\u4e2a\u53c2\u6570\u7684\u51fd\u6570\u7684\u7c7b\u578b\u662ffunction1\uff0c\u5e26\u6709\u4e24\u4e2a\u662ffunction2\uff0c\u4ee5\u6b64\u7c7b\u63a8<\/em><\/p>\n<h2 id=\"62-\u533f\u540d\u51fd\u6570\"><a name=\"t57\"><\/a><a name=\"t57\"><\/a>6.2 \u533f\u540d\u51fd\u6570<\/h2>\n<p>\u5373\u6ca1\u6709\u540d\u5b57\u7684\u51fd\u6570\uff0c\u53ef\u4ee5\u901a\u8fc7\u51fd\u6570\u8868\u8fbe\u5f0f\u6765\u8bbe\u7f6e\u533f\u540d\u51fd\u6570\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val triple = <span class=\"hljs-function\"><span class=\"hljs-params\">(x: Double)<\/span> =&gt;<\/span> <span class=\"hljs-number\">3<\/span> * x<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(triple(<span class=\"hljs-number\">3<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<h2 id=\"63-\u9ad8\u9636\u51fd\u6570\"><a name=\"t58\"><\/a><a name=\"t58\"><\/a>6.3 \u9ad8\u9636\u51fd\u6570<\/h2>\n<p>\u80fd\u591f\u63a5\u53d7\u51fd\u6570\u4f5c\u4e3a\u53c2\u6570\u7684\u51fd\u6570\uff0c\u53eb\u505a\u9ad8\u9636\u51fd\u6570\u3002<br \/>\n1) \u9ad8\u9636\u51fd\u6570\u7684\u4f7f\u7528<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">highOrderFunction1<\/span>(<span class=\"hljs-params\">f: Double =&gt; Double<\/span>) = f(<span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">minus7<\/span>(<span class=\"hljs-params\">x: Double<\/span>) = x &#8211; <span class=\"hljs-number\">7<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val result2 = highOrderFunction1(minus7)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(result2)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>2) \u9ad8\u9636\u51fd\u6570\u540c\u6837\u53ef\u4ee5\u8fd4\u56de\u51fd\u6570\u7c7b\u578b<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def minusxy(x: <span class=\"hljs-built_in\">Int<\/span>) = (y: <span class=\"hljs-built_in\">Int<\/span>) =&gt; x &#8211; y<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> result3 = minusxy(<span class=\"hljs-number\">3<\/span>)(<span class=\"hljs-number\">5<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(result3)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"64-\u53c2\u6570\u7c7b\u578b\u63a8\u65ad\"><a name=\"t59\"><\/a><a name=\"t59\"><\/a>6..4 \u53c2\u6570\uff08\u7c7b\u578b\uff09\u63a8\u65ad<\/h2>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u4f20\u5165\u51fd\u6570\u8868\u8fbe\u5f0f<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">highOrderFunction1<\/span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">x: Double<\/span>) =&gt;<\/span> <span class=\"hljs-number\">3<\/span> * x)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u53c2\u6570\u63a8\u65ad\u7701\u53bb\u7c7b\u578b\u4fe1\u606f<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">highOrderFunction1<\/span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">x<\/span>) =&gt;<\/span> <span class=\"hljs-number\">3<\/span> * x)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u5355\u4e2a\u53c2\u6570\u53ef\u4ee5\u7701\u53bb\u62ec\u53f7<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">highOrderFunction1<\/span>(<span class=\"hljs-function\"><span class=\"hljs-params\">x<\/span> =&gt;<\/span> <span class=\"hljs-number\">3<\/span> * x)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u5982\u679c\u53d8\u91cf\u65e8\u5728=&gt;\u53f3\u8fb9\u53ea\u51fa\u73b0\u4e00\u6b21\uff0c\u53ef\u4ee5\u7528_\u6765\u4ee3\u66ff<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">highOrderFunction1<\/span>(<span class=\"hljs-number\">3<\/span> * _)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<h2 id=\"65-\u95ed\u5305\"><a name=\"t60\"><\/a><a name=\"t60\"><\/a>6.5 \u95ed\u5305<\/h2>\n<p>\u95ed\u5305\u5c31\u662f\u4e00\u4e2a\u51fd\u6570\u628a\u5916\u90e8\u7684\u90a3\u4e9b\u4e0d\u5c5e\u4e8e\u81ea\u5df1\u7684\u5bf9\u8c61\u4e5f\u5305\u542b(\u95ed\u5408)\u8fdb\u6765\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\">def minusxy(x: Int) = <span class=\"hljs-function\"><span class=\"hljs-params\">(y: Int)<\/span> =&gt;<\/span> x - y<\/code><\/pre>\n<p>\u8fd9\u5c31\u662f\u4e00\u4e2a\u95ed\u5305\uff1a<br \/>\n1) \u533f\u540d\u51fd\u6570(y: Int) =&gt; x -y\u5d4c\u5957\u5728minusxy\u51fd\u6570\u4e2d\u3002<br \/>\n2) \u533f\u540d\u51fd\u6570(y: Int) =&gt; x -y\u4f7f\u7528\u4e86\u8be5\u533f\u540d\u51fd\u6570\u4e4b\u5916\u7684\u53d8\u91cfx<br \/>\n3) \u51fd\u6570minusxy\u8fd4\u56de\u4e86\u5f15\u7528\u4e86\u5c40\u90e8\u53d8\u91cf\u7684\u533f\u540d\u51fd\u6570<br \/>\n\u518d\u4e3e\u4e00\u4f8b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def minusxy(x: Int) = (y: Int) =&gt; x &#8211; y<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val f1 = <span class=\"hljs-built_in\">minusxy<\/span>(<span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val f2 = <span class=\"hljs-built_in\">minusxy<\/span>(<span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-built_in\">f1<\/span>(<span class=\"hljs-number\">3<\/span>) + <span class=\"hljs-built_in\">f2<\/span>(<span class=\"hljs-number\">3<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>\u6b64\u5904f1,f2\u8fd9\u4e24\u4e2a\u51fd\u6570\u5c31\u53eb\u95ed\u5305\u3002<\/p>\n<h2 id=\"66-\u67ef\u91cc\u5316\"><a name=\"t61\"><\/a><a name=\"t61\"><\/a>6.6 \u67ef\u91cc\u5316<\/h2>\n<p>\u51fd\u6570\u7f16\u7a0b\u4e2d\uff0c\u63a5\u53d7\u591a\u4e2a\u53c2\u6570\u7684\u51fd\u6570\u90fd\u53ef\u4ee5\u8f6c\u5316\u4e3a\u63a5\u53d7\u5355\u4e2a\u53c2\u6570\u7684\u51fd\u6570\uff0c\u8fd9\u4e2a\u8f6c\u5316\u8fc7\u7a0b\u5c31\u53eb\u67ef\u91cc\u5316\uff0c\u67ef\u91cc\u5316\u5c31\u662f\u8bc1\u660e\u4e86\u51fd\u6570\u53ea\u9700\u8981\u4e00\u4e2a\u53c2\u6570\u800c\u5df2\u3002\u5176\u5b9e\u6211\u4eec\u521a\u624d\u7684\u5b66\u4e60\u8fc7\u7a0b\u4e2d\uff0c\u5df2\u7ecf\u6d89\u53ca\u5230\u4e86\u67ef\u91cc\u5316\u64cd\u4f5c\uff0c\u6240\u4ee5\u8fd9\u4e5f\u5370\u8bc1\u4e86\uff0c\u67ef\u91cc\u5316\u5c31\u662f\u4ee5\u51fd\u6570\u4e3a\u4e3b\u4f53\u8fd9\u79cd\u601d\u60f3\u53d1\u5c55\u7684\u5fc5\u7136\u4ea7\u751f\u7684\u7ed3\u679c\u3002<br \/>\n1) \u67ef\u91cc\u5316\u793a\u4f8b<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def mul(x: Int, y: Int) = x * y<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-built_in\">mul<\/span>(<span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">10<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-built_in\">mulCurry<\/span>(x: Int) = (y: Int) =&gt; x * y<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-built_in\">mulCurry<\/span>(<span class=\"hljs-number\">10<\/span>)(<span class=\"hljs-number\">9<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-built_in\">mulCurry2<\/span>(x: Int)(y:Int) = x * y<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-built_in\">mulCurry2<\/span>(<span class=\"hljs-number\">10<\/span>)(<span class=\"hljs-number\">8<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>2) \u67ef\u91cc\u5316\u7684\u5e94\u7528<br \/>\n\u6bd4\u8f83\u4e24\u4e2a\u5b57\u7b26\u4e32\u5728\u5ffd\u7565\u5927\u5c0f\u5199\u7684\u60c5\u51b5\u4e0b\u662f\u5426\u76f8\u7b49\uff0c\u6ce8\u610f\uff0c\u8fd9\u91cc\u662f\u4e24\u4e2a\u4efb\u52a1\uff1a<br \/>\n1\u3001\u5168\u90e8\u8f6c\u5927\u5199\uff08\u6216\u5c0f\u5199\uff09<br \/>\n2\u3001\u6bd4\u8f83\u662f\u5426\u76f8\u7b49<br \/>\n\u9488\u5bf9\u8fd9\u4e24\u4e2a\u64cd\u4f5c\uff0c\u6211\u4eec\u7528\u4e00\u4e2a\u51fd\u6570\u53bb\u5904\u7406\u7684\u601d\u60f3\uff0c\u5176\u5b9e\u65e0\u610f\u95f4\u4e5f\u53d8\u6210\u4e86\u4e24\u4e2a\u51fd\u6570\u5904\u7406\u7684\u601d\u60f3\u3002\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val a = <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-string\">&#8220;Hello&#8221;<\/span>, <span class=\"hljs-string\">&#8220;World&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val b = <span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-string\">&#8220;hello&#8221;<\/span>, <span class=\"hljs-string\">&#8220;world&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(a.<span class=\"hljs-title function_\">corresponds<\/span>(b)(_.<span class=\"hljs-title function_\">equalsIgnoreCase<\/span>(_)))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<p>\u5176\u4e2dcorresponds\u51fd\u6570\u7684\u6e90\u7801\u5982\u4e0b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def corresponds[B](that: GenSeq[B])(p: (A,B) =&gt; <span class=\"hljs-built_in\">Boolean<\/span>): <span class=\"hljs-built_in\">Boolean<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> i = <span class=\"hljs-keyword\">this<\/span>.iterator<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> j = that.iterator<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">while<\/span> (i.hasNext &amp;&amp; j.hasNext)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (!p(i.next(), j.next()))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">false<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">!i.hasNext &amp;&amp; !j.hasNext<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u4e0d\u8981\u8bbe\u7acb\u67ef\u91cc\u5316\u5b58\u5728\u7684\u610f\u4e49\u8fd9\u6837\u7684\u547d\u9898\uff0c\u67ef\u91cc\u5316\uff0c\u662f\u9762\u5411\u51fd\u6570\u601d\u60f3\u7684\u5fc5\u7136\u4ea7\u751f\u7ed3\u679c\u3002<\/em><\/p>\n<h2 id=\"67-\u63a7\u5236\u62bd\u8c61\"><a name=\"t62\"><\/a><a name=\"t62\"><\/a>6.7 \u63a7\u5236\u62bd\u8c61<\/h2>\n<p>\u63a7\u5236\u62bd\u8c61\u662f\u4e00\u7c7b\u51fd\u6570\uff1a<br \/>\n1\u3001\u53c2\u6570\u662f\u51fd\u6570\u3002<br \/>\n2\u3001\u51fd\u6570\u53c2\u6570\u6ca1\u6709\u8f93\u5165\u503c\u4e5f\u6ca1\u6709\u8fd4\u56de\u503c\u3002<br \/>\n1) \u4f7f\u7528\u793a\u4f8b<\/p>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">runInThread<\/span>(<span class=\"hljs-params\">f1: (<\/span>)<\/span> =&gt; Unit): Unit = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">new<\/span> Thread {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">override<\/span> def <span class=\"hljs-title\">run<\/span>(): Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">f1()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}.start()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">runInThread {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">() =&gt; println(<span class=\"hljs-string\">&#8220;\u5e72\u6d3b\u54af\uff01&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">Thread.sleep(<span class=\"hljs-number\">5000<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u5e72\u5b8c\u54af\uff01&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<p>\u662f\u4e0d\u662f\u5f88\u723d\uff1f\u662f\u4e0d\u662f\u6709\u70b9\u7c7b\u4f3c\u7ebf\u7a0b\u6c60\u7684\u611f\u89c9\uff0c\u540c\u4e00\u4e2a\u7ebf\u7a0b\uff0c\u53ef\u4ee5\u52a8\u6001\u7684\u5411\u91cc\u9762\u585e\u4e0d\u540c\u7684\u4efb\u52a1\u53bb\u6267\u884c\u3002<br \/>\n\u53ef\u4ee5\u518d\u7b80\u5316\u4e00\u4e0b\uff0c\u7701\u7565()\uff0c\u770b\u4e0b\u5982\u4e0b\u5f62\u5f0f\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">runInThread<\/span>(<span class=\"hljs-params\">f1: =&gt; Unit<\/span>): Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">new<\/span> Thread {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">override<\/span> def <span class=\"hljs-title\">run<\/span>(): Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">f1<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}.start()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">runInThread {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u5e72\u6d3b\u54af\uff01&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">Thread.sleep(<span class=\"hljs-number\">5000<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u5e72\u5b8c\u54af\uff01&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<p>2) \u8fdb\u9636\u7528\u6cd5\uff1a\u5b9e\u73b0\u7c7b\u4f3cwhile\u7684until\u51fd\u6570<\/p>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-keyword\">until<\/span>(condition: <span class=\"hljs-function\">=&gt;<\/span> <span class=\"hljs-built_in\">Boolean<\/span>)(block: <span class=\"hljs-function\">=&gt;<\/span> Unit) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (!condition) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">block<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">until<\/span>(condition)(block)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">var x = <span class=\"hljs-number\">10<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">until<\/span>(x == <span class=\"hljs-number\">0<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">x -= <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(x)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-coffeescript\"><\/code><\/pre>\n<h1 id=\"\u4e03-\u7c7b\"><a name=\"t63\"><\/a><a name=\"t63\"><\/a>\u4e03\u3001 \u7c7b<\/h1>\n<h2 id=\"71-\u7b80\u5355\u7c7b\u548c\u65e0\u53c2\u65b9\u6cd5\"><a name=\"t64\"><\/a><a name=\"t64\"><\/a>7.1 \u7b80\u5355\u7c7b\u548c\u65e0\u53c2\u65b9\u6cd5<\/h2>\n<p>\u7c7b\u7684\u5b9a\u4e49\u53ef\u4ee5\u901a\u8fc7class\u5173\u952e\u5b57\u5b9e\u73b0\uff0c\u5982\u4e0b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> unit7<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Dog<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">var<\/span> leg = <span class=\"hljs-number\">4<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">shout<\/span><\/span>(content: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(content)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">currentLeg<\/span> <\/span>= leg<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u4f7f\u7528\u8fd9\u4e2a\u7c7b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val dog = <span class=\"hljs-built_in\">new<\/span> Dog<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">dog shout <span class=\"hljs-string\">&#8220;\u6c6a\u6c6a\u6c6a&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(dog currentLeg)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u5728Scala\u4e2d\uff0c\u7c7b\u5e76\u4e0d\u58f0\u660e\u4e3aPublic\uff0c\u4e00\u4e2aScala\u6e90\u6587\u4ef6\u53ef\u4ee5\u5305\u542b\u591a\u4e2a\u7c7b\u3002\u6240\u6709\u8fd9\u4e9b\u7c7b\u90fd\u5177\u6709\u516c\u6709\u53ef\u89c1\u6027\u3002\u8c03\u7528\u65e0\u53c2\u65b9\u6cd5\u65f6\uff0c\u53ef\u4ee5\u52a0\uff08\uff09\uff0c\u4e5f\u53ef\u4ee5\u4e0d\u52a0\uff1b\u5982\u679c\u65b9\u6cd5\u5b9a\u4e49\u4e2d\u4e0d\u5e26\u62ec\u53f7\uff0c\u90a3\u4e48\u8c03\u7528\u65f6\u5c31\u4e0d\u80fd\u5e26\u62ec\u53f7\u3002<\/em><\/p>\n<h2 id=\"72-getter-setter\u65b9\u6cd5\"><a name=\"t65\"><\/a><a name=\"t65\"><\/a>7.2 Getter Setter\u65b9\u6cd5<\/h2>\n<p>\u5bf9\u4e8escala\u7c7b\u4e2d\u7684\u6bcf\u4e00\u4e2a\u5c5e\u6027\uff0c\u7f16\u8bd1\u540e\uff0c\u4f1a\u6709\u4e00\u4e2a\u79c1\u6709\u7684\u5b57\u6bb5\u548c\u76f8\u5e94\u7684getter\u3001setter\u65b9\u6cd5\u751f\u6210\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/getter<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(dog leg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/setter<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">dog.leg_=(<span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(dog currentLeg)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>\u5f53\u7136\u4e86\uff0c\u4f60\u4e5f\u53ef\u4ee5\u4e0d\u4f7f\u7528\u81ea\u52a8\u751f\u6210\u7684\u65b9\u5f0f\uff0c\u81ea\u5df1\u5b9a\u4e49getter\u548csetter\u65b9\u6cd5<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Dog2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">var<\/span> _leg = <span class=\"hljs-number\">4<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">leg<\/span> <\/span>= _leg<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">leg_=<\/span><\/span>(newLeg: <span class=\"hljs-type\">Int<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">_leg = newLeg<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u4f7f\u7528\u4e4b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val dog2 = <span class=\"hljs-built_in\">new<\/span> Dog2<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">dog2.leg_=(<span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(dog2.leg)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u81ea\u5df1\u624b\u52a8\u521b\u5efa\u53d8\u91cf\u7684getter\u548csetter\u65b9\u6cd5\u9700\u8981\u9075\u5faa\u4ee5\u4e0b\u539f\u5219\uff1a<\/em><br \/>\n<em>1) \u5b57\u6bb5\u5c5e\u6027\u540d\u4ee5\u201c_\u201d\u4f5c\u4e3a\u524d\u7f00\uff0c\u5982\uff1a_leg<\/em><br \/>\n<em>2) getter\u65b9\u6cd5\u5b9a\u4e49\u4e3a\uff1adef leg = _leg<\/em><br \/>\n<em>3) setter\u65b9\u6cd5\u5b9a\u4e49\u65f6\uff0c\u65b9\u6cd5\u540d\u4e3a\u5c5e\u6027\u540d\u53bb\u6389\u524d\u7f00\uff0c\u5e76\u52a0\u4e0a\u540e\u7f00\uff0c\u540e\u7f00\u662f\uff1a\u201cleg_=\u201d\uff0c\u5982\u4f8b\u5b50\u6240\u793a<\/em><\/p>\n<h2 id=\"73-\u5bf9\u8c61\u79c1\u6709\u5b57\u6bb5\"><a name=\"t66\"><\/a><a name=\"t66\"><\/a>7.3 \u5bf9\u8c61\u79c1\u6709\u5b57\u6bb5<\/h2>\n<p>\u53d8\u91cf\uff1aworkDetails\u5728\u5c01\u95ed\u5305professional\u4e2d\u7684\u4efb\u4f55\u7c7b\u4e2d\u53ef\u8bbf\u95ee\u3002<br \/>\n\u5c01\u95ed\u5305\uff1afriends\u7684\u4efb\u4f55\u7c7b\u90fd\u53ef\u4ee5\u88absociety\u5305\u4e2d\u4efb\u4f55\u7c7b\u8bbf\u95ee\u3002<br \/>\n\u53d8\u91cf\uff1asecrets\u53ea\u80fd\u5728\u5b9e\u4f8b\u65b9\u6cd5\u7684\u9690\u5f0f\u5bf9\u8c61(this)\u4e2d\u8bbf\u95ee\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> unit7<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> society {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> professional {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Executive<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span>[professional] <span class=\"hljs-keyword\">var<\/span> workDetails = <span class=\"hljs-literal\">null<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span>[society] <span class=\"hljs-keyword\">var<\/span> friends = <span class=\"hljs-literal\">null<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span>[<span class=\"hljs-keyword\">this<\/span>] <span class=\"hljs-keyword\">var<\/span> secrets = <span class=\"hljs-literal\">null<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def help(another: Executive) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(another.workDetails)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ println(another.secrets) \u62a5\u9519\uff1a\u8bbf\u95ee\u4e0d\u5230<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"74-bean\u5c5e\u6027\"><a name=\"t67\"><\/a><a name=\"t67\"><\/a>7.4 Bean\u5c5e\u6027<\/h2>\n<p>JavaBeans\u89c4\u8303\u5b9a\u4e49\u4e86Java\u7684\u5c5e\u6027\u662f\u50cfgetXXX\uff08\uff09\u548csetXXX\uff08\uff09\u7684\u65b9\u6cd5\u3002\u8bb8\u591aJava\u5de5\u5177\u90fd\u4f9d\u8d56\u8fd9\u4e2a\u547d\u540d\u4e60\u60ef\u3002\u4e3a\u4e86Java\u7684\u4e92\u64cd\u4f5c\u6027\u3002\u5c06Scala\u5b57\u6bb5\u52a0@BeanProperty\u65f6\uff0c\u8fd9\u6837\u7684\u65b9\u6cd5\u4f1a\u81ea\u52a8\u751f\u6210\u3002<br \/>\n1) \u521b\u5efa\u4e00\u4e2aBean\uff0c\u4f7f\u7528@BeanProperty\u6ce8\u89e3\u6807\u8bc6\u67d0\u4e2a\u5c5e\u6027\u53d8\u91cf<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> unit7<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.beans.BeanProperty<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@BeanProperty<\/span> <span class=\"hljs-keyword\">var<\/span> name: String = _<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>2) \u901a\u8fc7getName\u3001setName\u8bbf\u95ee\u5c5e\u6027<\/p>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">person<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Person<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">person.setName(<span class=\"hljs-string\">&#8220;Nick&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">person.getName<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span><span class=\"hljs-params\">(person.name)<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a<\/em><br \/>\n<em>Person\u5c06\u4f1a\u751f\u6210\u56db\u4e2a\u65b9\u6cd5\uff1a<\/em><br \/>\n<em>\u2014\u2014 name:String<\/em><br \/>\n<em>\u2014\u2014 name_=(newValue:String): Unit<\/em><br \/>\n<em>\u2014\u2014 getName():String<\/em><br \/>\n<em>\u2014\u2013 setName(newValue:String):Unit<\/em><\/p>\n<h2 id=\"75-\u6784\u9020\u5668\"><a name=\"t68\"><\/a><a name=\"t68\"><\/a>7.5 \u6784\u9020\u5668<\/h2>\n<p>scala\u4e2d\u6784\u9020\u5206\u4e3a\u4e3b\u6784\u9020\u5668\u548c\u8f85\u52a9\u6784\u9020\u5668<br \/>\n1) \u4e3b\u6784\u9020\u7684\u53c2\u6570\u76f4\u63a5\u653e\u7f6e\u4e8e\u7c7b\u540d\u4e4b\u540e<br \/>\n\u5b9a\u4e49\u7c7b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ClassConstructor<\/span> <\/span>(<span class=\"hljs-keyword\">var<\/span> name: String, <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">var<\/span> price: <span class=\"hljs-built_in\">Double<\/span>){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def myPrintln = println(name + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + price)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>\u6267\u884c\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> classConstructor = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ClassConstructor<\/span>(<span class=\"hljs-string\">&#8220;\u300a\u50b2\u6162\u4e0e\u504f\u89c1\u300b&#8221;<\/span>, <span class=\"hljs-number\">20.5<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">classConstructor.myPrintln<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>2) \u4e3b\u6784\u9020\u5668\u4f1a\u6267\u884c\u7c7b\u5b9a\u4e49\u4e2d\u7684\u6240\u6709\u8bed\u53e5<br \/>\n\u5b9a\u4e49\u7c7b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ClassConstructor2<\/span><\/span>(<span class=\"hljs-keyword\">val<\/span> name: String = <span class=\"hljs-string\">&#8220;&#8221;<\/span>, <span class=\"hljs-keyword\">val<\/span> price: <span class=\"hljs-built_in\">Double<\/span> = <span class=\"hljs-number\">0<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(name + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + price)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>\u6267\u884c\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> classConstructor2 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ClassConstructor2<\/span>(<span class=\"hljs-string\">&#8220;aa&#8221;<\/span>, <span class=\"hljs-number\">20<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> classConstructor2_2 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ClassConstructor2<\/span>()<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>3) \u901a\u8fc7private\u8bbe\u7f6e\u7684\u4e3b\u6784\u9020\u5668\u7684\u79c1\u6709\u5c5e\u6027<br \/>\n\u53c2\u80031)<br \/>\n4) \u5982\u679c\u4e0d\u5e26val\u548cvar\u7684\u53c2\u6570\u81f3\u5c11\u88ab\u4e00\u4e2a\u65b9\u6cd5\u4f7f\u7528\uff0c\u8be5\u53c2\u6570\u5c06\u81ea\u52a8\u5347\u7ea7\u4e3a\u5b57\u6bb5\uff0c\u8fd9\u65f6\uff0cname\u548cprice\u5c31\u53d8\u6210\u4e86\u7c7b\u7684\u4e0d\u53ef\u53d8\u5b57\u6bb5\uff0c\u800c\u4e14\u8fd9\u4e24\u4e2a\u5b57\u6bb5\u662f\u5bf9\u8c61\u79c1\u6709\u7684\uff0c\u8fd9\u7c7b\u4f3c\u4e8e private[this] val \u5b57\u6bb5\u7684\u6548\u679c\u3002<br \/>\n\u5426\u5219\uff0c\u8be5\u53c2\u6570\u5c06\u4e0d\u88ab\u4fdd\u5b58\u4e3a\u5b57\u6bb5\uff0c\u5373\u5b9e\u4f8b\u5316\u8be5\u5bf9\u8c61\u65f6\u4f20\u5165\u7684\u53c2\u6570\u503c\uff0c\u4e0d\u4f1a\u88ab\u4fdd\u7559\u5728\u5b9e\u4f8b\u5316\u540e\u7684\u5bf9\u8c61\u4e4b\u4e2d\u3002<\/p>\n<div class=\"table-box\">\n<table>\n<thead>\n<tr>\n<th>\u4e3b\u6784\u9020\u5668\u53c2\u6570<\/th>\n<th>\u751f\u6210\u7684\u5b57\u6bb5\/\u65b9\u6cd5<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>name: String<\/td>\n<td>\u5bf9\u8c61\u79c1\u6709\u5b57\u6bb5\u3002\u5982\u679c\u6ca1\u6709\u65b9\u6cd5\u4f7f\u7528name, \u5219\u6ca1\u6709\u8be5\u5b57\u6bb5<\/td>\n<\/tr>\n<tr>\n<td>private val\/var name: String<\/td>\n<td>\u79c1\u6709\u5b57\u6bb5\uff0c\u79c1\u6709\u7684getter\u548csetter\u65b9\u6cd5<\/td>\n<\/tr>\n<tr>\n<td>var name: String<\/td>\n<td>\u79c1\u6709\u5b57\u6bb5\uff0c\u516c\u6709\u7684getter\u548csetter\u65b9\u6cd5<\/td>\n<\/tr>\n<tr>\n<td>@BeanProperty val\/var name: String<\/td>\n<td>\u79c1\u6709\u5b57\u6bb5\uff0c\u516c\u6709\u7684Scala\u7248\u548cJava\u7248\u7684getter\u548csetter\u65b9\u6cd5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u5982\u679c\u60f3\u8ba9\u4e3b\u6784\u9020\u5668\u53d8\u6210\u79c1\u6709\u7684\uff0c\u53ef\u4ee5\u5728()\u4e4b\u524d\u52a0\u4e0aprivate\uff0c\u8fd9\u6837\u7528\u6237\u53ea\u80fd\u901a\u8fc7\u8f85\u52a9\u6784\u9020\u5668\u6765\u6784\u9020\u5bf9\u8c61\u4e86<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <span class=\"hljs-keyword\">private<\/span> <\/span>() {...}<\/code><\/pre>\n<p>5) \u8f85\u52a9\u6784\u9020\u5668\u540d\u79f0\u4e3athis\uff0c\u901a\u8fc7\u4e0d\u540c\u53c2\u6570\u8fdb\u884c\u533a\u5206\uff0c\u6bcf\u4e00\u4e2a\u8f85\u52a9\u6784\u9020\u5668\u90fd\u5fc5\u987b\u4ee5\u4e3b\u6784\u9020\u5668\u6216\u8005\u5df2\u7ecf\u5b9a\u4e49\u7684\u8f85\u52a9\u6784\u9020\u5668\u7684\u8c03\u7528\u5f00\u59cb<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">var<\/span> name = <span class=\"hljs-string\">&#8220;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">var<\/span> age = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-keyword\">this<\/span>(name: String) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">this<\/span>()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">this<\/span>.name = name<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-keyword\">this<\/span>(name: String, age: <span class=\"hljs-built_in\">Int<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">this<\/span>(name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">this<\/span>.age = age<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def description = name + <span class=\"hljs-string\">&#8221; is &#8220;<\/span> + age + <span class=\"hljs-string\">&#8221; years old&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"76-\u5d4c\u5957\u7c7b\"><a name=\"t69\"><\/a><a name=\"t69\"><\/a>7.6 \u5d4c\u5957\u7c7b<\/h2>\n<p>\u5373\uff0c\u5728class\u4e2d\uff0c\u518d\u5b9a\u4e49\u4e00\u4e2aclass\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002<br \/>\nJava\u4e2d\u7684\u5185\u90e8\u7c7b\u4ece\u5c5e\u4e8e\u5916\u90e8\u7c7b\u3002Scala\u4e2d\u5185\u90e8\u7c7b\u4ece\u5c5e\u4e8e\u5b9e\u4f8b\u3002<br \/>\n1) \u521b\u5efa\u4e00\u4e2a\u5d4c\u5957\u7c7b\uff0c\u6a21\u62df\u5c40\u57df\u7f51\u7684\u804a\u5929\u573a\u666f<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.mutable.<span class=\"hljs-type\">ArrayBuffer<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5d4c\u5957\u7c7b<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Network<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Member<\/span>(<span class=\"hljs-params\">val name: <span class=\"hljs-type\">String<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> contacts = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ArrayBuffer<\/span>[<span class=\"hljs-type\">Member<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">val<\/span> members = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ArrayBuffer<\/span>[<span class=\"hljs-type\">Member<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">join<\/span><\/span>(name: <span class=\"hljs-type\">String<\/span>) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> m = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Member<\/span>(name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">members += m<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">m<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>2) \u4f7f\u7528\u8be5\u5d4c\u5957\u7c7b<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u521b\u5efa\u4e24\u4e2a\u5c40\u57df\u7f51<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> chatter1 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Network<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> chatter2 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Network<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Fred \u548c Wilma\u52a0\u5165\u5c40\u57df\u7f511<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> fred = chatter1.join(<span class=\"hljs-string\">&#8220;Fred&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> wilma = chatter1.join(<span class=\"hljs-string\">&#8220;Wilma&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Barney\u52a0\u5165\u5c40\u57df\u7f512<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> barney = chatter2.join(<span class=\"hljs-string\">&#8220;Barney&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Fred\u5c06\u540c\u5c5e\u4e8e\u5c40\u57df\u7f511\u4e2d\u7684Wilma\u6dfb\u52a0\u4e3a\u8054\u7cfb\u4eba<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">fred.contacts += wilma<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/fred.contacts += barney \/\/\u8fd9\u6837\u505a\u662f\u4e0d\u884c\u7684\uff0cFred\u548cBarney\u4e0d\u5c5e\u4e8e\u540c\u4e00\u4e2a\u5c40\u57df\u7f51\uff0c\u5373\uff0cFred\u548cBarney\u4e0d\u662f\u540c\u4e00\u4e2aclass Member\u5b9e\u4f8b\u5316\u51fa\u6765\u7684\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u5728Scala\u4e2d\uff0c\u6bcf\u4e2a\u5b9e\u4f8b\u90fd\u6709\u5b83\u81ea\u5df1\u7684Member\u7c7b\uff0c\u5c31\u548c\u4ed6\u4eec\u6709\u81ea\u5df1\u7684members\u5b57\u6bb5\u4e00\u6837\u3002\u4e5f\u5c31\u662f\u8bf4\uff0cchatter1.Member\u548cchatter2.Member\u662f\u4e0d\u540c\u7684\u4e24\u4e2a\u7c7b\u3002\u4e5f\u5c31\u662f\u6240\u8c13\u7684\uff1a\u8def\u5f84\u4f9d\u8d56\u7c7b\u578b\uff0c\u6b64\u5904\u9700\u8981\u8be6\u7ec6\u89e3\u91ca\u4e4b\u3002<br \/>\n\u5982\u679c\u60f3\u8ba9members\u63a5\u53d7\u6240\u6709\u5b9e\u4f8b\u7684Member\uff0c\u4e00\u822c\u6709\u4e24\u79cd\u529e\u6cd5\uff1a<br \/>\n1) \u5c06Member\u4f5c\u4e3aNetwork\u7684\u4f34\u751f\u5bf9\u8c61\u5b58\u5728<br \/>\n\u521b\u5efa\u7c7b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.mutable.<span class=\"hljs-type\">ArrayBuffer<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u4f34\u751f\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Network2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">val<\/span> members = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ArrayBuffer<\/span>[<span class=\"hljs-type\">Network2<\/span>.<span class=\"hljs-type\">Member<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">join<\/span><\/span>(name: <span class=\"hljs-type\">String<\/span>) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> m = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Network2<\/span>.<span class=\"hljs-type\">Member<\/span>(name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">members += m<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">m<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">description<\/span> <\/span>= <span class=\"hljs-string\">&#8220;\u8be5\u5c40\u57df\u7f51\u4e2d\u7684\u8054\u7cfb\u4eba\uff1a&#8221;<\/span> +<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">(<span class=\"hljs-keyword\">for<\/span> (m &lt;- members) <span class=\"hljs-keyword\">yield<\/span> m.description).mkString(<span class=\"hljs-string\">&#8220;, &#8220;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Network2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Member<\/span>(<span class=\"hljs-params\">val name: <span class=\"hljs-type\">String<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> contacts = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ArrayBuffer<\/span>[<span class=\"hljs-type\">Member<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">description<\/span> <\/span>= name + <span class=\"hljs-string\">&#8220;\u7684\u8054\u7cfb\u4eba\uff1a&#8221;<\/span> +<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">(<span class=\"hljs-keyword\">for<\/span> (c &lt;- contacts) <span class=\"hljs-keyword\">yield<\/span> c.name).mkString(<span class=\"hljs-string\">&#8221; &#8220;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u4f7f\u7528\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">chatter3<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Network2<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">chatter4<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Network2<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Fred \u548c Wilma\u52a0\u5165\u5c40\u57df\u7f511<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">fred2<\/span> <span class=\"hljs-operator\">=<\/span> chatter3.join(<span class=\"hljs-string\">&#8220;Fred&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">wilma2<\/span> <span class=\"hljs-operator\">=<\/span> chatter3.join(<span class=\"hljs-string\">&#8220;Wilma&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Barney\u52a0\u5165\u5c40\u57df\u7f512<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">barney2<\/span> <span class=\"hljs-operator\">=<\/span> chatter4.join(<span class=\"hljs-string\">&#8220;Barney&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Fred\u5c06\u540c\u5c5e\u4e8e\u5c40\u57df\u7f513\u4e2d\u7684Wilma\u6dfb\u52a0\u4e3a\u8054\u7cfb\u4eba<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">fred2.contacts += wilma2<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Fred\u5c06\u4e0d\u540c\u5c5e\u4e8e\u5c40\u57df\u7f513\u4e2d\uff0c\u5c5e\u4e8e\u5c40\u57df\u7f514\u4e2d\u7684\u7684Wilma\u6dfb\u52a0\u4e3a\u8054\u7cfb\u4eba<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">fred2.contacts += barney2<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span><span class=\"hljs-params\">(chatter3.description)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(chatter4.description)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(fred2.description)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(wilma2.description)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(barney2.description)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<p>2) \u4f7f\u7528\u7c7b\u578b\u6295\u5f71\uff0c\u6ce8\u610f\u7559\u610f\u5173\u952e\u7b26\u53f7\uff1a\u201c#\u201d<br \/>\n\u521b\u5efa\u7c7b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.mutable.<span class=\"hljs-type\">ArrayBuffer<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u6295\u5f71<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Network3<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Member<\/span>(<span class=\"hljs-params\">val name: <span class=\"hljs-type\">String<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> contacts = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ArrayBuffer<\/span>[<span class=\"hljs-type\">Network3<\/span>#<span class=\"hljs-type\">Member<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">val<\/span> members = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ArrayBuffer<\/span>[<span class=\"hljs-type\">Member<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">join<\/span><\/span>(name: <span class=\"hljs-type\">String<\/span>) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> m = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Member<\/span>(name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">members += m<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">m<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u4f7f\u7528\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> chatter5 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Network3<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> chatter6 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Network3<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Fred \u548c Wilma\u52a0\u5165\u5c40\u57df\u7f511<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> fred3 = chatter5.join(<span class=\"hljs-string\">&#8220;Fred&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> wilma3 = chatter5.join(<span class=\"hljs-string\">&#8220;Wilma&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/Barney\u52a0\u5165\u5c40\u57df\u7f512<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> barney3 = chatter6.join(<span class=\"hljs-string\">&#8220;Barney&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">fred3.contacts += wilma3<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u4e0eJava\u4e00\u6837\uff0c\u5728\u5d4c\u5957\u7c7b\u4e2d\uff0c\u5982\u679c\u60f3\u5f97\u5230\u5916\u90e8\u7c7b\u7684\u5b9e\u4f8b\u5316\u5bf9\u8c61\u7684\u5f15\u7528\uff0c\u53ef\u4ee5\u4f7f\u7528\u201c\u5916\u90e8\u7c7b.this\u201d\u7684\u65b9\u5f0f\u5f97\u5230\u3002<\/em><\/p>\n<h1 id=\"\u516b-\u5bf9\u8c61\"><a name=\"t70\"><\/a><a name=\"t70\"><\/a>\u516b\u3001 \u5bf9\u8c61<\/h1>\n<h2 id=\"81-\u5355\u4f8b\u5bf9\u8c61\"><a name=\"t71\"><\/a><a name=\"t71\"><\/a>8.1 \u5355\u4f8b\u5bf9\u8c61<\/h2>\n<p>Scala\u4e2d\u6ca1\u6709\u9759\u6001\u65b9\u6cd5\u548c\u9759\u6001\u5b57\u6bb5\uff0c\u53ef\u4ee5\u7528object\u8fd9\u4e2a\u8bed\u6cd5\u7ed3\u6784\u6765\u8fbe\u5230\u540c\u6837\u7684\u76ee\u7684\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">object<\/span> Dog {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u5df2\u521d\u59cb\u5316&#8230;&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">var<\/span> leg = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">plus<\/span>()<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">leg += <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">leg<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<p>\u5bf9\u8c61\u7684\u6784\u9020\u5668\u5728\u8be5\u5bf9\u8c61\u7b2c\u4e00\u6b21\u4f7f\u7528\u65f6\u8c03\u7528\u3002\u5982\u679c\u5bf9\u8c61\u6ca1\u6709\u4f7f\u7528\u8fc7\uff0c\u4ed6\u7684\u6784\u9020\u5668\u4e5f\u4e0d\u4f1a\u88ab\u6267\u884c\u3002<br \/>\n\u5bf9\u8c61\u57fa\u672c\u5177\u6709\u7c7b\u7684\u6240\u6709\u7279\u6027\uff0c\u5c31\u662f\u4e00\u70b9\uff0c\u4f60\u4e0d\u80fd\u8bbe\u7f6e\u6784\u9020\u5668\u7684\u53c2\u6570\u3002<\/p>\n<h2 id=\"82-\u4f34\u751f\u5bf9\u8c61\"><a name=\"t72\"><\/a><a name=\"t72\"><\/a>8.2 \u4f34\u751f\u5bf9\u8c61<\/h2>\n<p>Java\u4e2d\u7684\u7c7b\u53ef\u4ee5\u65e2\u6709\u5b9e\u4f8b\u65b9\u6cd5\u53c8\u6709\u9759\u6001\u65b9\u6cd5\uff0cScala\u4e2d\u53ef\u4ee5\u901a\u8fc7\u4f34\u751f\u5bf9\u8c61\u8fdb\u884c\u5b9e\u73b0\u3002\u5982\u4e0b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Cat<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> hair = <span class=\"hljs-type\">Cat<\/span>.growHair<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">var<\/span> name = <span class=\"hljs-string\">&#8220;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">changeName<\/span><\/span>(name: <span class=\"hljs-type\">String<\/span>) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">this<\/span>.name = name<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">describe<\/span> <\/span>= println(<span class=\"hljs-string\">&#8220;hair:&#8221;<\/span> + hair + <span class=\"hljs-string\">&#8220;name:&#8221;<\/span> + name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Cat<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">var<\/span> hair = <span class=\"hljs-number\">0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">growHair<\/span> <\/span>= {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">hair += <span class=\"hljs-number\">1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">hair<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u6d4b\u8bd5\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> cat1 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Cat<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> cat2 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Cat<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">cat1.changeName(<span class=\"hljs-string\">&#8220;\u9ed1\u732b&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">cat2.changeName(<span class=\"hljs-string\">&#8220;\u767d\u732b&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">cat1.describe<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">cat2.describe<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u7c7b\u548c\u5b83\u7684\u4f34\u751f\u5bf9\u8c61\u53ef\u4ee5\u76f8\u4e92\u8bbf\u95ee\u79c1\u6709\u7279\u6027\uff0c\u4ed6\u4eec\u5fc5\u987b\u5b58\u5728\u540c\u4e00\u4e2a\u6e90\u6587\u4ef6\u4e2d\u3002\u5fc5\u987b\u540c\u540d<\/em><\/p>\n<h2 id=\"83-apply\u65b9\u6cd5\"><a name=\"t73\"><\/a><a name=\"t73\"><\/a>8.3 Apply\u65b9\u6cd5<\/h2>\n<p>1) apply\u65b9\u6cd5\u4e00\u822c\u90fd\u58f0\u660e\u5728\u4f34\u751f\u7c7b\u5bf9\u8c61\u4e2d\uff0c\u53ef\u4ee5\u7528\u6765\u5b9e\u4f8b\u5316\u4f34\u751f\u7c7b\u7684\u5bf9\u8c61\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Man<\/span> <span class=\"hljs-title function_\">private<\/span>(<span class=\"hljs-params\">val sex: <span class=\"hljs-built_in\">String<\/span>, name: <span class=\"hljs-built_in\">String<\/span><\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def describe = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(<span class=\"hljs-string\">&#8220;Sex:&#8221;<\/span> + sex + <span class=\"hljs-string\">&#8220;name:&#8221;<\/span> + name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">object<\/span> <span class=\"hljs-title class_\">Man<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-title function_\">apply<\/span>(<span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-title class_\">String<\/span>) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Man<\/span>(<span class=\"hljs-string\">&#8220;\u7537&#8221;<\/span>, name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<p>\u6d4b\u8bd5\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> man1 = Man(<span class=\"hljs-string\">&#8220;Nick&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> man2 = Man(<span class=\"hljs-string\">&#8220;Thomas&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">man1.describe<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">man2.describe<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>2) \u4e5f\u53ef\u4ee5\u7528\u6765\u5b9e\u73b0\u5355\u4f8b\u6a21\u5f0f\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5bf9\u4e0a\u8ff0\u5217\u5b50\u7a0d\u52a0\u6539\u8fdb\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Man<\/span> <span class=\"hljs-title function_\">private<\/span>(<span class=\"hljs-params\">val sex: <span class=\"hljs-built_in\">String<\/span>, name: <span class=\"hljs-built_in\">String<\/span><\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def describe = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(<span class=\"hljs-string\">&#8220;Sex:&#8221;<\/span> + sex + <span class=\"hljs-string\">&#8220;name:&#8221;<\/span> + name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">object<\/span> <span class=\"hljs-title class_\">Man<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> <span class=\"hljs-attr\">instance<\/span>: <span class=\"hljs-title class_\">Man<\/span> = <span class=\"hljs-literal\">null<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-title function_\">apply<\/span>(<span class=\"hljs-attr\">name<\/span>: <span class=\"hljs-title class_\">String<\/span>) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(instance == <span class=\"hljs-literal\">null<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">instance = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Man<\/span>(<span class=\"hljs-string\">&#8220;\u7537&#8221;<\/span>, name)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">instance<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<p>\u6d4b\u8bd5\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> man1 = Man(<span class=\"hljs-string\">&#8220;Nick&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> man2 = Man(<span class=\"hljs-string\">&#8220;Thomas&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">man1.describe<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">man2.describe<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"84-\u5e94\u7528\u7a0b\u5e8f\u5bf9\u8c61\"><a name=\"t74\"><\/a><a name=\"t74\"><\/a>8.4 \u5e94\u7528\u7a0b\u5e8f\u5bf9\u8c61<\/h2>\n<p>\u6bcf\u4e00\u4e2aScala\u5e94\u7528\u7a0b\u5e8f\u90fd\u9700\u8981\u4ece\u4e00\u4e2a\u5bf9\u8c61\u7684main\u65b9\u6cd5\u5f00\u59cb\u6267\u884c\uff0c\u8fd9\u4e2a\u65b9\u6cd5\u7684\u7c7b\u578b\u4e3aArray[String]=&gt;Unit\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">object<\/span> <span class=\"hljs-title class_\">Hello<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-title function_\">main<\/span>(<span class=\"hljs-params\">args: <span class=\"hljs-built_in\">Array<\/span>[<span class=\"hljs-built_in\">String<\/span>]<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(<span class=\"hljs-string\">&#8220;Hello, World!&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<p>\u6216\u8005\u6269\u5c55\u4e00\u4e2aApp\u7279\u8d28\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Hello<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (args.length &gt; <span class=\"hljs-number\">0<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;Hello, &#8220;<\/span> + args(<span class=\"hljs-number\">0<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;Hello, World!&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"85-\u679a\u4e3e\"><a name=\"t75\"><\/a><a name=\"t75\"><\/a>8.5 \u679a\u4e3e<\/h2>\n<p>Scala\u4e2d\u6ca1\u6709\u679a\u4e3e\u7c7b\u578b\uff0c\u5b9a\u4e49\u4e00\u4e2a\u6269\u5c55Enumeration\u7c7b\u7684\u5bf9\u8c61\uff0c\u5e76\u4ee5value\u8c03\u7528\u521d\u59cb\u5316\u679a\u4e3e\u4e2d\u7684\u6240\u6709\u53ef\u80fd\u503c\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">TrafficLightColor<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Enumeration<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> <span class=\"hljs-type\">Red<\/span> = <span class=\"hljs-type\">Value<\/span>(<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-string\">&#8220;Stop&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> <span class=\"hljs-type\">Yellow<\/span> = <span class=\"hljs-type\">Value<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">&#8220;Slow&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> <span class=\"hljs-type\">Green<\/span> = <span class=\"hljs-type\">Value<\/span>(<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-string\">&#8220;Go&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u6d4b\u8bd5\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(TrafficLightColor.Red)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(TrafficLightColor.Red.id)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(TrafficLightColor.Yellow)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(TrafficLightColor.Yellow.id)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(TrafficLightColor.Green)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(TrafficLightColor.Green.id)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<h1 id=\"\u4e5d-\u5305\u548c\u5f15\u7528\"><a name=\"t76\"><\/a><a name=\"t76\"><\/a>\u4e5d\u3001 \u5305\u548c\u5f15\u7528<\/h1>\n<h2 id=\"91-\u5305\u4f5c\u7528\u57df\"><a name=\"t77\"><\/a><a name=\"t77\"><\/a>9.1 \u5305\/\u4f5c\u7528\u57df<\/h2>\n<p>\u5728Java\u548cScala\u4e2d\u7ba1\u7406\u9879\u76ee\u53ef\u4ee5\u4f7f\u7528\u5305\u7ed3\u6784\uff0cC\u548cC#\u4f7f\u7528\u547d\u540d\u7a7a\u95f4\u3002<br \/>\n\u5bf9\u4e8epackage\uff0c\u6709\u5982\u4e0b\u51e0\u79cd\u5f62\u5f0f\uff1a<br \/>\n1) \u5f62\u5f0f\u4f53\u73b0\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> com.nick.impatient.people<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> name = <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def play(message: String): <span class=\"hljs-built_in\">Unit<\/span> ={<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>\u7b49\u540c\u4e8e\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> com.nick.impatient<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> people<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> name = <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def play(message: String): <span class=\"hljs-built_in\">Unit<\/span> ={<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>\u7b49\u540c\u4e8e\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> com.nick.impatient{<span class=\"hljs-comment\">\/\/ com\u548ccom.nick\u7684\u6210\u5458\u5728\u8fd9\u91cc\u4e0d\u53ef\u89c1<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> people{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> name = <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def play(message: String): <span class=\"hljs-built_in\">Unit<\/span> ={<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u4f4d\u4e8e\u6587\u4ef6\u9876\u90e8\u4e0d\u5e26\u82b1\u62ec\u53f7\u7684\u5305\u58f0\u660e\u5728\u6574\u4e2a\u6587\u4ef6\u8303\u56f4\u5185\u6709\u6548\u3002<\/em><br \/>\n\u901a\u8fc7\u4ee5\u4e0a\u5f62\u5f0f\uff0c\u53d1\u51fa\u603b\u7ed3\uff1a<br \/>\n1\u3001\u5305\u4e5f\u53ef\u4ee5\u50cf\u5185\u90e8\u7c7b\u90a3\u6837\u5d4c\u5957\uff0c\u4f5c\u7528\u57df\u539f\u5219\uff1a\u53ef\u4ee5\u76f4\u63a5\u5411\u4e0a\u8bbf\u95ee\u3002\u5373\uff0c\u5b50package\u4e2d\u76f4\u63a5\u8bbf\u95ee\u7236package\u4e2d\u7684\u5185\u5bb9\u3002(\u5373\uff1a\u4f5c\u7528\u57df)<br \/>\n2\u3001\u5305\u5bf9\u8c61\u53ef\u4ee5\u6301\u6709\u51fd\u6570\u548c\u53d8\u91cf<br \/>\n3\u3001\u5f15\u5165\u8bed\u53e5\u53ef\u4ee5\u5f15\u5165\u5305\u3001\u7c7b\u548c\u5bf9\u8c61<br \/>\n4\u3001\u6e90\u6587\u4ef6\u7684\u76ee\u5f55\u548c\u5305\u4e4b\u95f4\u5e76\u6ca1\u6709\u5f3a\u5236\u7684\u5173\u8054\u5173\u7cfb<br \/>\n5\u3001\u53ef\u4ee5\u5728\u540c\u4e00\u4e2a.scala\u6587\u4ef6\u4e2d\uff0c\u58f0\u660e\u591a\u4e2a\u5e76\u5217\u7684package<br \/>\n6\u3001\u5305\u540d\u53ef\u4ee5\u76f8\u5bf9\u4e5f\u53ef\u4ee5\u7edd\u5bf9\uff0c\u6bd4\u5982\uff0c\u8bbf\u95eeArrayBuffer\u7684\u7edd\u5bf9\u8def\u5f84\u662f\uff1a<em>root<\/em>.scala.collection.mutable.ArrayBuffer<\/p>\n<h2 id=\"92-\u5305\u5bf9\u8c61\"><a name=\"t78\"><\/a><a name=\"t78\"><\/a>9.2 \u5305\u5bf9\u8c61<\/h2>\n<p>\u5305\u53ef\u4ee5\u5305\u542b\u7c7b\u3001\u5bf9\u8c61\u548c\u7279\u8d28\uff0c\u4f46\u4e0d\u80fd\u5305\u542b\u51fd\u6570\u6216\u53d8\u91cf\u7684\u5b9a\u4e49\u3002\u5f88\u4e0d\u5e78\uff0c\u8fd9\u662fJava\u865a\u62df\u673a\u7684\u5c40\u9650\u3002\u628a\u5de5\u5177\u51fd\u6570\u6216\u5e38\u91cf\u6dfb\u52a0\u5230\u5305\u800c\u4e0d\u662f\u67d0\u4e2aUtils\u5bf9\u8c61\uff0c\u8fd9\u662f\u66f4\u52a0\u5408\u7406\u7684\u505a\u6cd5\u3002\u5305\u5bf9\u8c61\u7684\u51fa\u73b0\u6b63\u662f\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u5c40\u9650\u3002\u6bcf\u4e2a\u5305\u90fd\u53ef\u4ee5\u6709\u4e00\u4e2a\u5305\u5bf9\u8c61\u3002\u4f60\u9700\u8981\u5728\u7236\u5305\u4e2d\u5b9a\u4e49\u5b83\uff0c\u4e14\u540d\u79f0\u4e0e\u5b50\u5305\u4e00\u6837\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> com.nick.impatient<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> <span class=\"hljs-keyword\">object<\/span> people {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> defaultName = <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> people {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> name = defaultName <span class=\"hljs-comment\">\/\/ \u4ece\u5305\u5bf9\u8c61\u62ff\u5230\u7684\u5e38\u7f6e<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"93-\u5305\u53ef\u89c1\u6027\"><a name=\"t79\"><\/a><a name=\"t79\"><\/a>9.3 \u5305\u53ef\u89c1\u6027<\/h2>\n<p>\u5728Java\u4e2d\uff0c\u6ca1\u6709\u88ab\u58f0\u660e\u4e3apublic\u3001private\u6216protected\u7684\u7c7b\u6210\u5458\u5728\u5305\u542b\u8be5\u7c7b\u7684\u5305\u4e2d\u53ef\u89c1\u3002\u5728Scala\u4e2d\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u4fee\u9970\u7b26\u8fbe\u5230\u540c\u6837\u7684\u6548\u679c\u3002\u4ee5\u4e0b\u65b9\u6cd5\u5728\u5b83\u81ea\u5df1\u7684\u5305\u4e2d\u53ef\u89c1\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-groovy\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> com.nick.impatient.people<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">private<\/span>[people] <span class=\"hljs-keyword\">def<\/span> description=<span class=\"hljs-string\">&#8220;\u4eba\u7684\u540d\u5b57\uff1a&#8221;<\/span> + name<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-groovy\"><\/code><\/pre>\n<p>\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u5c06\u53ef\u89c1\u5ea6\u5ef6\u5c55\u5230\u4e0a\u5c42\u5305\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-groovy\"><span class=\"hljs-keyword\">private<\/span>[impatient] <span class=\"hljs-keyword\">def<\/span> description=<span class=\"hljs-string\">\"\u4eba\u7684\u540d\u5b57\uff1a\"<\/span> + name<\/code><\/pre>\n<h2 id=\"94-\u5f15\u5165\"><a name=\"t80\"><\/a><a name=\"t80\"><\/a>9.4 \u5f15\u5165<\/h2>\n<p>\u5728Scala\u4e2d\uff0cimport\u8bed\u53e5\u53ef\u4ee5\u51fa\u73b0\u5728\u4efb\u4f55\u5730\u65b9\uff0c\u5e76\u4e0d\u4ec5\u9650\u4e8e\u6587\u4ef6\u9876\u90e8\u3002import\u8bed\u53e5\u7684\u6548\u679c\u4e00\u76f4\u5ef6\u4f38\u5230\u5305\u542b\u8be5\u8bed\u53e5\u7684\u5757\u672b\u5c3e\uff1a\u8fd9\u662f\u4e2a\u5f88\u6709\u7528\u7684\u7279\u6027\uff0c\u5c24\u5176\u662f\u5bf9\u4e8e\u901a\u914d\u5f15\u5165\u800c\u8a00\u3002\u4ece\u591a\u4e2a\u6e90\u5f15\u5165\u5927\u91cf\u540d\u79f0\u603b\u662f\u8ba9\u4eba\u62c5\u5fc3\u3002\u4e8b\u5b9e\u4e0a\uff0c\u6709\u4e9bJava\u7a0b\u5e8f\u5458\u7279\u522b\u4e0d\u559c\u6b22\u901a\u914d\u5f15\u5165\uff0c\u4ee5\u81f3\u4e8e\u4ece\u4e0d\u4f7f\u7528\u8fd9\u4e2a\u7279\u6027\uff0c\u800c\u662f\u8ba9IDE\u5e2e\u4ed6\u4eec\u751f\u6210\u4e00\u957f\u4e32\u5f15\u5165\u8bed\u53e5\u3002\u901a\u8fc7\u5c06\u5f15\u5165\u653e\u7f6e\u5728\u9700\u8981\u8fd9\u4e9b\u5f15\u5165\u7684\u5730\u65b9\uff0c\u4f60\u53ef\u4ee5\u5927\u5e45\u51cf\u5c11\u53ef\u80fd\u7684\u540d\u79f0\u51b2\u7a81\u3002<\/p>\n<h2 id=\"95-\u91cd\u547d\u540d\u548c\u9690\u85cf\u65b9\u6cd5\"><a name=\"t81\"><\/a><a name=\"t81\"><\/a>9.5 \u91cd\u547d\u540d\u548c\u9690\u85cf\u65b9\u6cd5<\/h2>\n<p>1) \u91cd\u547d\u540d\uff1a<br \/>\n\u5982\u679c\u4f60\u60f3\u8981\u5f15\u4eba\u5305\u4e2d\u7684\u51e0\u4e2a\u6210\u5458\uff0c\u53ef\u4ee5\u50cf\u8fd9\u6837\u4f7f\u7528\u9009\u53d6\u5668( selector)\uff0c\u800c\u4e14\u9009\u53d6\u7684\u540c\u65f6\uff0c\u53ef\u4ee5\u91cd\u547d\u540d\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.util.{ HashMap=&gt;JavaHashMap, List}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.mutable._<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p>\u8fd9\u6837\u4e00\u6765\uff0cJavaHashMap\u5c31\u662fjava.utiI.HashMap\uff0c\u800cHashMap\u5219\u5bf9\u5e94<\/p>\n<pre class=\"has\"><code class=\"hljs language-cpp\">scala.collection.<span class=\"hljs-keyword\">mutable<\/span>.HashMap\u3002<\/code><\/pre>\n<p>2) \u9690\u85cf\uff1a<br \/>\n\u9009\u53d6\u5668HashMap =&gt;_\u5c06\u9690\u85cf\u67d0\u4e2a\u6210\u5458\u800c\u4e0d\u662f\u91cd\u547d\u540d\u5b83\u3002\u8fd9\u4ec5\u5728\u4f60\u9700\u8981\u5f15\u5165\u5176\u4ed6\u6210\u5458\u65f6\u6709\u7528\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.util.{HashMap=&gt;_, _ }<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.collection.mutable._<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p>\u73b0\u5728\uff0cHashMap\u5f88\u660e\u786e\u7684\u4fbf\u6307\u5411\u4e86scala.collection.mutable.HashMap\uff0c\u56e0\u4e3ajava.util.HashMap\u88ab\u9690\u85cf\u8d77\u6765\u4e86\u3002<br \/>\n<em>\u5c16\u53eb\u63d0\u793a<\/em>\uff1a<br \/>\n<em>\u6bcf\u4e2aScala\u7a0b\u5e8f\u90fd\u9690\u5f0f\u5730\u4ee5\u5982\u4e0b\u4ee3\u7801\u5f00\u59cb\uff1a<\/em><br \/>\n<em>import java.lang._<\/em><br \/>\n<em>import scala._<\/em><br \/>\n<em>import Predef._<\/em><br \/>\n\u548cJava\u7a0b\u5e8f\u4e00\u6837\uff0cjava.lang\u603b\u662f\u88ab\u5f15\u5165\u3002\u63a5\u4e0b\u6765\uff0cscala\u5305\u4e5f\u88ab\u5f15\u5165\uff0c\u4e0d\u8fc7\u65b9\u5f0f\u6709\u4e9b\u7279\u6b8a\u3002\u4e0d\u50cf\u6240\u6709\u5176\u4ed6\u5f15\u5165\uff0c\u8fd9\u4e2a\u5f15\u5165\u88ab\u5141\u8bb8\u53ef\u4ee5\u8986\u76d6\u4e4b\u524d\u7684\u5f15\u5165\u3002\u4e3e\u4f8b\u6765\u8bf4\uff0cscala.StringBuilder\u8986\u76d6java.lang.StringBuilder\u800c\u4e0d\u662f\u4e0e\u4e4b\u51b2\u7a81\u3002\u6700\u540e\uff0cPredef\u5bf9\u8c61\u88ab\u5f15\u5165\u3002\u5b83\u5305\u542b\u4e86\u76f8\u5f53\u591a\u6709\u7528\u7684\u51fd\u6570\uff0c\u8fd9\u4e9b\u540c\u6837\u53ef\u4ee5\u88ab\u653e\u7f6e\u5728scala\u5305\u5bf9\u8c61\u4e2d\uff0c\u4e0d\u8fc7Predef\u5728Scala\u8fd8\u6ca1\u6709\u52a0\u5165\u5305\u5bf9\u8c61\u4e4b\u524d\u5c31\u5b58\u5728\u4e86\u3002<br \/>\n\u7531\u4e8escala\u5305\u9ed8\u8ba4\u88ab\u5f15\u5165\uff0c\u5bf9\u4e8e\u90a3\u4e9b\u4ee5scala\u5f00\u5934\u7684\u5305\uff0c\u4f60\u5b8c\u5168\u4e0d\u9700\u8981\u5199\u5168\u8fd9\u4e2a\u524d\u7f00\u3002\u4f8b\u5982\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-cpp\">collection.<span class=\"hljs-keyword\">mutable<\/span>.HashMap<\/code><\/pre>\n<p>\u4e0a\u8ff0\u4ee3\u7801\u548c\u4ee5\u4e0b\u5199\u6cd5\u4e00\u6837\u597d\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-cpp\">scala.collection.<span class=\"hljs-keyword\">mutable<\/span>. HashMap<\/code><\/pre>\n<h1 id=\"\u5341-\u7ee7\u627f\"><a name=\"t82\"><\/a><a name=\"t82\"><\/a>\u5341\u3001 \u7ee7\u627f<\/h1>\n<h2 id=\"101-\u7ee7\u627f\u7c7b\"><a name=\"t83\"><\/a><a name=\"t83\"><\/a>10.1 \u7ee7\u627f\u7c7b<\/h2>\n<p>\u548cJava\u4e00\u6837\u4f7f\u7528extends\u5173\u952e\u5b57\uff0c\u5728\u5b9a\u4e49\u4e2d\u7ed9\u51fa\u5b50\u7c7b\u9700\u8981\u800c\u8d85\u7c7b\u6ca1\u6709\u7684\u5b57\u6bb5\u548c\u65b9\u6cd5\uff0c\u6216\u8005\u91cd\u5199\u8d85\u7c7b\u7684\u65b9\u6cd5\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> name = <span class=\"hljs-string\">&#8220;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Person<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> salary = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">description<\/span> <\/span>= <span class=\"hljs-string\">&#8220;\u5458\u5de5\u59d3\u540d\uff1a&#8221;<\/span> + name + <span class=\"hljs-string\">&#8221; \u85aa\u6c34\uff1a&#8221;<\/span> + salary<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u5982\u679c\u7c7b\u58f0\u660e\u4e3afinal\uff0c\u4ed6\u8bb2\u4e0d\u80fd\u88ab\u7ee7\u627f\u3002\u5982\u679c\u5355\u4e2a\u65b9\u6cd5\u58f0\u660e\u4e3afinal\uff0c\u5c06\u4e0d\u80fd\u88ab\u91cd\u5199\u3002<\/em><\/p>\n<h2 id=\"102-\u91cd\u5199\u65b9\u6cd5\"><a name=\"t84\"><\/a><a name=\"t84\"><\/a>10.2 \u91cd\u5199\u65b9\u6cd5<\/h2>\n<p>\u91cd\u5199\u4e00\u4e2a\u975e\u62bd\u8c61\u65b9\u6cd5\u9700\u8981\u7528override\u4fee\u9970\u7b26\uff0c\u8c03\u7528\u8d85\u7c7b\u7684\u65b9\u6cd5\u4f7f\u7528super\u5173\u952e\u5b57<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> name = <span class=\"hljs-string\">&#8220;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString<\/span> <\/span>= getClass.getName + <span class=\"hljs-string\">&#8220;[name=&#8221;<\/span> + name + <span class=\"hljs-string\">&#8220;]&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> salary = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString<\/span> <\/span>= <span class=\"hljs-keyword\">super<\/span>.toString + <span class=\"hljs-string\">&#8220;[salary=&#8221;<\/span> + salary + <span class=\"hljs-string\">&#8220;]&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"103-\u7c7b\u578b\u68c0\u67e5\u548c\u8f6c\u6362\"><a name=\"t85\"><\/a><a name=\"t85\"><\/a>10.3 \u7c7b\u578b\u68c0\u67e5\u548c\u8f6c\u6362<\/h2>\n<p>\u8981\u6d4b\u8bd5\u67d0\u4e2a\u5bf9\u8c61\u662f\u5426\u5c5e\u4e8e\u67d0\u4e2a\u7ed9\u5b9a\u7684\u7c7b\uff0c\u53ef\u4ee5\u7528isInstanceOf\u65b9\u6cd5\u3002\u7528asInstanceOf\u65b9\u6cd5\u5c06\u5f15\u7528\u8f6c\u6362\u4e3a\u5b50\u7c7b\u7684\u5f15\u7528\u3002classOf\u83b7\u53d6\u5bf9\u8c61\u7684\u7c7b\u540d\u3002<br \/>\n1) classOf[String]\u5c31\u5982\u540cJava\u7684 String.class<br \/>\n2) obj.isInstanceOf[T]\u5c31\u5982\u540cJava\u7684obj instanceof T<br \/>\n3) obj.asInstanceOf[T]\u5c31\u5982\u540cJava\u7684(T)obj<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(<span class=\"hljs-string\">&#8220;Hello&#8221;<\/span>.<span class=\"hljs-property\">isInstanceOf<\/span>[<span class=\"hljs-title class_\">String<\/span>])<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(<span class=\"hljs-string\">&#8220;Hello&#8221;<\/span>.<span class=\"hljs-property\">asInstanceOf<\/span>[<span class=\"hljs-title class_\">String<\/span>])<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(classOf[<span class=\"hljs-title class_\">String<\/span>])<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<h2 id=\"104-\u53d7\u4fdd\u62a4\u7684\u5b57\u6bb5\u548c\u65b9\u6cd5\"><a name=\"t86\"><\/a><a name=\"t86\"><\/a>10.4 \u53d7\u4fdd\u62a4\u7684\u5b57\u6bb5\u548c\u65b9\u6cd5<\/h2>\n<p>protected\u5728scala\u4e2d\u6bd4Java\u8981\u66f4\u4e25\u683c\u4e00\u70b9\uff0c\u5373\uff0c \u53ea\u6709\u7ee7\u627f\u5173\u7cfb\u624d\u53ef\u4ee5\u8bbf\u95ee\uff0c\u540c\u4e00\u4e2a\u5305\u4e0b\uff0c\u4e5f\u662f\u4e0d\u53ef\u4ee5\u7684\u3002<\/p>\n<h2 id=\"105-\u8d85\u7c7b\u7684\u6784\u9020\"><a name=\"t87\"><\/a><a name=\"t87\"><\/a>10.5 \u8d85\u7c7b\u7684\u6784\u9020<\/h2>\n<p>\u7c7b\u6709\u4e00\u4e2a\u4e3b\u6784\u5668\u548c\u4efb\u610f\u6570\u91cf\u7684\u8f85\u52a9\u6784\u9020\u5668\uff0c\u800c\u6bcf\u4e2a\u8f85\u52a9\u6784\u9020\u5668\u90fd\u5fc5\u987b\u4ee5\u5bf9\u5148\u524d\u5b9a\u4e49\u7684\u8f85\u52a9\u6784\u9020\u5668\u6216\u4e3b\u6784\u9020\u5668\u7684\u8c03\u7528\u5f00\u59cb\u3002\u5b50\u7c7b\u7684\u8f85\u52a9\u6784\u9020\u5668\u6700\u7ec8\u90fd\u4f1a\u8c03\u7528\u4e3b\u6784\u9020\u5668\uff0c\u53ea\u6709\u4e3b\u6784\u9020\u5668\u53ef\u4ee5\u8c03\u7528\u8d85\u7c7b\u7684\u6784\u9020\u5668\u3002\u8f85\u52a9\u6784\u9020\u5668\u6c38\u8fdc\u90fd\u4e0d\u53ef\u80fd\u76f4\u63a5\u8c03\u7528\u8d85\u7c7b\u7684\u6784\u9020\u5668\u3002\u5728Scala\u7684\u6784\u9020\u5668\u4e2d\uff0c\u4f60\u4e0d\u80fd\u8c03\u7528super(params)\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span>(<span class=\"hljs-params\">val name: <span class=\"hljs-type\">String<\/span>, val age: <span class=\"hljs-type\">Int<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString<\/span> <\/span>= getClass.getName + <span class=\"hljs-string\">&#8220;[name=&#8221;<\/span> + name +<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;,age=&#8221;<\/span> + age + <span class=\"hljs-string\">&#8220;]&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span>(<span class=\"hljs-params\">name: <span class=\"hljs-type\">String<\/span>, age: <span class=\"hljs-type\">Int<\/span>, val salary : <span class=\"hljs-type\">Double<\/span><\/span>) <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Person<\/span>(<span class=\"hljs-params\">name, age<\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString<\/span> <\/span>= <span class=\"hljs-keyword\">super<\/span>.toString + <span class=\"hljs-string\">&#8220;[salary=&#8221;<\/span> + salary + <span class=\"hljs-string\">&#8220;]&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"106-\u91cd\u540d\u5b57\u6bb5\"><a name=\"t88\"><\/a><a name=\"t88\"><\/a>10.6 \u91cd\u540d\u5b57\u6bb5<\/h2>\n<p>\u5b50\u7c7b\u6539\u5199\u7236\u7c7b\u6216\u8005\u62bd\u8c61\u7236\u7c7b\u7684\u5b57\u6bb5\uff0c\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person1<\/span>(<span class=\"hljs-params\">val name:<span class=\"hljs-type\">String<\/span>,var age:<span class=\"hljs-type\">Int<\/span><\/span>)<\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u4e3b\u6784\u9020\u5668\u5df2\u7ecf\u88ab\u8c03\u7528&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> school=<span class=\"hljs-string\">&#8220;\u4e94\u9053\u53e3\u804c\u4e1a\u6280\u672f\u5b66\u9662&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">sleep=<\/span>&#8220;8 <span class=\"hljs-title\">hours<\/span>&#8220;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString=<\/span>&#8220;<span class=\"hljs-title\">\u6211\u7684\u5b66\u6821\u662f\uff1a<\/span>&#8221; <span class=\"hljs-title\">+<\/span> <span class=\"hljs-title\">school<\/span> <span class=\"hljs-title\">+<\/span> &#8220;<span class=\"hljs-title\">\u6211\u7684\u540d\u5b57\u548c\u5e74\u9f84\u662f\uff1a<\/span>&#8221; <span class=\"hljs-title\">+<\/span> <span class=\"hljs-title\">name<\/span> <span class=\"hljs-title\">+<\/span> &#8220;,&#8221; <span class=\"hljs-title\">+<\/span> <span class=\"hljs-title\">age<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person2<\/span>(<span class=\"hljs-params\">name:<span class=\"hljs-type\">String<\/span>, age:<span class=\"hljs-type\">Int<\/span><\/span>) <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Person1<\/span>(<span class=\"hljs-params\">name, age<\/span>)<\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">val<\/span> school: <span class=\"hljs-type\">String<\/span> = <span class=\"hljs-string\">&#8220;\u6e05\u534e\u5927\u5b66&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a<\/em><br \/>\n<em>1\u3001def\u53ea\u80fd\u91cd\u5199\u53e6\u4e00\u4e2adef<\/em><br \/>\n<em>2\u3001val\u53ea\u80fd\u91cd\u5199\u53e6\u4e00\u4e2aval\u6216\u4e0d\u5e26\u53c2\u6570\u7684def<\/em><br \/>\n<em>3\u3001var\u53ea\u80fd\u91cd\u5199\u53e6\u4e00\u4e2a\u62bd\u8c61\u7684var<\/em><br \/>\n<em>\u4ec0\u4e48\u662f\u62bd\u8c61var\uff1f<\/em><\/p>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person3<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> name:<span class=\"hljs-keyword\">String<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-php\"><\/code><\/pre>\n<h2 id=\"107-\u533f\u540d\u5b50\u7c7b\"><a name=\"t89\"><\/a><a name=\"t89\"><\/a>10.7 \u533f\u540d\u5b50\u7c7b<\/h2>\n<p>\u548cJava\u4e00\u6837\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u5305\u542b\u5e26\u6709\u5b9a\u4e49\u6216\u91cd\u5199\u7684\u4ee3\u7801\u5757\u7684\u65b9\u5f0f\u521b\u5efa\u4e00\u4e2a\u533f\u540d\u7684\u5b50\u7c7b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person4<\/span><\/span>(<span class=\"hljs-keyword\">val<\/span> name: String) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> def toString = getClass.getName + <span class=\"hljs-string\">&#8220;[name=&#8221;<\/span> + name + <span class=\"hljs-string\">&#8220;]&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>\u4f7f\u7528\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> alien = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Person4<\/span>(<span class=\"hljs-string\">&#8220;Fred&#8221;<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">greeting<\/span> <\/span>= <span class=\"hljs-string\">&#8220;Greetings, Earthling! My name is Fred.&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(alien.greeting)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"108-\u62bd\u8c61\u7c7b\"><a name=\"t90\"><\/a><a name=\"t90\"><\/a>10.8 \u62bd\u8c61\u7c7b<\/h2>\n<p>\u53ef\u4ee5\u901a\u8fc7abstract\u5173\u952e\u5b57\u6807\u8bb0\u4e0d\u80fd\u88ab\u5b9e\u4f8b\u5316\u7684\u7c7b\u3002\u65b9\u6cd5\u4e0d\u7528\u6807\u8bb0abstract\uff0c\u53ea\u8981\u7701\u6389\u65b9\u6cd5\u4f53\u5373\u53ef\u3002\u7c7b\u53ef\u4ee5\u62e5\u6709\u62bd\u8c61\u5b57\u6bb5\uff0c\u62bd\u8c61\u5b57\u6bb5\u5c31\u662f\u6ca1\u6709\u521d\u59cb\u503c\u7684\u5b57\u6bb5\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span>(<span class=\"hljs-params\">val pname: <span class=\"hljs-type\">String<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> id: <span class=\"hljs-type\">Int<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> name: <span class=\"hljs-type\">String<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">idString<\/span><\/span>: <span class=\"hljs-type\">Int<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span>(<span class=\"hljs-params\">pname: <span class=\"hljs-type\">String<\/span><\/span>) <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Person<\/span>(<span class=\"hljs-params\">pname<\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> id = <span class=\"hljs-number\">5<\/span>;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> name = <span class=\"hljs-string\">&#8220;&gt;&gt;&gt;&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">idString<\/span> <\/span>= pname.hashCode<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u5b50\u7c7b\u5b9e\u73b0\u62bd\u8c61\u65b9\u6cd5\u4e0d\u9700\u8981override<\/em><\/p>\n<h2 id=\"109-\u6784\u9020\u987a\u5e8f\u548c\u63d0\u524d\u5b9a\u4e49\"><a name=\"t91\"><\/a><a name=\"t91\"><\/a>10.9 \u6784\u9020\u987a\u5e8f\u548c\u63d0\u524d\u5b9a\u4e49<\/h2>\n<p>\u5f53\u5b50\u7c7b\u91cd\u5199\u4e86\u7236\u7c7b\u7684\u65b9\u6cd5\u6216\u8005\u5b57\u6bb5\u540e\uff0c\u7236\u7c7b\u53c8\u4f9d\u8d56\u8fd9\u4e9b\u5b57\u6bb5\u6216\u8005\u65b9\u6cd5\u521d\u59cb\u5316\uff0c\u8fd9\u4e2a\u65f6\u5019\u5c31\u4f1a\u51fa\u73b0\u95ee\u9898\uff0c\u6bd4\u5982\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Creature<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> range: <span class=\"hljs-type\">Int<\/span> = <span class=\"hljs-number\">10<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> env: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">Int<\/span>] = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">Int<\/span>](range)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ant<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Creature<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">val<\/span> range = <span class=\"hljs-number\">2<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u6b64\u65f6\u7684\u6784\u9020\u987a\u5e8f\u4e3a\uff1a<\/p>\n<p>1) Ant\u7684\u6784\u9020\u5668\u5728\u505a\u5b83\u81ea\u5df1\u7684\u6784\u9020\u4e4b\u524d\uff0c\u8c03\u7528Creature\u7684\u6784\u9020\u5668<br \/>\n2) Creature\u7684\u6784\u9020\u5668\u5c06\u5b83\u7684range\u5b57\u6bb5\u8bbe\u4e3a10<br \/>\n3) Creature\u7684\u6784\u9020\u5668\u4e3a\u4e86\u521d\u59cb\u5316env\u6570\u7ec4\uff0c\u8c03\u7528range()\u53d6\u503c\u5668<br \/>\n4) \u8be5\u65b9\u6cd5\u88ab\u91cd\u5199\u4ee5\u8f93\u51fa\uff08\u8fd8\u672a\u521d\u59cb\u5316\u7684\uff09Ant\u7c7b\u7684range\u5b57\u6bb5\u503c<br \/>\n5) range\u65b9\u6cd5\u8fd4\u56de0\uff0c\uff08\u8fd9\u662f\u5bf9\u8c61\u88ab\u5206\u914d\u7a7a\u95f4\u65f6\u6240\u6709\u6574\u5f62\u5b57\u6bb5\u7684\u521d\u59cb\u503c\uff09<br \/>\n6) env\u88ab\u8bbe\u4e3a\u957f\u5ea6\u4e3a0\u7684\u6570\u7ec4\u3002<br \/>\n7) Ant\u6784\u9020\u5668\u7ee7\u7eed\u6267\u884c\uff0c\u5c06\u5176range\u5b57\u6bb5\u8bbe\u4e3a2.<br \/>\n\u90a3\u4e48env\u7684\u5927\u5c0f\u662f\u591a\u5c11\uff1f\u662f0\uff0c\u60ca\u4e0d\u60ca\u559c\uff0c\u610f\u4e0d\u610f\u5916\uff1f<\/p>\n<p>\u95ee\u9898\u89e3\u51b3\uff0c3\u79cd\u65b9\u6848\uff1a<\/p>\n<p>1) \u53ef\u4ee5\u5c06val\u58f0\u660e\u4e3afinal\uff0c\u8fd9\u6837\u5b50\u7c7b\u4e0d\u53ef\u6539\u5199\u3002<br \/>\n2) \u53ef\u4ee5\u5c06\u8d85\u7c7b\u4e2d\u5c06val\u58f0\u660e\u4e3alazy\uff0c\u8fd9\u6837\u5b89\u5168\u4f46\u5e76\u4e0d\u9ad8\u6548\u3002<br \/>\n3) \u8fd8\u53ef\u4ee5\u4f7f\u7528\u63d0\u524d\u5b9a\u4e49\u8bed\u6cd5\uff0c\u53ef\u4ee5\u5728\u8d85\u7c7b\u7684\u6784\u9020\u5668\u6267\u884c\u4e4b\u524d\u521d\u59cb\u5316\u5b50\u7c7b\u7684val\u5b57\u6bb5\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ant2<\/span> <span class=\"hljs-keyword\">extends<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">val<\/span> range = <span class=\"hljs-number\">3<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">} <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">Creature<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"1010-scala\u7ee7\u627f\u5c42\u7ea7\"><a name=\"t92\"><\/a><a name=\"t92\"><\/a>10.10 Scala\u7ee7\u627f\u5c42\u7ea7<\/h2>\n<p>\u5728scala\u4e2d\uff0c\u6240\u6709\u5176\u4ed6\u7c7b\u90fd\u662fAnyRef\u7684\u5b50\u7c7b\uff0c\u7c7b\u4f3cJava\u7684Object\u3002<br \/>\nAnyVal\u548cAnyRef\u90fd\u6269\u5c55\u81eaAny\u7c7b\u3002Any\u7c7b\u662f\u8ddf\u8282\u70b9<br \/>\nAny\u4e2d\u5b9a\u4e49\u4e86isInstanceOf\u3001asInstanceOf\u65b9\u6cd5\uff0c\u4ee5\u53ca\u54c8\u5e0c\u65b9\u6cd5\u7b49\u3002<br \/>\nNull\u7c7b\u578b\u7684\u552f\u4e00\u5b9e\u4f8b\u5c31\u662fnull\u5bf9\u8c61\u3002\u53ef\u4ee5\u5c06null\u8d4b\u503c\u7ed9\u4efb\u4f55\u5f15\u7528\uff0c\u4f46\u4e0d\u80fd\u8d4b\u503c\u7ed9\u503c\u7c7b\u578b\u7684\u53d8\u91cf\u3002<br \/>\nNothing\u7c7b\u578b\u6ca1\u6709\u5b9e\u4f8b\u3002\u5b83\u5bf9\u4e8e\u6cdb\u578b\u7ed3\u6784\u662f\u6709\u7528\u5904\u7684\uff0c\u4e3e\u4f8b\uff1a\u7a7a\u5217\u8868Nil\u7684\u7c7b\u578b\u662fList[Nothing]\uff0c\u5b83\u662fList[T]\u7684\u5b50\u7c7b\u578b\uff0cT\u53ef\u4ee5\u662f\u4efb\u4f55\u7c7b\u3002<\/p>\n<h1 id=\"\u5341\u4e00-\u7279\u8d28\"><a name=\"t93\"><\/a><a name=\"t93\"><\/a>\u5341\u4e00\u3001 \u7279\u8d28<\/h1>\n<h2 id=\"111-\u4e0d\u5141\u8bb8\u591a\u91cd\u96c6\u6210\"><a name=\"t94\"><\/a><a name=\"t94\"><\/a>11.1 \u4e0d\u5141\u8bb8\u591a\u91cd\u96c6\u6210<\/h2>\n<p>\u6240\u6709\u7684\u9762\u5411\u5bf9\u8c61\u7684\u8bed\u8a00\u90fd\u4e0d\u5141\u8bb8\u76f4\u63a5\u7684\u591a\u91cd\u7ee7\u627f\uff0c\u56e0\u4e3a\u4f1a\u51fa\u73b0\u201cdeadly diamond of death\u201d\u95ee\u9898\u3002Scala\u63d0\u4f9b\u4e86\u7279\u8d28\uff08trait\uff09\uff0c\u7279\u8d28\u53ef\u4ee5\u540c\u65f6\u62e5\u6709\u62bd\u8c61\u65b9\u6cd5\u548c\u5177\u4f53\u65b9\u6cd5\uff0c\u4e00\u4e2a\u7c7b\u53ef\u4ee5\u5b9e\u73b0\u591a\u4e2a\u7279\u8d28\u3002<\/p>\n<h2 id=\"112-\u5f53\u505a\u63a5\u53e3\u4f7f\u7528\u7684\u7279\u8d28\"><a name=\"t95\"><\/a><a name=\"t95\"><\/a>11.2 \u5f53\u505a\u63a5\u53e3\u4f7f\u7528\u7684\u7279\u8d28<\/h2>\n<p>\u7279\u8d28\u4e2d\u6ca1\u6709\u5b9e\u73b0\u7684\u65b9\u6cd5\u5c31\u662f\u62bd\u8c61\u65b9\u6cd5\u3002\u7c7b\u901a\u8fc7extends\u7ee7\u627f\u7279\u8d28\uff0c\u901a\u8fc7with\u53ef\u4ee5\u7ee7\u627f\u591a\u4e2a\u7279\u8d28\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ConsoleLogger<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">Cloneable<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">Serializable<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>Logger with Cloneable with Serializable\u662f\u4e00\u4e2a\u6574\u4f53\uff0cextends\u8fd9\u4e2a\u6574\u4f53<br \/>\n\u6240\u6709\u7684java\u63a5\u53e3\u90fd\u53ef\u4ee5\u5f53\u505aScala\u7279\u8d28\u4f7f\u7528\u3002<\/p>\n<h2 id=\"113-\u5e26\u6709\u5177\u4f53\u5b9e\u73b0\u7684\u7279\u8d28\"><a name=\"t96\"><\/a><a name=\"t96\"><\/a>11.3 \u5e26\u6709\u5177\u4f53\u5b9e\u73b0\u7684\u7279\u8d28<\/h2>\n<p>\u7279\u8d28\u4e2d\u7684\u65b9\u6cd5\u5e76\u4e0d\u4e00\u5b9a\u662f\u62bd\u8c61\u7684\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ConsoleLogger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Account<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">var<\/span> balance = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Account<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">ConsoleLogger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">withdraw<\/span><\/span>(amount: <span class=\"hljs-type\">Double<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (amount &gt; balance) log(<span class=\"hljs-string\">&#8220;\u4f59\u989d\u4e0d\u8db3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> balance -= amount<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"114-\u5e26\u6709\u7279\u8d28\u7684\u5bf9\u8c61\"><a name=\"t97\"><\/a><a name=\"t97\"><\/a>11.4 \u5e26\u6709\u7279\u8d28\u7684\u5bf9\u8c61<\/h2>\n<p>\u5728\u6784\u5efa\u5bf9\u8c61\u65f6\u6df7\u5165\u67d0\u4e2a\u5177\u4f53\u7684\u7279\u8d28\uff0c\u8986\u76d6\u6389\u62bd\u8c61\u65b9\u6cd5\uff0c\u63d0\u4f9b\u5177\u4f53\u5b9e\u73b0\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ConsoleLogger<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Account<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">var<\/span> balance = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Account<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">Logger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">withdraw<\/span><\/span>(amount: <span class=\"hljs-type\">Double<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (amount &gt; balance) log(<span class=\"hljs-string\">&#8220;\u4f59\u989d\u4e0d\u8db3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> balance -= amount<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> account = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ConsoleLogger<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">account.withdraw(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"115-\u53e0\u52a0\u5728\u4e00\u8d77\u7684\u7279\u8d28\"><a name=\"t98\"><\/a><a name=\"t98\"><\/a>11.5 \u53e0\u52a0\u5728\u4e00\u8d77\u7684\u7279\u8d28<\/h2>\n<p>super\u5e76\u4e0d\u662f\u6307\u7ee7\u627f\u5173\u7cfb\uff0c\u800c\u662f\u6307\u7684\u52a0\u8f7d\u987a\u5e8f\u3002<br \/>\n\u7ee7\u627f\u591a\u4e2a\u76f8\u540c\u7236\u7279\u8d28\u7684\u7c7b\uff0c\u4f1a\u4ece\u53f3\u5230\u5de6\u4f9d\u6b21\u8c03\u7528\u7279\u8d28\u7684\u65b9\u6cd5\u3002Super\u6307\u7684\u662f\u7ee7\u627f\u7279\u8d28\u5de6\u8fb9\u7684\u7279\u8d28\uff0c\u4ece\u6e90\u7801\u662f\u65e0\u6cd5\u5224\u65adsuper.method\u4f1a\u6267\u884c\u54ea\u91cc\u7684\u65b9\u6cd5\uff0c\u5982\u679c\u60f3\u8981\u8c03\u7528\u5177\u4f53\u7279\u8d28\u7684\u65b9\u6cd5\uff0c\u53ef\u4ee5\u6307\u5b9a\uff1asuper[ConsoleLogger].log(\u2026).\u5176\u4e2d\u7684\u6cdb\u578b\u5fc5\u987b\u662f\u8be5\u7279\u8d28\u7684\u76f4\u63a5\u8d85\u7c7b\u7c7b\u578b<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>);<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ConsoleLogger<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">TimestampLogger<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">ConsoleLogger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">super<\/span>.log(<span class=\"hljs-keyword\">new<\/span> java.util.<span class=\"hljs-type\">Date<\/span>() + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ShortLogger<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">ConsoleLogger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">super<\/span>.log(<span class=\"hljs-keyword\">if<\/span> (msg.length &lt;= <span class=\"hljs-number\">15<\/span>) msg <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-string\">s&#8221;<span class=\"hljs-subst\">${msg.substring(0, 12)}<\/span>&#8230;&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Account<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">var<\/span> balance = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Account<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">Logger<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">withdraw<\/span><\/span>(amount: <span class=\"hljs-type\">Double<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (amount &gt; balance) log(<span class=\"hljs-string\">&#8220;\u4f59\u989d\u4e0d\u8db3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> balance -= amount<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"33\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"34\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"35\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct1 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">TimestampLogger<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ShortLogger<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"36\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct2 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ShortLogger<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">TimestampLogger<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"37\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct1.withdraw(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"38\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct2.withdraw(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"39\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"116-\u5728\u7279\u8d28\u4e2d\u91cd\u5199\u62bd\u8c61\u65b9\u6cd5\"><a name=\"t99\"><\/a><a name=\"t99\"><\/a>11.6 \u5728\u7279\u8d28\u4e2d\u91cd\u5199\u62bd\u8c61\u65b9\u6cd5<\/h2>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u56e0\u4e3a\u6709super\uff0cScala\u8ba4\u4e3alog\u8fd8\u662f\u4e00\u4e2a\u62bd\u8c61\u65b9\u6cd5<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">TimestampLogger2<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">super<\/span>.log(<span class=\"hljs-keyword\">new<\/span> java.util.<span class=\"hljs-type\">Date<\/span>() + <span class=\"hljs-string\">&#8221; &#8220;<\/span> + msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ShortLogger2<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">super<\/span>.log(<span class=\"hljs-keyword\">if<\/span> (msg.length &lt;= <span class=\"hljs-number\">15<\/span>) msg <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-string\">s&#8221;<span class=\"hljs-subst\">${msg.substring(0, 12)}<\/span>&#8230;&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ConsoleLogger2<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Account2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">var<\/span> balance = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount2<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Account2<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">Logger2<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">withdraw<\/span><\/span>(amount: <span class=\"hljs-type\">Double<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (amount &gt; balance) log(<span class=\"hljs-string\">&#8220;\u4f59\u989d\u4e0d\u8db3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> balance -= amount<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"33\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"34\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"35\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main2<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"36\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct1 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount2<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ConsoleLogger2<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">TimestampLogger2<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ShortLogger2<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"37\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct1.withdraw(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"38\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"117-\u5f53\u505a\u5bcc\u63a5\u53e3\u4f7f\u7528\u7684\u7279\u8d28\"><a name=\"t100\"><\/a><a name=\"t100\"><\/a>11.7 \u5f53\u505a\u5bcc\u63a5\u53e3\u4f7f\u7528\u7684\u7279\u8d28<\/h2>\n<p>\u5373\u8be5\u7279\u8d28\u4e2d\u65e2\u6709\u62bd\u8c61\u65b9\u6cd5\uff0c\u53c8\u6709\u975e\u62bd\u8c61\u65b9\u6cd5<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5bcc\u7279\u8d28<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger3<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">info<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">log(<span class=\"hljs-string\">&#8220;INFO: &#8220;<\/span> + msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">warn<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">log(<span class=\"hljs-string\">&#8220;WARN: &#8220;<\/span> + msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">severe<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">log(<span class=\"hljs-string\">&#8220;SEVERE: &#8220;<\/span> + msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ConsoleLogger3<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger3<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Account3<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">var<\/span> balance = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount3<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Account3<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">Logger3<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">withdraw<\/span><\/span>(amount: <span class=\"hljs-type\">Double<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (amount &gt; balance) severe(<span class=\"hljs-string\">&#8220;\u4f59\u989d\u4e0d\u8db3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> balance -= amount<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"33\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"34\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"35\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main3<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"36\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ConsoleLogger<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"37\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct.withdraw(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"38\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"118-\u7279\u8d28\u4e2d\u7684\u5177\u4f53\u5b57\u6bb5\"><a name=\"t101\"><\/a><a name=\"t101\"><\/a>11.8 \u7279\u8d28\u4e2d\u7684\u5177\u4f53\u5b57\u6bb5<\/h2>\n<p>\u7279\u8d28\u4e2d\u53ef\u4ee5\u5b9a\u4e49\u5177\u4f53\u5b57\u6bb5\uff0c\u5982\u679c\u521d\u59cb\u5316\u4e86\u5c31\u662f\u5177\u4f53\u5b57\u6bb5\uff0c\u5982\u679c\u4e0d\u521d\u59cb\u5316\u5c31\u662f\u62bd\u8c61\u5b57\u6bb5\u3002<br \/>\n\u6df7\u5165\u8be5\u7279\u8d28\u7684\u7c7b\u5c31\u5177\u6709\u4e86\u8be5\u5b57\u6bb5\uff0c\u5b57\u6bb5\u4e0d\u662f\u7ee7\u627f\uff0c\u800c\u662f\u7b80\u5355\u7684\u52a0\u5165\u7c7b\u3002\u662f\u81ea\u5df1\u7684\u5b57\u6bb5\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger4<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ConsoleLogger4<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger4<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ShortLogger4<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger4<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> maxLength = <span class=\"hljs-number\">15<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">super<\/span>.log(<span class=\"hljs-keyword\">if<\/span> (msg.length &lt;= maxLength) msg <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-string\">s&#8221;<span class=\"hljs-subst\">${msg.substring(0, maxLength &#8211; 3)}<\/span>&#8230;&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Account4<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">var<\/span> balance = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount4<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Account4<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">ConsoleLogger4<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">ShortLogger4<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> interest = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">withdraw<\/span><\/span>(amount: <span class=\"hljs-type\">Double<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (amount &gt; balance) log(<span class=\"hljs-string\">&#8220;\u4f59\u989d\u4e0d\u8db3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> balance -= amount<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main4<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount4<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct.withdraw(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"33\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(acct.maxLength)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"34\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"119-\u7279\u8d28\u4e2d\u7684\u62bd\u8c61\u5b57\u6bb5\"><a name=\"t102\"><\/a><a name=\"t102\"><\/a>11.9 \u7279\u8d28\u4e2d\u7684\u62bd\u8c61\u5b57\u6bb5<\/h2>\n<p>\u7279\u8d28\u4e2d\u672a\u88ab\u521d\u59cb\u5316\u7684\u5b57\u6bb5\u5728\u5177\u4f53\u7684\u5b50\u7c7b\u4e2d\u5fc5\u987b\u88ab\u91cd\u5199\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u7279\u8d28\u4e2d\u7684\u5177\u4f53\u5b57\u6bb5<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger5<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ConsoleLogger5<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger5<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ShortLogger5<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger5<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> maxLength: <span class=\"hljs-type\">Int<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">super<\/span>.log(<span class=\"hljs-keyword\">if<\/span> (msg.length &lt;= maxLength) msg <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-string\">s&#8221;<span class=\"hljs-subst\">${msg.substring(0, maxLength &#8211; 3)}<\/span>&#8230;&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Account5<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">var<\/span> balance = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount5<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Account5<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">Logger5<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> interest = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">withdraw<\/span><\/span>(amount: <span class=\"hljs-type\">Double<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (amount &gt; balance) log(<span class=\"hljs-string\">&#8220;\u4f59\u989d\u4e0d\u8db3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> balance -= amount<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"33\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main5<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"34\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount5<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ConsoleLogger5<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ShortLogger5<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"35\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> maxLength = <span class=\"hljs-number\">20<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"36\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"37\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct.withdraw(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"38\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(acct.maxLength)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"39\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"1110-\u7279\u8d28\u6784\u9020\u987a\u5e8f\"><a name=\"t103\"><\/a><a name=\"t103\"><\/a>11.10 \u7279\u8d28\u6784\u9020\u987a\u5e8f<\/h2>\n<p>\u7279\u8d28\u4e5f\u662f\u6709\u6784\u9020\u5668\u7684\uff0c\u6784\u9020\u5668\u4e2d\u7684\u5185\u5bb9\u7531\u201c\u5b57\u6bb5\u7684\u521d\u59cb\u5316\u201d\u548c\u4e00\u4e9b\u5176\u4ed6\u8bed\u53e5\u6784\u6210<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger6<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u6211\u5728Logger6\u7279\u8d28\u6784\u9020\u5668\u4e2d\uff0c\u563f\u563f\u563f\u3002\u3002\u3002&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ConsoleLogger6<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger6<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u6211\u5728ConsoleLogger6\u7279\u8d28\u6784\u9020\u5668\u4e2d\uff0c\u563f\u563f\u563f\u3002\u3002\u3002&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">ShortLogger6<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger6<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> maxLength: <span class=\"hljs-type\">Int<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u6211\u5728ShortLogger6\u7279\u8d28\u6784\u9020\u5668\u4e2d\uff0c\u563f\u563f\u563f\u3002\u3002\u3002&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">super<\/span>.log(<span class=\"hljs-keyword\">if<\/span> (msg.length &lt;= maxLength) msg <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-string\">s&#8221;<span class=\"hljs-subst\">${msg.substring(0, maxLength &#8211; 3)}<\/span>&#8230;&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Account6<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u6211\u5728Account6\u6784\u9020\u5668\u4e2d\uff0c\u563f\u563f\u563f\u3002\u3002\u3002&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-keyword\">var<\/span> balance = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">abstract<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount6<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Account6<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">ConsoleLogger6<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">ShortLogger6<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;\u6211\u518dSavingsAccount6\u6784\u9020\u5668\u4e2d&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">var<\/span> interest = <span class=\"hljs-number\">0.0<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">val<\/span> maxLength: <span class=\"hljs-type\">Int<\/span> = <span class=\"hljs-number\">20<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">withdraw<\/span><\/span>(amount: <span class=\"hljs-type\">Double<\/span>) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (amount &gt; balance) log(<span class=\"hljs-string\">&#8220;\u4f59\u989d\u4e0d\u8db3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"33\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span> balance -= amount<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"34\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"35\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"36\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"37\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main6<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"38\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount6<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ConsoleLogger6<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">ShortLogger6<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"39\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct.withdraw(<span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"40\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(acct.maxLength)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"41\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u6b65\u9aa4\u603b\u7ed3\uff1a<br \/>\n1\u3001\u8c03\u7528\u5f53\u524d\u7c7b\u7684\u8d85\u7c7b\u6784\u9020\u5668<br \/>\n2\u3001\u7b2c\u4e00\u4e2a\u7279\u8d28\u7684\u7236\u7279\u8d28\u6784\u9020\u5668<br \/>\n3\u3001\u7b2c\u4e00\u4e2a\u7279\u8d28\u6784\u9020\u5668<br \/>\n4\u3001\u7b2c\u4e8c\u4e2a\u7279\u8d28\u6784\u9020\u5668\u7684\u7236\u7279\u8d28\u6784\u9020\u5668\u7531\u4e8e\u5df2\u7ecf\u6267\u884c\u5b8c\u6210\uff0c\u6240\u4ee5\u4e0d\u518d\u6267\u884c<br \/>\n5\u3001\u7b2c\u4e8c\u4e2a\u7279\u8d28\u6784\u9020\u5668<br \/>\n6\u3001\u5f53\u524d\u7c7b\u6784\u9020\u5668<\/p>\n<h2 id=\"1111-\u521d\u59cb\u5316\u7279\u8d28\u4e2d\u7684\u5b57\u6bb5\"><a name=\"t104\"><\/a><a name=\"t104\"><\/a>11.11 \u521d\u59cb\u5316\u7279\u8d28\u4e2d\u7684\u5b57\u6bb5<\/h2>\n<p>\u7279\u8d28\u4e0d\u80fd\u6709\u6784\u9020\u5668\u53c2\u6570\uff0c\u6bcf\u4e2a\u7279\u8d28\u90fd\u6709\u4e00\u4e2a\u65e0\u53c2\u6570\u7684\u6784\u9020\u5668\u3002\u7f3a\u5c11\u6784\u9020\u5668\u53c2\u6570\u662f\u7279\u8d28\u4e0e\u7c7b\u4e4b\u95f4\u552f\u4e00\u7684\u6280\u672f\u5dee\u522b\u3002\u9664\u6b64\u4e4b\u5916\uff0c\u7279\u8d28\u53ef\u4ee5\u5177\u5907\u7c7b\u7684\u6240\u6709\u7279\u6027\uff0c\u6bd4\u5982\u5177\u4f53\u7684\u548c\u62bd\u8c61\u7684\u5b57\u6bb5\uff0c\u4ee5\u53ca\u8d85\u7c7b\u3002\u73b0\u5728\u6709\u5982\u4e0b\u60c5\u666f\uff1a\u6211\u4eec\u60f3\u901a\u8fc7\u7279\u8d28\u6765\u5b9e\u73b0\u65e5\u5fd7\u6570\u636e\u7684\u8f93\u51fa\uff0c\u8f93\u51fa\u5230\u67d0\u4e00\u4e2a\u6587\u4ef6\u4e2d<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.io.<span class=\"hljs-type\">PrintStream<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger7<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg:<span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">FileLogger7<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger7<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> fileName:<span class=\"hljs-type\">String<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> out = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">PrintStream<\/span>(fileName)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.print(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.flush()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount7<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main7<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount7<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">FileLogger7<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">val<\/span> fileName = <span class=\"hljs-string\">&#8220;2017-11-24.log&#8221;<\/span><span class=\"hljs-comment\">\/\/\u7a7a\u6307\u9488\u5f02\u5e38<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u5982\u679c\u60f3\u4fee\u590d\u5982\u4e0a\u9519\u8bef\uff0c\u53ef\u4ee5\uff1a<br \/>\n1) \u4f7f\u7528\u201c\u63d0\u524d\u5b9a\u4e49\u201d<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.io.<span class=\"hljs-type\">PrintStream<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger7<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">FileLogger7<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger7<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> fileName: <span class=\"hljs-type\">String<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> out = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">PrintStream<\/span>(fileName)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.print(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.flush()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount7<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main7<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u63d0\u524d\u5b9a\u4e49<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct = <span class=\"hljs-keyword\">new<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">val<\/span> fileName = <span class=\"hljs-string\">&#8220;2017-11-24.log&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">} <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">SavingsAccount7<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">FileLogger7<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct.log(<span class=\"hljs-string\">&#8220;heiheihei&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u6216\u8fd9\u6837\u63d0\u524d\u5b9a\u4e49\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> unit12<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.io.<span class=\"hljs-type\">PrintStream<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger7<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">FileLogger7<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger7<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> fileName: <span class=\"hljs-type\">String<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> out = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">PrintStream<\/span>(fileName)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.print(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.flush()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u63d0\u524d\u5b9a\u4e49\u5728\u8fd9\u91cc<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount7<\/span> <span class=\"hljs-keyword\">extends<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">val<\/span> fileName = <span class=\"hljs-string\">&#8220;2017-11-24.log&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">} <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">FileLogger7<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main7<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount7<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">FileLogger7<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct.log(<span class=\"hljs-string\">&#8220;\u563f\u563f\u563f&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-number\">2<\/span>) \u4f7f\u7528<span class=\"hljs-keyword\">lazy<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">package<\/span> unit12<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.io.<span class=\"hljs-type\">PrintStream<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"33\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger7<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"34\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"35\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"36\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"37\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">FileLogger7<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Logger7<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"38\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> fileName: <span class=\"hljs-type\">String<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"39\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">lazy<\/span> <span class=\"hljs-keyword\">val<\/span> out = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">PrintStream<\/span>(fileName)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"40\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"41\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(msg: <span class=\"hljs-type\">String<\/span>): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"42\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.print(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"43\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.flush()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"44\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"45\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"46\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"47\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SavingsAccount7<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"48\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"49\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"50\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"51\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main7<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"52\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> acct = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">SavingsAccount7<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-type\">FileLogger7<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"53\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-keyword\">val<\/span> fileName = <span class=\"hljs-string\">&#8220;2017-11-24.log&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"54\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"55\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">acct.log(<span class=\"hljs-string\">&#8220;\u54c8\u54c8\u54c8&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"56\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"1112-\u6269\u5c55\u7c7b\u7684\u7279\u8d28\"><a name=\"t105\"><\/a><a name=\"t105\"><\/a>11.12 \u6269\u5c55\u7c7b\u7684\u7279\u8d28<\/h2>\n<p>\u603b\u7ed3\uff1a<br \/>\n1\u3001\u7279\u8d28\u53ef\u4ee5\u7ee7\u627f\u81ea\u7c7b\uff0c\u4ee5\u7528\u6765\u62d3\u5c55\u8be5\u7c7b\u7684\u4e00\u4e9b\u529f\u80fd<br \/>\n2\u3001\u6240\u6709\u6df7\u5165\u8be5\u7279\u8d28\u7684\u7c7b\uff0c\u4f1a\u81ea\u52a8\u6210\u4e3a\u90a3\u4e2a\u7279\u8d28\u6240\u7ee7\u627f\u7684\u8d85\u7c7b\u7684\u5b50\u7c7b<br \/>\n3\u3001\u5982\u679c\u6df7\u5165\u8be5\u7279\u8d28\u7684\u7c7b\uff0c\u5df2\u7ecf\u7ee7\u627f\u4e86\u53e6\u4e00\u4e2a\u7c7b\uff0c\u4e0d\u5c31\u77db\u76fe\u4e86\uff1f\u6ce8\u610f\uff0c\u53ea\u8981\u7ee7\u627f\u7684\u90a3\u4e2a\u7c7b\u662f\u7279\u8d28\u8d85\u7c7b\u7684\u5b50\u7c7b\u5373\u53ef\u3002<br \/>\n\u4f8b\u5982\uff1a<br \/>\n1) \u7279\u8d28\u53ef\u4ee5\u7ee7\u627f\u81ea\u7c7b\uff0c\u4ee5\u7528\u6765\u62d3\u5c55\u8be5\u7c7b\u7684\u4e00\u4e9b\u529f\u80fd<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">LoggedException<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Exception<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">log<\/span><\/span>(): <span class=\"hljs-type\">Unit<\/span> ={<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(getMessage())<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>2) \u6240\u6709\u6df7\u5165\u8be5\u7279\u8d28\u7684\u7c7b\uff0c\u4f1a\u81ea\u52a8\u6210\u4e3a\u90a3\u4e2a\u7279\u8d28\u6240\u7ee7\u627f\u7684\u8d85\u7c7b\u7684\u5b50\u7c7b<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">UnhappyException<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">LoggedException<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">getMessage<\/span> <\/span>= <span class=\"hljs-string\">&#8220;\u54e6\uff0c\u6211\u7684\u4e0a\u5e1d\uff0c\u6211\u8981\u8e22\u7206\u4ed6\u7684\u5c41\u80a1\uff01&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>3) \u5982\u679c\u6df7\u5165\u8be5\u7279\u8d28\u7684\u7c7b\uff0c\u5df2\u7ecf\u7ee7\u627f\u4e86\u53e6\u4e00\u4e2a\u7c7b\uff0c\u4e0d\u5c31\u77db\u76fe\u4e86\uff1f\u6ce8\u610f\uff0c\u53ea\u8981\u7ee7\u627f\u7684\u90a3\u4e2a\u7c7b\u662f\u7279\u8d28\u8d85\u7c7b\u7684\u5b50\u7c7b\u5373\u53ef\u3002<br \/>\n\u6b63\u786e\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">UnhappyException2<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">IndexOutOfBoundsException<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">LoggedException<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">getMessage<\/span> <\/span>= <span class=\"hljs-string\">&#8220;\u54e6\uff0c\u6211\u7684\u4e0a\u5e1d\uff0c\u6211\u8981\u8e22\u7206\u4ed6\u7684\u5c41\u80a1\uff01&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u9519\u8bef\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">UnhappyException3<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">JFrame<\/span> <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-title\">LoggedException<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">getMessage<\/span> <\/span>= <span class=\"hljs-string\">&#8220;\u54e6\uff0c\u6211\u7684\u4e0a\u5e1d\uff0c\u6211\u8981\u8e22\u7206\u4ed6\u7684\u5c41\u80a1\uff01&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"1113-\u81ea\u8eab\u7c7b\u578b\"><a name=\"t106\"><\/a><a name=\"t106\"><\/a>11.13 \u81ea\u8eab\u7c7b\u578b<\/h2>\n<p>\u4e3b\u8981\u662f\u4e3a\u4e86\u89e3\u51b3\u7279\u8d28\u7684\u5faa\u73af\u4f9d\u8d56\u95ee\u9898\uff0c\u540c\u65f6\u53ef\u4ee5\u786e\u4fdd\u7279\u8d28\u5728\u4e0d\u6269\u5c55\u67d0\u4e2a\u7c7b\u7684\u60c5\u51b5\u4e0b\uff0c\u4f9d\u7136\u53ef\u4ee5\u505a\u5230\u9650\u5236\u6df7\u5165\u8be5\u7279\u8d28\u7684\u7c7b\u7684\u7c7b\u578b\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u6bd4\u5982\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u81ea\u8eab\u7c7b\u578b\u7279\u8d28<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">trait<\/span> <span class=\"hljs-title\">Logger9<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">this<\/span>: Exception =&gt;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def log(): <span class=\"hljs-built_in\">Unit<\/span> ={<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(getMessage)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>\u8fd9\u6837\u4e00\u6765\uff0c\u5728\u8be5\u7279\u8d28\u4e2d\uff0c\u53ef\u4ee5\u968f\u610f\u8c03\u7528\u201c\u81ea\u8eab\u7c7b\u578b\u201d\u4e2d\u7684\u5404\u79cd\u65b9\u6cd5\u3002<\/p>\n<h1 id=\"\u5341\u4e8c-\u6ce8\u89e3\"><a name=\"t107\"><\/a><a name=\"t107\"><\/a>\u5341\u4e8c\u3001 \u6ce8\u89e3<\/h1>\n<p>\u6ce8\u89e3\u5c31\u662f\u6807\u7b7e\u3002<br \/>\n\u6807\u7b7e\u662f\u7528\u6765\u6807\u8bb0\u67d0\u4e9b\u4ee3\u7801\u9700\u8981\u7279\u6b8a\u5904\u7406\u7684\u3002<br \/>\n\u5904\u7406\u7684\u624b\u6bb5\u53ef\u4ee5\u5728\u4ee3\u7801\u8fd0\u884c\u65f6\u64cd\u4f5c\uff0c\u4e5f\u53ef\u4ee5\u5728\u7f16\u8bd1\u671f\u64cd\u4f5c\u3002<\/p>\n<h2 id=\"121-\u4ec0\u4e48\u53ef\u4ee5\u88ab\u6ce8\u89e3\"><a name=\"t108\"><\/a><a name=\"t108\"><\/a>12.1 \u4ec0\u4e48\u53ef\u4ee5\u88ab\u6ce8\u89e3<\/h2>\n<p>1) \u53ef\u4ee5\u4e3a\u7c7b\uff0c\u65b9\u6cd5\uff0c\u5b57\u6bb5\u5c40\u90e8\u53d8\u91cf\uff0c\u53c2\u6570\uff0c\u8868\u8fbe\u5f0f\uff0c\u7c7b\u578b\u53c2\u6570\u4ee5\u53ca\u5404\u79cd\u7c7b\u578b\u5b9a\u4e49\u6dfb\u52a0\u6ce8\u89e3<\/p>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@Entity<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Student<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@Test<\/span> def <span class=\"hljs-title function_\">play<\/span>() {}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@BeanProperty<\/span> <span class=\"hljs-keyword\">var<\/span> username = _<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-title function_\">doSomething<\/span>(<span class=\"hljs-params\"><span class=\"hljs-meta\">@NotNull<\/span> message: <span class=\"hljs-built_in\">String<\/span><\/span>) {}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@BeanProperty<\/span> <span class=\"hljs-meta\">@Id<\/span> <span class=\"hljs-keyword\">var<\/span> username = _<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<p>2) \u6784\u9020\u5668\u6ce8\u89e3\uff0c\u9700\u8981\u5728\u4e3b\u6784\u9020\u5668\u4e4b\u524d\uff0c\u7c7b\u540d\u4e4b\u540e\uff0c\u4e14\u9700\u8981\u52a0\u62ec\u53f7\uff0c\u5982\u679c\u6ce8\u89e3\u6709\u53c2\u6570\uff0c\u5219\u5199\u5728\u6ce8\u89e3\u62ec\u53f7\u91cc<\/p>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Student<\/span> <span class=\"hljs-meta\">@Inject<\/span>() (<span class=\"hljs-keyword\">var<\/span> <span class=\"hljs-attr\">username<\/span>: <span class=\"hljs-title class_\">String<\/span>, <span class=\"hljs-keyword\">var<\/span> <span class=\"hljs-attr\">password<\/span>: <span class=\"hljs-title class_\">String<\/span>)<\/code><\/pre>\n<p>3) \u4e3a\u8868\u8fbe\u5f0f\u6dfb\u52a0\u6ce8\u89e3\uff0c\u5728\u8868\u8fbe\u5f0f\u540e\u6dfb\u52a0\u5192\u53f7<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\">\uff08map1.<span class=\"hljs-keyword\">get<\/span>(key): <span class=\"hljs-meta\">@unchecked<\/span>) match {...}<\/code><\/pre>\n<p>4) \u6cdb\u578b\u6dfb\u52a0\u6ce8\u89e3<\/p>\n<pre class=\"has\"><code class=\"hljs language-r\"><span class=\"hljs-built_in\">class<\/span> Student<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-operator\">@<\/span>specialized <span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span><\/code><\/pre>\n<p>5) \u5b9e\u9645\u7c7b\u578b\u6dfb\u52a0\u6ce8\u89e3<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\">String <span class=\"hljs-meta\">@cps<\/span>[<span class=\"hljs-built_in\">Unit<\/span>]<\/code><\/pre>\n<h2 id=\"122-\u6ce8\u89e3\u53c2\u6570\"><a name=\"t109\"><\/a><a name=\"t109\"><\/a>12.2 \u6ce8\u89e3\u53c2\u6570<\/h2>\n<p>Java\u6ce8\u89e3\u53ef\u4ee5\u6709\u5e26\u540d\u53c2\u6570\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@Test(timeout = 100, expected = classOf[IOException])<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u5982\u679c\u53c2\u6570\u540d\u4e3avalue,\u5219\u8be5\u540d\u79f0\u53ef\u4ee5\u76f4\u63a5\u7565\u53bb\u3002<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@Named(<span class=\"hljs-string\">&#8220;creds&#8221;<\/span>)<\/span> <span class=\"hljs-keyword\">var<\/span> credentials: Credentials = _ <span class=\"hljs-comment\">\/\/ value\u53c2\u6570\u7684\u503c\u4e3a \u201ccreds\u201d<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u6ce8\u89e3\u4e0d\u5e26\u53c2\u6570\uff0c\u5706\u62ec\u53f7\u53ef\u4ee5\u7701\u53bb<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@Entity<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Credentials<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>Java \u6ce8\u89e3\u7684\u53c2\u6570\u7c7b\u578b\u53ea\u80fd\u662f\uff1a<br \/>\n\u6570\u503c\u578b\u7684\u5b57\u9762\u91cf<br \/>\n\u5b57\u7b26\u4e32<br \/>\n\u7c7b\u5b57\u9762\u91cf<br \/>\nJava\u679a\u4e3e<br \/>\n\u5176\u4ed6\u6ce8\u89e3<br \/>\n\u4e0a\u8ff0\u7c7b\u578b\u7684\u6570\u7ec4\uff08\u4f46\u4e0d\u80fd\u662f\u6570\u7ec4\u7684\u6570\u7ec4\uff09<br \/>\nScala\u6ce8\u89e3\u53ef\u4ee5\u662f\u4efb\u4f55\u7c7b\u578b\uff0c\u4f46\u53ea\u6709\u5c11\u6570\u51e0\u4e2aScala\u6ce8\u89e3\u5229\u7528\u4e86\u8fd9\u4e2a\u589e\u52a0\u7684\u7075\u6d3b\u6027\u3002<\/p>\n<h2 id=\"123-\u6ce8\u89e3\u5b9e\u73b0\"><a name=\"t110\"><\/a><a name=\"t110\"><\/a>12.3 \u6ce8\u89e3\u5b9e\u73b0<\/h2>\n<p>\u4f60\u53ef\u4ee5\u5b9e\u73b0\u81ea\u5df1\u7684\u6ce8\u89e3\uff0c\u4f46\u662f\u66f4\u591a\u7684\u662f\u4f7f\u7528Scala\u548cJava\u63d0\u4f9b\u7684\u6ce8\u89e3\u3002<br \/>\n\u6ce8\u89e3\u5fc5\u987b\u6269\u5c55Annotation\u7279\u8d28\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">unchecked<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">annotation<\/span>.<span class=\"hljs-title\">Annotation<\/span><\/span><\/code><\/pre>\n<h2 id=\"124-\u9488\u5bf9java\u7684\u6ce8\u89e3\"><a name=\"t111\"><\/a><a name=\"t111\"><\/a>12.4 \u9488\u5bf9Java\u7684\u6ce8\u89e3<\/h2>\n<p>1) Java\u4fee\u9970\u7b26\uff1a\u5bf9\u4e8e\u90a3\u4e9b\u4e0d\u662f\u5f88\u5e38\u7528\u7684Java\u7279\u6027\uff0cScala\u4f7f\u7528\u6ce8\u89e3\uff0c\u800c\u4e0d\u662f\u4fee\u9970\u7b26\u5173\u952e\u5b57\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@volatile<\/span> <span class=\"hljs-keyword\">var<\/span> done = <span class=\"hljs-literal\">false<\/span> <span class=\"hljs-comment\">\/\/ JVM\u4e2d\u5c06\u6210\u4e3avolatile\u7684\u5b57\u6bb5<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@transient<\/span> <span class=\"hljs-keyword\">var<\/span> recentLookups = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">HashMap<\/span>[<span class=\"hljs-title class_\">String<\/span>, <span class=\"hljs-title class_\">String<\/span>] <span class=\"hljs-comment\">\/\/ \u5728JVM\u4e2d\u5c06\u6210\u4e3atransient\u5b57\u6bb5\uff0c\u8be5\u5b57\u6bb5\u4e0d\u4f1a\u88ab\u5e8f\u5217\u5316\u3002<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@strictfp<\/span> def <span class=\"hljs-title function_\">calculate<\/span>(<span class=\"hljs-attr\">x<\/span>: <span class=\"hljs-title class_\">Double<\/span>) = &#8230;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@native<\/span> def <span class=\"hljs-title function_\">win32RegKeys<\/span>(<span class=\"hljs-attr\">root<\/span>: <span class=\"hljs-title class_\">Int<\/span>, <span class=\"hljs-attr\">path<\/span>: <span class=\"hljs-title class_\">String<\/span>): <span class=\"hljs-title class_\">Array<\/span>[<span class=\"hljs-title class_\">String<\/span>]<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<p>2) \u6807\u8bb0\u63a5\u53e3\uff1aScala\u7528\u6ce8\u89e3@cloneable\u548c@remote \u800c\u4e0d\u662f Cloneable\u548cJava.rmi.Remote\u201c\u6807\u8bb0\u63a5\u53e3\u201d\u6765\u6807\u8bb0\u53ef\u88ab\u514b\u9686\u7684\u5bf9\u8c61\u548c\u8fdc\u7a0b\u7684\u5bf9\u8c61\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-ruby\"><span class=\"hljs-variable\">@cloneable<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span><\/span><\/code><\/pre>\n<p>3) \u53d7\u68c0\u5f02\u5e38\uff1a\u548cScala\u4e0d\u540c\uff0cJava\u7f16\u8bd1\u5668\u4f1a\u8ddf\u8e2a\u53d7\u68c0\u5f02\u5e38\u3002\u5982\u679c\u4f60\u4eceJava\u4ee3\u7801\u4e2d\u8c03\u7528Scala\u7684\u65b9\u6cd5\uff0c\u5176\u7b7e\u540d\u5e94\u5305\u542b\u90a3\u4e9b\u53ef\u80fd\u88ab\u629b\u51fa\u7684\u53d7\u68c0\u5f02\u5e38\u3002\u7528@throws\u6ce8\u89e3\u6765\u751f\u6210\u6b63\u786e\u7684\u7b7e\u540d\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Book<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@throws<\/span> (classOf[<span class=\"hljs-title class_\">IOException<\/span>]) def <span class=\"hljs-title function_\">read<\/span>(<span class=\"hljs-params\">filename: <span class=\"hljs-built_in\">String<\/span><\/span>) { &#8230; }<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">&#8230;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title class_\">Java<\/span>\u7248\u672c\u7684\u65b9\u6cd5\u7b7e\u540d\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">void<\/span> <span class=\"hljs-title function_\">read<\/span>(<span class=\"hljs-title class_\">String<\/span> fileName) throws <span class=\"hljs-title class_\">IOException<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u5982\u679c\u6ca1\u6709@throws\u6ce8\u89e3\uff0cJava\u4ee3\u7801\u5c06\u4e0d\u80fd\u6355\u83b7\u8be5\u5f02\u5e38<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">try<\/span> {<span class=\"hljs-comment\">\/\/Java\u4ee3\u7801<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">book.<span class=\"hljs-title function_\">read<\/span>(<span class=\"hljs-string\">&#8220;war-and-peace.txt&#8221;<\/span>);<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">} <span class=\"hljs-keyword\">catch<\/span> (<span class=\"hljs-title class_\">IOException<\/span> ex) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">&#8230;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-typescript\"><\/code><\/pre>\n<p>\u5373\uff1aJava\u7f16\u8bd1\u671f\u9700\u8981\u5728\u7f16\u8bd1\u65f6\u5c31\u77e5\u9053read\u65b9\u6cd5\u53ef\u4ee5\u629bIOException\u5f02\u5e38\uff0c\u5426\u5219Java\u4f1a\u62d2\u7edd\u6355\u83b7\u8be5\u5f02\u5e38\u3002<\/p>\n<h2 id=\"125-\u7531\u4e8e\u4f18\u5316\u7684\u6ce8\u89e3\"><a name=\"t112\"><\/a><a name=\"t112\"><\/a>12.5 \u7531\u4e8e\u4f18\u5316\u7684\u6ce8\u89e3<\/h2>\n<p>\u5c3e\u9012\u5f52\u7684\u4f18\u5316<br \/>\n\u5565\u73a9\u662f\u5c3e\u9012\u5f52\uff1f<br \/>\n\u5c3e\u9012\u5f52\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-ruby\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">story<\/span><span class=\"hljs-params\">()<\/span><\/span>: Unit = {\u4ece\u524d\u6709\u5ea7\u5c71\uff0c\u5c71\u4e0a\u6709\u5ea7\u5e99\uff0c\u5e99\u91cc\u6709\u4e2a\u8001\u548c\u5c1a\uff0c\u4e00\u5929\u8001\u548c\u5c1a\u5bf9\u5c0f\u548c\u5c1a\u8bb2\u6545\u4e8b\uff1astory()}<\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u8fdb\u5165\u4e0b\u4e00\u4e2a\u51fd\u6570\u4e0d\u518d\u9700\u8981\u4e0a\u4e00\u4e2a\u51fd\u6570\u7684\u73af\u5883\u4e86\uff0c\u5f97\u51fa\u7ed3\u679c\u4ee5\u540e\u76f4\u63a5\u8fd4\u56de\u3002<\/em><br \/>\n\u975e\u5c3e\u9012\u5f52\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-ruby\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">story<\/span><span class=\"hljs-params\">()<\/span><\/span>: Unit =  {\u4ece\u524d\u6709\u5ea7\u5c71\uff0c\u5c71\u4e0a\u6709\u5ea7\u5e99\uff0c\u5e99\u91cc\u6709\u4e2a\u8001\u548c\u5c1a\uff0c\u4e00\u5929\u8001\u548c\u5c1a\u5bf9\u5c0f\u548c\u5c1a\u8bb2\u6545\u4e8b\uff1astory()\uff0c\u5c0f\u548c\u5c1a\u542c\u4e86\uff0c\u627e\u4e86\u5757\u8c46\u8150\u649e\u6b7b\u4e86}<\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u4e0b\u4e00\u4e2a\u51fd\u6570\u7ed3\u675f\u4ee5\u540e\u6b64\u51fd\u6570\u8fd8\u6709\u540e\u7eed\uff0c\u6240\u4ee5\u5fc5\u987b\u4fdd\u5b58\u672c\u8eab\u7684\u73af\u5883\u4ee5\u4f9b\u5904\u7406\u8fd4\u56de\u503c\u3002<\/em><br \/>\n\u9012\u5f52\u8c03\u7528\u6709\u65f6\u5019\u80fd\u88ab\u8f6c\u5316\u6210\u5faa\u73af\uff0c\u8fd9\u6837\u80fd\u8282\u7ea6\u6808\u7a7a\u95f4\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">object Util {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def sum(xs: Se<span class=\"hljs-string\">q[Int]<\/span>): BigInt = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (xs.isEmpty) <span class=\"hljs-number\">0<\/span> <span class=\"hljs-keyword\">else<\/span> xs.head + sum(xs.tail)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">&#8230;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<p>\u4e0a\u9762\u7684sum\u65b9\u6cd5\u65e0\u6cd5\u88ab\u4f18\u5316\uff0c\u56e0\u4e3a\u8ba1\u7b97\u8fc7\u7a0b\u4e2d\u6700\u540e\u4e00\u6b65\u662f\u52a0\u6cd5\uff0c\u800c\u4e0d\u662f\u9012\u5f52\u8c03\u7528\u3002\u8c03\u6574\u540e\u7684\u4ee3\u7801\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def sum2(xs: Se<span class=\"hljs-string\">q[Int]<\/span>, partial: BigInt): BigInt = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (xs.isEmpty) partial <span class=\"hljs-keyword\">else<\/span> sum2(xs.tail, xs.head + partial)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<p>Scala\u7f16\u8bd1\u5668\u4f1a\u81ea\u52a8\u5bf9sum2\u5e94\u7528\u201c\u5c3e\u9012\u5f52\u201d\u4f18\u5316\u3002\u5982\u679c\u4f60\u8c03\u7528sum(1 to 1000000) \u5c06\u4f1a\u53d1\u751f\u4e00\u4e2a\u6808\u6ea2\u51fa\u9519\u8bef\u3002\u4e0d\u8fc7sum2(1 to 1000000, 0) \u5c06\u4f1a\u5f97\u5230\u6b63\u786e\u7684\u7ed3\u679c\u3002<br \/>\n\u5c3d\u7ba1Scala\u7f16\u8bd1\u5668\u4f1a\u5c1d\u8bd5\u4f7f\u7528\u5c3e\u9012\u5f52\u4f18\u5316\uff0c\u4f46\u6709\u65f6\u5019\u67d0\u4e9b\u4e0d\u592a\u660e\u663e\u7684\u539f\u56e0\u4f1a\u9020\u6210\u5b83\u65e0\u6cd5\u8fd9\u6837\u505a\u3002\u5982\u679c\u4f60\u60f3\u7f16\u8bd1\u5668\u65e0\u6cd5\u8fdb\u884c\u4f18\u5316\u65f6\u62a5\u9519\uff0c\u5219\u5e94\u8be5\u7ed9\u4f60\u7684\u65b9\u6cd5\u52a0\u4e0a@tailrec\u6ce8\u89e3\u3002<br \/>\n*\u5c16\u53eb\u63d0\u793a\uff1a\u5bf9\u4e8e\u6d88\u9664\u9012\u5f52\uff0c\u4e00\u4e2a\u66f4\u52a0\u901a\u7528\u7684\u673a\u5236\u53eb\u505a\u201c\u8e66\u5e8a\u201d\u3002\u8e66\u5e8a\u7684\u5b9e\u73b0\u4f1a\u5c06\u6267\u884c\u4e00\u4e2a\u5faa\u73af\uff0c\u4e0d\u505c\u7684\u8c03\u7528\u51fd\u6570\u3002\u6bcf\u4e2a\u51fd\u6570\u90fd\u8fd4\u56de\u4e0b\u4e00\u4e2a\u5c06\u88ab\u8c03\u7528\u7684\u51fd\u6570\u3002\u5c3e\u9012\u5f52\u5728\u8fd9\u91cc\u662f\u4e00\u4e2a\u7279\u4f8b\uff0c\u6bcf\u4e2a\u51fd\u6570\u90fd\u8fd4\u56de\u5b83\u81ea\u5df1\u3002*Scala\u6709\u4e00\u4e2a\u540d\u4e3aTailCalls\u7684\u5de5\u5177\u5bf9\u8c61\uff0c\u5e2e\u52a9\u6211\u4eec\u8f7b\u677e\u5b9e\u73b0\u8e66\u5e8a\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">import scala.util.control.TailCalls.<span class=\"hljs-number\">_<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def evenLength(xs: Se<span class=\"hljs-string\">q[Int]<\/span>): TailRec[Boolean] = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(xs.isEmpty) done(true) <span class=\"hljs-keyword\">else<\/span> tailcall(oddLength(xs.tail))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def oddLength(xs: Se<span class=\"hljs-string\">q[Int]<\/span>): TailRec[Boolean] = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(xs.isEmpty) done(false) <span class=\"hljs-keyword\">else<\/span> tailcall(evenLength(xs.tail))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\/\/ \u83b7\u5f97TailRec\u5bf9\u8c61\u83b7\u53d6\u6700\u7ec8\u7ed3\u679c\uff0c\u53ef\u4ee5\u7528result\u65b9\u6cd5<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">evenLength(<span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">1000000<\/span>).result<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-perl\"><\/code><\/pre>\n<h1 id=\"\u5341\u4e09-\u7c7b\u578b\u53c2\u6570\u5148\u4e86\u89e3\u5373\u53ef\"><a name=\"t113\"><\/a><a name=\"t113\"><\/a>\u5341\u4e09\u3001 \u7c7b\u578b\u53c2\u6570\uff08\u5148\u4e86\u89e3\u5373\u53ef\uff09<\/h1>\n<h2 id=\"131-\u6cdb\u7c7b\u578b\"><a name=\"t114\"><\/a><a name=\"t114\"><\/a>13.1 \u6cdb\u7c7b\u578b<\/h2>\n<p>\u7c7b\u548c\u7279\u8d28\u90fd\u53ef\u4ee5\u5e26\u7c7b\u578b\u53c2\u6570\uff0c\u7528\u65b9\u62ec\u53f7\u6765\u5b9a\u4e49\u7c7b\u578b\u53c2\u6570\uff0c\u53ef\u4ee5\u7528\u7c7b\u578b\u53c2\u6570\u6765\u5b9a\u4e49\u53d8\u91cf\u3001\u65b9\u6cd5\u53c2\u6570\u548c\u8fd4\u56de\u503c\u3002\u5e26\u6709\u4e00\u4e2a\u6216\u591a\u4e2a\u7c7b\u578b\u53c2\u6570\u7684\u7c7b\u662f\u6cdb\u578b\u7684\u3002\u5982\u4e0bp1\uff0c\u5982\u679c\u5b9e\u4f8b\u5316\u65f6\u6ca1\u6709\u6307\u5b9a\u6cdb\u578b\u7c7b\u578b\uff0c\u5219scala\u4f1a\u81ea\u52a8\u6839\u636e\u6784\u9020\u53c2\u6570\u7684\u7c7b\u578b\u81ea\u52a8\u63a8\u65ad\u6cdb\u578b\u7684\u5177\u4f53\u7c7b\u578b\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Pair<\/span>[<span class=\"hljs-title\">T<\/span>, <span class=\"hljs-type\">S]<\/span><\/span>(<span class=\"hljs-keyword\">val<\/span> first: T, <span class=\"hljs-keyword\">val<\/span> second: S) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> def toString = <span class=\"hljs-string\">&#8220;(&#8220;<\/span> + first + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + second + <span class=\"hljs-string\">&#8220;)&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u4ece\u6784\u9020\u53c2\u6570\u63a8\u65ad\u7c7b\u578b<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p1 = new Pair(<span class=\"hljs-number\">42<\/span>, <span class=\"hljs-string\">&#8220;String&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u8bbe\u7f6e\u7c7b\u578b<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p2 = new Pair[Any, Any](<span class=\"hljs-number\">42<\/span>, <span class=\"hljs-string\">&#8220;String&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"132-\u6cdb\u578b\u51fd\u6570\"><a name=\"t115\"><\/a><a name=\"t115\"><\/a>13.2 \u6cdb\u578b\u51fd\u6570<\/h2>\n<p>\u51fd\u6570\u6216\u65b9\u6cd5\u4e5f\u53ef\u4ee5\u6709\u7c7b\u578b\uff08\u6cdb\u578b\uff09\u53c2\u6570\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/ \u4ece\u53c2\u6570\u7c7b\u578b\u6765\u63a8\u65ad\u7c7b\u578b<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(<span class=\"hljs-title function_\">getMiddle<\/span>(<span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-string\">&#8220;Bob&#8221;<\/span>, <span class=\"hljs-string\">&#8220;had&#8221;<\/span>, <span class=\"hljs-string\">&#8220;a&#8221;<\/span>, <span class=\"hljs-string\">&#8220;little&#8221;<\/span>, <span class=\"hljs-string\">&#8220;brother&#8221;<\/span>)).<span class=\"hljs-property\">getClass<\/span>.<span class=\"hljs-property\">getTypeName<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u6307\u5b9a\u7c7b\u578b\uff0c\u5e76\u4fdd\u5b58\u4e3a\u5177\u4f53\u7684\u51fd\u6570\u3002<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val f = getMiddle[<span class=\"hljs-title class_\">String<\/span>] _<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(<span class=\"hljs-title function_\">f<\/span>(<span class=\"hljs-title class_\">Array<\/span>(<span class=\"hljs-string\">&#8220;Bob&#8221;<\/span>, <span class=\"hljs-string\">&#8220;had&#8221;<\/span>, <span class=\"hljs-string\">&#8220;a&#8221;<\/span>, <span class=\"hljs-string\">&#8220;little&#8221;<\/span>, <span class=\"hljs-string\">&#8220;brother&#8221;<\/span>)))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<h2 id=\"133-\u7c7b\u578b\u53d8\u91cf\u9650\u5b9a\"><a name=\"t116\"><\/a><a name=\"t116\"><\/a>13.3 \u7c7b\u578b\u53d8\u91cf\u9650\u5b9a<\/h2>\n<p>\u5728Java\u6cdb\u578b\u91cc\u4e0d\u8868\u793a\u67d0\u4e2a\u6cdb\u578b\u662f\u53e6\u5916\u4e00\u4e2a\u6cdb\u578b\u7684\u5b50\u7c7b\u578b\u53ef\u4ee5\u4f7f\u7528extends\u5173\u952e\u5b57\uff0c\u800c\u5728scala\u4e2d\u4f7f\u7528\u7b26\u53f7\u201c&lt;:\u201d\uff0c\u8fd9\u79cd\u5f62\u5f0f\u79f0\u4e4b\u4e3a\u6cdb\u578b\u7684\u4e0a\u754c\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Pair1<\/span>[<span class=\"hljs-type\">T<\/span> &lt;: <span class=\"hljs-type\">Comparable<\/span>[<span class=\"hljs-type\">T<\/span>]](<span class=\"hljs-params\">val first: <span class=\"hljs-type\">T<\/span>, val second: <span class=\"hljs-type\">T<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">smaller<\/span> <\/span>= <span class=\"hljs-keyword\">if<\/span> (first.compareTo(second) &lt; <span class=\"hljs-number\">0<\/span>) first <span class=\"hljs-keyword\">else<\/span> second<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main1<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Pair1<\/span>(<span class=\"hljs-string\">&#8220;Fred&#8221;<\/span>, <span class=\"hljs-string\">&#8220;Brooks&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(p.smaller)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u5728Java\u6cdb\u578b\u91cc\u8868\u793a\u67d0\u4e2a\u6cdb\u578b\u662f\u53e6\u5916\u4e00\u4e2a\u6cdb\u578b\u7684\u7236\u7c7b\u578b\uff0c\u4f7f\u7528super\u5173\u952e\u5b57\uff0c\u800c\u5728scala\u4e2d\uff0c\u4f7f\u7528\u7b26\u53f7\u201c&gt;:\u201d\uff0c\u8fd9\u79cd\u5f62\u5f0f\u79f0\u4e4b\u4e3a\u6cdb\u578b\u7684\u4e0b\u754c\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Pair2<\/span>[<span class=\"hljs-type\">T<\/span>](<span class=\"hljs-params\">val first: <span class=\"hljs-type\">T<\/span>, val second: <span class=\"hljs-type\">T<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">replaceFirst<\/span><\/span>[<span class=\"hljs-type\">R<\/span> &gt;: <span class=\"hljs-type\">T<\/span>](newFirst: <span class=\"hljs-type\">R<\/span>) = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Pair2<\/span>[<span class=\"hljs-type\">R<\/span>](newFirst, second)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString<\/span> <\/span>= <span class=\"hljs-string\">&#8220;(&#8220;<\/span> + first + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + second + <span class=\"hljs-string\">&#8220;)&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main2<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Pair2<\/span>(<span class=\"hljs-string\">&#8220;Nick&#8221;<\/span>, <span class=\"hljs-string\">&#8220;Alice&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(p)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(p.replaceFirst(<span class=\"hljs-string\">&#8220;Joke&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(p)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u5728Java\u4e2d\uff0cT\u540c\u65f6\u662fA\u548cB\u7684\u5b50\u7c7b\u578b\uff0c\u79f0\u4e4b\u4e3a\u591a\u754c\uff0c\u5f62\u5f0f\u5982\uff1a<\/p>\n<h2 id=\"135-\u89c6\u56fe\u754c\u5b9a\"><a name=\"t117\"><\/a><a name=\"t117\"><\/a>13.5 \u89c6\u56fe\u754c\u5b9a<\/h2>\n<p>\u5728Scala\u4e2d\uff0c\u5982\u679c\u4f60\u60f3\u6807\u8bb0\u67d0\u4e00\u4e2a\u6cdb\u578b\u53ef\u4ee5\u9690\u5f0f\u7684\u8f6c\u6362\u4e3a\u53e6\u4e00\u4e2a\u6cdb\u578b\uff0c\u53ef\u4ee5\u4f7f\u7528\uff1a[T &lt;% Comparable[T]]\uff0c\u7531\u4e8eScala\u7684Int\u7c7b\u578b\u6ca1\u6709\u5b9e\u73b0Comparable\u63a5\u53e3\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u5c06Int\u7c7b\u578b\u9690\u5f0f\u7684\u8f6c\u6362\u4e3aRichInt\u7c7b\u578b\uff0c\u6bd4\u5982\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Pair3<\/span>[<span class=\"hljs-type\">T<\/span> &lt;% <span class=\"hljs-type\">Comparable<\/span>[<span class=\"hljs-type\">T<\/span>]](<span class=\"hljs-params\">val first: <span class=\"hljs-type\">T<\/span>, val second: <span class=\"hljs-type\">T<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">smaller<\/span> <\/span>= <span class=\"hljs-keyword\">if<\/span> (first.compareTo(second) &lt; <span class=\"hljs-number\">0<\/span>) first <span class=\"hljs-keyword\">else<\/span> second<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString<\/span> <\/span>= <span class=\"hljs-string\">&#8220;(&#8220;<\/span> + first + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + second + <span class=\"hljs-string\">&#8220;)&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main3<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Pair3<\/span>(<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">2<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(p.smaller)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"136-\u4e0a\u4e0b\u6587\u754c\u5b9a\"><a name=\"t118\"><\/a><a name=\"t118\"><\/a>13.6 \u4e0a\u4e0b\u6587\u754c\u5b9a<\/h2>\n<p>\u89c6\u56fe\u754c\u5b9a T &lt;% V\u8981\u6c42\u5fc5\u987b\u5b58\u5728\u4e00\u4e2a\u4eceT\u5230V\u7684\u9690\u5f0f\u8f6c\u6362\u3002\u4e0a\u4e0b\u6587\u754c\u5b9a\u7684\u5f62\u5f0f\u4e3aT:M\uff0c\u5176\u4e2dM\u662f\u53e6\u4e00\u4e2a\u6cdb\u578b\u7c7b\uff0c\u5b83\u8981\u6c42\u5fc5\u987b\u5b58\u5728\u4e00\u4e2a\u7c7b\u578b\u4e3aM[T]\u7684\u9690\u5f0f\u503c\u3002<br \/>\n\u4e0b\u9762\u7c7b\u5b9a\u4e49\u8981\u6c42\u5fc5\u987b\u5b58\u5728\u4e00\u4e2a\u7c7b\u578b\u4e3aOrdering[T]\u7684\u9690\u5f0f\u503c\uff0c\u5f53\u4f60\u4f7f\u7528\u4e86\u4e00\u4e2a\u4f7f\u7528\u4e86\u9690\u5f0f\u503c\u5f97\u65b9\u6cd5\u65f6\uff0c\u4f20\u5165\u8be5\u9690\u5f0f\u53c2\u6570\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Pair4<\/span>[<span class=\"hljs-type\">T<\/span>: <span class=\"hljs-type\">Ordering<\/span>](<span class=\"hljs-params\">val first: <span class=\"hljs-type\">T<\/span>, val second: <span class=\"hljs-type\">T<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">smaller<\/span><\/span>(<span class=\"hljs-keyword\">implicit<\/span> ord: <span class=\"hljs-type\">Ordering<\/span>[<span class=\"hljs-type\">T<\/span>]) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(ord)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (ord.compare(first, second) &lt; <span class=\"hljs-number\">0<\/span>) first <span class=\"hljs-keyword\">else<\/span> second<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString<\/span> <\/span>= <span class=\"hljs-string\">&#8220;(&#8220;<\/span> + first + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + second + <span class=\"hljs-string\">&#8220;)&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main4<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p4 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Pair4<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(p4.smaller)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"137-manifest\u4e0a\u4e0b\u6587\u754c\u5b9a\"><a name=\"t119\"><\/a><a name=\"t119\"><\/a>13.7 Manifest\u4e0a\u4e0b\u6587\u754c\u5b9a<\/h2>\n<p>Manifest\u662fscala2.8\u5f15\u5165\u7684\u4e00\u4e2a\u7279\u8d28\uff0c\u7528\u4e8e\u7f16\u8bd1\u5668\u5728\u8fd0\u884c\u65f6\u4e5f\u80fd\u83b7\u53d6\u6cdb\u578b\u7c7b\u578b\u7684\u4fe1\u606f\u3002\u5728JVM\u4e0a\uff0c\u6cdb\u578b\u53c2\u6570\u7c7b\u578bT\u5728\u8fd0\u884c\u65f6\u662f\u88ab\u201c\u64e6\u62ed\u201d\u6389\u7684\uff0c\u7f16\u8bd1\u5668\u628aT\u5f53\u4f5cObject\u6765\u5bf9\u5f85\uff0c\u6240\u4ee5T\u7684\u5177\u4f53\u4fe1\u606f\u662f\u65e0\u6cd5\u5f97\u5230\u7684\uff1b\u4e3a\u4e86\u4f7f\u5f97\u5728\u8fd0\u884c\u65f6\u5f97\u5230T\u7684\u4fe1\u606f\uff0cscala\u9700\u8981\u989d\u5916\u901a\u8fc7Manifest\u6765\u5b58\u50a8T\u7684\u4fe1\u606f\uff0c\u5e76\u4f5c\u4e3a\u53c2\u6570\u7528\u5728\u65b9\u6cd5\u7684\u8fd0\u884c\u65f6\u4e0a\u4e0b\u6587\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-r\">def test<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span> <span class=\"hljs-punctuation\">(<\/span>x<span class=\"hljs-operator\">:<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">,<\/span> m<span class=\"hljs-operator\">:<\/span>Manifest<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span><span class=\"hljs-punctuation\">)<\/span> <span class=\"hljs-punctuation\">{<\/span> ... <span class=\"hljs-punctuation\">}<\/span><\/code><\/pre>\n<p>\u6709\u4e86Manifest[T]\u8fd9\u4e2a\u8bb0\u5f55T\u7c7b\u578b\u4fe1\u606f\u7684\u53c2\u6570m\uff0c\u5728\u8fd0\u884c\u65f6\u5c31\u53ef\u4ee5\u6839\u636em\u6765\u66f4\u51c6\u786e\u7684\u5224\u65adT\u4e86\u3002\u4f46\u5982\u679c\u6bcf\u4e2a\u65b9\u6cd5\u90fd\u8fd9\u4e48\u5199\uff0c\u8ba9\u65b9\u6cd5\u7684\u8c03\u7528\u8005\u8981\u989d\u5916\u4f20\u5165m\u53c2\u6570\uff0c\u975e\u5e38\u4e0d\u53cb\u597d\uff0c\u4e14\u5bf9\u65b9\u6cd5\u7684\u8bbe\u8ba1\u662f\u4e00\u9053\u4f24\u75a4\u3002\u597d\u5728scala\u4e2d\u6709\u9690\u5f0f\u8f6c\u6362\u3001\u9690\u5f0f\u53c2\u6570\u7684\u529f\u80fd\uff0c\u5728\u8fd9\u4e2a\u5730\u65b9\u53ef\u4ee5\u7528\u9690\u5f0f\u53c2\u6570\u6765\u51cf\u8f7b\u8c03\u7528\u8005\u7684\u9ebb\u70e6\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def foo[T](x: List[T])(implicit m: Manifest[T]) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(m)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span> (m &lt;:&lt; manifest[String])<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-string\">&#8220;Hey, this list is full of strings&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">else<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-string\">&#8220;Non-stringy list&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">foo(List(<span class=\"hljs-string\">&#8220;one&#8221;<\/span>, <span class=\"hljs-string\">&#8220;two&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">foo(List(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">foo(List(<span class=\"hljs-string\">&#8220;one&#8221;<\/span>, <span class=\"hljs-number\">2<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<p>\u9690\u5f0f\u53c2\u6570m\u662f\u7531\u7f16\u8bd1\u5668\u6839\u636e\u4e0a\u4e0b\u6587\u81ea\u52a8\u4f20\u5165\u7684\uff0c\u6bd4\u5982\u4e0a\u9762\u662f\u7f16\u8bd1\u5668\u6839\u636e \u201cone\u201d,\u201dtwo\u201d \u63a8\u65ad\u51fa T \u7684\u7c7b\u578b\u662f String\uff0c\u4ece\u800c\u9690\u5f0f\u7684\u4f20\u5165\u4e86\u4e00\u4e2aManifest[String]\u7c7b\u578b\u7684\u5bf9\u8c61\u53c2\u6570\uff0c\u4f7f\u5f97\u8fd0\u884c\u65f6\u53ef\u4ee5\u6839\u636e\u8fd9\u4e2a\u53c2\u6570\u505a\u66f4\u591a\u7684\u4e8b\u60c5\u3002<br \/>\n\u4e0d\u8fc7\u4e0a\u9762\u7684foo \u65b9\u6cd5\u5b9a\u4e49\u4f7f\u7528\u9690\u5f0f\u53c2\u6570\u7684\u65b9\u5f0f\uff0c\u4ecd\u663e\u5f97\u5570\u55e6\uff0c\u4e8e\u662fscala\u91cc\u53c8\u5f15\u5165\u4e86\u201c\u4e0a\u4e0b\u6587\u7ed1\u5b9a\u201d\uff0c<\/p>\n<pre class=\"has\"><code class=\"hljs language-r\">def foo<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span><span class=\"hljs-punctuation\">(<\/span>x<span class=\"hljs-operator\">:<\/span> List<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span><span class=\"hljs-punctuation\">)<\/span> <span class=\"hljs-punctuation\">(<\/span>implicit m<span class=\"hljs-operator\">:<\/span> Manifest<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span><span class=\"hljs-punctuation\">)<\/span><\/code><\/pre>\n<p>\u53ef\u4ee5\u7b80\u5316\u4e3a\uff1a<br \/>\ndef foo[T:Manifest] (x: List[T])<br \/>\n\u5728\u5f15\u5165Manifest\u7684\u65f6\u5019\uff0c\u8fd8\u5f15\u5165\u4e86\u4e00\u4e2a\u66f4\u5f31\u4e00\u70b9\u7684ClassManifest\uff0c\u6240\u8c13\u7684\u5f31\u662f\u6307\u7c7b\u578b\u4fe1\u606f\u4e0d\u5982Manifest\u90a3\u4e48\u5b8c\u6574\uff0c\u4e3b\u8981\u9488\u5bf9\u9ad8\u9636\u7c7b\u578b\u7684\u60c5\u51b5<br \/>\nscala\u57282.10\u91cc\u5374\u7528TypeTag\u66ff\u4ee3\u4e86Manifest\uff0c\u7528ClassTag\u66ff\u4ee3\u4e86ClassManifest\uff0c\u539f\u56e0\u662f\u5728\u8def\u5f84\u4f9d\u8d56\u7c7b\u578b\u4e2d\uff0cManifest\u5b58\u5728\u95ee\u9898\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Foo<\/span><\/span>{<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Bar<\/span>}<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">defined <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Foo<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">m<\/span><\/span>(f: <span class=\"hljs-type\">Foo<\/span>)(b: f.<span class=\"hljs-type\">Bar<\/span>)(<span class=\"hljs-keyword\">implicit<\/span> ev: <span class=\"hljs-type\">Manifest<\/span>[f.<span class=\"hljs-type\">Bar<\/span>]) = ev<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">warning: there were <span class=\"hljs-number\">2<\/span> deprecation warnings; re-run <span class=\"hljs-keyword\">with<\/span> -deprecation <span class=\"hljs-keyword\">for<\/span> details<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">m: (f: <span class=\"hljs-type\">Foo<\/span>)(b: f.<span class=\"hljs-type\">Bar<\/span>)(<span class=\"hljs-keyword\">implicit<\/span> ev: <span class=\"hljs-type\">Manifest<\/span>[f.<span class=\"hljs-type\">Bar<\/span>])<span class=\"hljs-type\">Manifest<\/span>[f.<span class=\"hljs-type\">Bar<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-keyword\">val<\/span> f1 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Foo<\/span>;<span class=\"hljs-keyword\">val<\/span> b1 = <span class=\"hljs-keyword\">new<\/span> f1.<span class=\"hljs-type\">Bar<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">f1: <span class=\"hljs-type\">Foo<\/span> = <span class=\"hljs-type\">Foo<\/span>@<span class=\"hljs-number\">681e731<\/span>c<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">b1: f1.<span class=\"hljs-type\">Bar<\/span> = <span class=\"hljs-type\">Foo<\/span>$<span class=\"hljs-type\">Bar<\/span>@<span class=\"hljs-number\">271768<\/span>ab<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-keyword\">val<\/span> f2 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Foo<\/span>;<span class=\"hljs-keyword\">val<\/span> b2 = <span class=\"hljs-keyword\">new<\/span> f2.<span class=\"hljs-type\">Bar<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">f2: <span class=\"hljs-type\">Foo<\/span> = <span class=\"hljs-type\">Foo<\/span>@<span class=\"hljs-number\">3e50039<\/span>c<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">b2: f2.<span class=\"hljs-type\">Bar<\/span> = <span class=\"hljs-type\">Foo<\/span>$<span class=\"hljs-type\">Bar<\/span>@<span class=\"hljs-number\">771<\/span>d16b9<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-keyword\">val<\/span> ev1 = m(f1)(b1)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">warning: there were <span class=\"hljs-number\">2<\/span> deprecation warnings; re-run <span class=\"hljs-keyword\">with<\/span> -deprecation <span class=\"hljs-keyword\">for<\/span> details<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">ev1: <span class=\"hljs-type\">Manifest<\/span>[f1.<span class=\"hljs-type\">Bar<\/span>] = <span class=\"hljs-type\">Foo<\/span>@<span class=\"hljs-number\">681e731<\/span>c.<span class=\"hljs-keyword\">type<\/span>#<span class=\"hljs-type\">Foo<\/span>$<span class=\"hljs-type\">Bar<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-keyword\">val<\/span> ev2 = m(f2)(b2)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">warning: there were <span class=\"hljs-number\">2<\/span> deprecation warnings; re-run <span class=\"hljs-keyword\">with<\/span> -deprecation <span class=\"hljs-keyword\">for<\/span> details<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">ev2: <span class=\"hljs-type\">Manifest<\/span>[f2.<span class=\"hljs-type\">Bar<\/span>] = <span class=\"hljs-type\">Foo<\/span>@<span class=\"hljs-number\">3e50039<\/span>c.<span class=\"hljs-keyword\">type<\/span>#<span class=\"hljs-type\">Foo<\/span>$<span class=\"hljs-type\">Bar<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; ev1 == ev2 <span class=\"hljs-comment\">\/\/ they should be different, thus the result is wrong<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">res28: <span class=\"hljs-type\">Boolean<\/span> = <span class=\"hljs-literal\">true<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u4e86\u89e3\u4e4b\u540e\uff0c\u6211\u4eec\u603b\u7ed3\u4e00\u4e0b\uff0cTypeTag\u5230\u5e95\u6709\u5565\u7528\u5462\uff1f\u770b\u4e0b\u9762\u7684\u4f8b\u5b50\uff1a<br \/>\n\u8bf7\u7559\u610f\uff1a<br \/>\n=:=\uff0c\u610f\u601d\u4e3a\uff1atype equality<br \/>\n&lt;:&lt; ,\u610f\u601d\u4e3a\uff1asubtype relation<br \/>\n\u7c7b\u578b\u5224\u65ad\u4e0d\u8981\u7528 == \u6216 !=<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Animal<\/span><\/span>{}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Dog<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Animal<\/span><\/span>{}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">MainFoo<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list1 = <span class=\"hljs-type\">List<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list2 = <span class=\"hljs-type\">List<\/span>(<span class=\"hljs-string\">&#8220;1&#8221;<\/span>, <span class=\"hljs-string\">&#8220;2&#8221;<\/span>, <span class=\"hljs-string\">&#8220;3&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> list3 = <span class=\"hljs-type\">List<\/span>(<span class=\"hljs-string\">&#8220;1&#8221;<\/span>, <span class=\"hljs-string\">&#8220;2&#8221;<\/span>, <span class=\"hljs-number\">3<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">test1<\/span><\/span>(x: <span class=\"hljs-type\">List<\/span>[<span class=\"hljs-type\">Any<\/span>]) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">x <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> list: <span class=\"hljs-type\">List<\/span>[<span class=\"hljs-type\">Int<\/span>] =&gt; <span class=\"hljs-string\">&#8220;Int list&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> list: <span class=\"hljs-type\">List<\/span>[<span class=\"hljs-type\">String<\/span>] =&gt; <span class=\"hljs-string\">&#8220;String list&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> list: <span class=\"hljs-type\">List<\/span>[<span class=\"hljs-type\">Any<\/span>] =&gt; <span class=\"hljs-string\">&#8220;Any list&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(test1(list1))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(test1(list2))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(test1(list3))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.reflect.runtime.universe._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">test2<\/span><\/span>[<span class=\"hljs-type\">A<\/span> : <span class=\"hljs-type\">TypeTag<\/span>](x: <span class=\"hljs-type\">List<\/span>[<span class=\"hljs-type\">A<\/span>]) = typeOf[<span class=\"hljs-type\">A<\/span>] <span class=\"hljs-keyword\">match<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> t <span class=\"hljs-keyword\">if<\/span> t =:= typeOf[<span class=\"hljs-type\">String<\/span>] =&gt; <span class=\"hljs-string\">&#8220;String List&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> t <span class=\"hljs-keyword\">if<\/span> t &lt;:&lt; typeOf[<span class=\"hljs-type\">Animal<\/span>] =&gt; <span class=\"hljs-string\">&#8220;Dog List&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">case<\/span> t <span class=\"hljs-keyword\">if<\/span> t =:= typeOf[<span class=\"hljs-type\">Int<\/span>] =&gt; <span class=\"hljs-string\">&#8220;Int List&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(test2(<span class=\"hljs-type\">List<\/span>(<span class=\"hljs-string\">&#8220;string&#8221;<\/span>)))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(test2(<span class=\"hljs-type\">List<\/span>(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Dog<\/span>)))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(test2(<span class=\"hljs-type\">List<\/span>(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>)))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"138-\u591a\u91cd\u754c\u5b9a\"><a name=\"t120\"><\/a><a name=\"t120\"><\/a>13.8 \u591a\u91cd\u754c\u5b9a<\/h2>\n<p>\u4e0d\u80fd\u540c\u65f6\u6709\u591a\u4e2a\u4e0a\u754c\u6216\u4e0b\u754c\uff0c\u53d8\u901a\u7684\u65b9\u5f0f\u662f\u4f7f\u7528\u590d\u5408\u7c7b\u578b<br \/>\nT &lt;: A with B<br \/>\nT &gt;: A with B<br \/>\n\u53ef\u4ee5\u540c\u65f6\u6709\u4e0a\u754c\u548c\u4e0b\u754c\uff0c\u5982<br \/>\nT &gt;: A &lt;: B<br \/>\n\u8fd9\u79cd\u60c5\u51b5\u4e0b\u754c\u5fc5\u987b\u5199\u5728\u524d\u8fb9\uff0c\u4e0a\u754c\u5199\u5728\u540e\u8fb9\uff0c\u4f4d\u7f6e\u4e0d\u80fd\u53cd\u3002\u540c\u65f6A\u8981\u7b26\u5408B\u7684\u5b50\u7c7b\u578b\uff0cA\u4e0eB\u4e0d\u80fd\u662f\u4e24\u4e2a\u65e0\u5173\u7684\u7c7b\u578b\u3002<br \/>\n\u53ef\u4ee5\u540c\u65f6\u6709\u591a\u4e2aview bounds<br \/>\nT &lt;% A &lt;% B<br \/>\n\u8fd9\u79cd\u60c5\u51b5\u8981\u6c42\u5fc5\u987b\u540c\u65f6\u5b58\u5728 T=&gt;A\u7684\u9690\u5f0f\u8f6c\u6362\uff0c\u548cT=&gt;B\u7684\u9690\u5f0f\u8f6c\u6362\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">A<\/span><\/span>{}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">B<\/span><\/span>{}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">string2A<\/span><\/span>(s:<span class=\"hljs-type\">String<\/span>) = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">A<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">string2B<\/span><\/span>(s:<span class=\"hljs-type\">String<\/span>) = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">B<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">foo2<\/span><\/span>[ <span class=\"hljs-type\">T<\/span> &lt;% <span class=\"hljs-type\">A<\/span> &lt;% <span class=\"hljs-type\">B<\/span>](x:<span class=\"hljs-type\">T<\/span>) = println(<span class=\"hljs-string\">&#8220;foo2 OK&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">foo2(<span class=\"hljs-string\">&#8220;test&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u53ef\u4ee5\u540c\u65f6\u6709\u591a\u4e2a\u4e0a\u4e0b\u6587\u754c\u5b9a<br \/>\nT : A : B<br \/>\n\u8fd9\u79cd\u60c5\u51b5\u8981\u6c42\u5fc5\u987b\u540c\u65f6\u5b58\u5728C[T]\u7c7b\u578b\u7684\u9690\u5f0f\u503c\uff0c\u548cD[T]\u7c7b\u578b\u7684\u9690\u5f0f\u503c\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">C<\/span>[<span class=\"hljs-type\">T<\/span>]<\/span>;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">D<\/span>[<span class=\"hljs-type\">T<\/span>]<\/span>;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-keyword\">val<\/span> c = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">C<\/span>[<span class=\"hljs-type\">Int<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-keyword\">val<\/span> d = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">D<\/span>[<span class=\"hljs-type\">Int<\/span>]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">foo3<\/span><\/span>[ <span class=\"hljs-type\">T<\/span> : <span class=\"hljs-type\">C<\/span> : <span class=\"hljs-type\">D<\/span> ](i:<span class=\"hljs-type\">T<\/span>) = println(<span class=\"hljs-string\">&#8220;foo3 OK&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">foo3(<span class=\"hljs-number\">2<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"139-\u7c7b\u578b\u7ea6\u675f\"><a name=\"t121\"><\/a><a name=\"t121\"><\/a>13.9 \u7c7b\u578b\u7ea6\u675f<\/h2>\n<p>\u7c7b\u578b\u7ea6\u675f\uff0c\u63d0\u4f9b\u4e86\u9650\u5b9a\u7c7b\u578b\u7684\u53e6\u4e00\u79cd\u65b9\u5f0f\uff0c\u4e00\u5171\u67093\u4e2d\u5173\u7cfb\u58f0\u660e\uff1a<br \/>\nT =:= U\u610f\u601d\u4e3a\uff1aT\u7c7b\u578b\u662f\u5426\u7b49\u4e8eU\u7c7b\u578b<br \/>\nT &lt;:&lt; U\u610f\u601d\u4e3a\uff1aT\u7c7b\u578b\u662f\u5426\u4e3aU\u6216U\u7684\u5b50\u7c7b\u578b<br \/>\nT &lt;%<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-type\">Pair5<\/span>[<span class=\"hljs-type\">T<\/span>] (<span class=\"hljs-title\">val<\/span> <span class=\"hljs-title\">first<\/span>: <span class=\"hljs-type\">T<\/span>, <span class=\"hljs-title\">val<\/span> <span class=\"hljs-title\">second<\/span>: <span class=\"hljs-type\">T<\/span>)(<span class=\"hljs-title\">implicit<\/span> <span class=\"hljs-title\">ev<\/span>: <span class=\"hljs-type\">T<\/span> &lt;:&lt; <span class=\"hljs-type\">Comparable<\/span>[<span class=\"hljs-type\">T<\/span>]){}<\/span><\/code><\/pre>\n<p>\u4f7f\u7528\u4e3e\u4f8b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.io.<span class=\"hljs-type\">File<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Pair6<\/span>[<span class=\"hljs-type\">T<\/span>](<span class=\"hljs-params\">val first: <span class=\"hljs-type\">T<\/span>, val second: <span class=\"hljs-type\">T<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">smaller<\/span><\/span>(<span class=\"hljs-keyword\">implicit<\/span> ev: <span class=\"hljs-type\">T<\/span> &lt;:&lt; <span class=\"hljs-type\">Ordered<\/span>[<span class=\"hljs-type\">T<\/span>]) = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">if<\/span>(first &lt; second) first <span class=\"hljs-keyword\">else<\/span> second<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main6<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u6784\u9020Pair6[File]\u65f6\uff0c\u6ce8\u610f\u6b64\u65f6\u662f\u4e0d\u4f1a\u62a5\u9519\u7684<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p6 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Pair6<\/span>[<span class=\"hljs-type\">File<\/span>](<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">File<\/span>(<span class=\"hljs-string\">&#8220;&#8221;<\/span>), <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">File<\/span>(<span class=\"hljs-string\">&#8220;&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u8fd9\u5c31\u62a5\u9519\u4e86<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">p6.smaller<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"1310-\u578b\u53d8\"><a name=\"t122\"><\/a><a name=\"t122\"><\/a>13.10 \u578b\u53d8<\/h2>\n<p>\u672f\u8bed\uff1a<\/p>\n<div class=\"table-box\">\n<table>\n<thead>\n<tr>\n<th>\u82f1\u6587<\/th>\n<th>\u4e2d\u6587<\/th>\n<th>\u793a\u4f8b<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Variance<\/td>\n<td>\u578b\u53d8<\/td>\n<td>Function[-T, +R]<\/td>\n<\/tr>\n<tr>\n<td>Nonvariant<\/td>\n<td>\u4e0d\u53d8<\/td>\n<td>Array[A]<\/td>\n<\/tr>\n<tr>\n<td>Covariant<\/td>\n<td>\u534f\u53d8<\/td>\n<td>Supplier[+A]<\/td>\n<\/tr>\n<tr>\n<td>Contravariant<\/td>\n<td>\u9006\u53d8<\/td>\n<td>Consumer[-A]<\/td>\n<\/tr>\n<tr>\n<td>Immutable<\/td>\n<td>\u4e0d\u53ef\u53d8<\/td>\n<td>String<\/td>\n<\/tr>\n<tr>\n<td>Mutable<\/td>\n<td>\u53ef\u53d8<\/td>\n<td>StringBuilder<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u5176\u4e2d\uff0cMutable\u5e38\u5e38\u610f\u5473\u7740Nonvariant\uff0c\u4f46\u662fNoncovariant\u4e0eMutable\u5206\u522b\u8868\u793a\u4e24\u4e2a\u4e0d\u540c\u7684\u8303\u7574\u3002<br \/>\n\u5373\uff1a\u53ef\u53d8\u7684\uff0c\u4e00\u822c\u610f\u5473\u7740\u201c\u4e0d\u53ef\u578b\u53d8\u201d\uff0c\u4f46\u662f\u201c\u4e0d\u53ef\u534f\u53d8\u201d\u548c\u53ef\u53d8\u7684\uff0c\u5206\u522b\u8868\u793a\u4e24\u4e2a\u4e0d\u540c\u8303\u7574\u3002<br \/>\n\u578b\u53d8(Variance)\u62e5\u6709\u4e09\u79cd\u57fa\u672c\u5f62\u6001\uff1a\u534f\u53d8(Covariant), \u9006\u53d8(Contravariant), \u4e0d\u53d8(Nonconviant)\uff0c\u53ef\u4ee5\u5f62\u5f0f\u5316\u5730\u63cf\u8ff0\u4e3a\uff1a<br \/>\n\u4e00\u822c\u5730\uff0c\u5047\u8bbe\u7c7b\u578bC[T]\u6301\u6709\u7c7b\u578b\u53c2\u6570T\uff1b\u7ed9\u5b9a\u4e24\u4e2a\u7c7b\u578bA\u548cB\uff0c\u5982\u679c\u6ee1\u8db3A &lt;: B\uff0c\u5219C[A]\u4e0e C[B]\u4e4b\u95f4\u5b58\u5728\u4e09\u79cd\u5173\u7cfb\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u5982\u679cC<span class=\"hljs-selector-attr\">[A]<\/span> &lt;: C[B]\uff0c\u90a3\u4e48C\u662f\u534f\u53d8\u7684(Covariant);<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u5982\u679cC<span class=\"hljs-selector-attr\">[A]<\/span> :&gt; C[B]\uff0c\u90a3\u4e48C\u662f\u9006\u53d8\u7684(Contravariant);<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u5426\u5219\uff0cC\u662f\u4e0d\u53d8\u7684(Nonvariant)\u3002<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-css\"><\/code><\/pre>\n<p>Scala\u7684\u7c7b\u578b\u53c2\u6570\u4f7f\u7528+\u6807\u8bc6\u201c\u534f\u53d8\u201d\uff0c-\u6807\u8bc6\u201c\u9006\u53d8\u201d\uff0c\u800c\u4e0d\u5e26\u4efb\u4f55\u6807\u8bc6\u7684\u8868\u793a\u201c\u4e0d\u53d8\u201d(Nonvariable)\uff1a<\/p>\n<p>\u5982\u4f55\u5224\u65ad\u4e00\u4e2a\u7c7b\u578b\u662f\u5426\u6709\u578b\u53d8\u80fd\u529b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-r\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u4e00\u822c\u5730\uff0c\u201c\u4e0d\u53ef\u53d8\u7684\u201d<span class=\"hljs-punctuation\">(<\/span>Immutable<span class=\"hljs-punctuation\">)<\/span>\u7c7b\u578b\u610f\u5473\u7740\u201c\u578b\u53d8\u201d<span class=\"hljs-punctuation\">(<\/span>Variant<span class=\"hljs-punctuation\">)<\/span>\uff0c\u800c\u201c\u53ef\u53d8\u7684\u201d<span class=\"hljs-punctuation\">(<\/span>Mutable<span class=\"hljs-punctuation\">)<\/span>\u610f\u5473\u7740\u201c\u4e0d\u53d8\u201d<span class=\"hljs-punctuation\">(<\/span>Nonvariant<span class=\"hljs-punctuation\">)<\/span>\u3002<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u5176\u4e2d\uff0c\u5bf9\u4e8e\u4e0d\u53ef\u53d8\u7684<span class=\"hljs-punctuation\">(<\/span>Immutable<span class=\"hljs-punctuation\">)<\/span>\u7c7b\u578bC<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u5982\u679c\u5b83\u662f\u4e00\u4e2a\u751f\u4ea7\u8005\uff0c\u5176\u7c7b\u578b\u53c2\u6570\u5e94\u8be5\u662f\u534f\u53d8\u7684\uff0c\u5373C<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-operator\">+<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span>\uff1b<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u5982\u679c\u5b83\u662f\u4e00\u4e2a\u6d88\u8d39\u8005\uff0c\u5176\u7c7b\u578b\u53c2\u6570\u5e94\u8be5\u662f\u9006\u53d8\u7684\uff0c\u5373C<span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-operator\">&#8211;<\/span><span class=\"hljs-built_in\">T<\/span><span class=\"hljs-punctuation\">]<\/span>\u3002<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-r\"><\/code><\/pre>\n<h1 id=\"\u5341\u56db-\u9690\u5f0f\u8f6c\u6362\u548c\u9690\u5f0f\u53c2\u6570\"><a name=\"t123\"><\/a><a name=\"t123\"><\/a>\u5341\u56db\u3001 \u9690\u5f0f\u8f6c\u6362\u548c\u9690\u5f0f\u53c2\u6570<\/h1>\n<h2 id=\"141-\u9690\u5f0f\u8f6c\u6362\"><a name=\"t124\"><\/a><a name=\"t124\"><\/a>14.1 \u9690\u5f0f\u8f6c\u6362<\/h2>\n<p>\u9690\u5f0f\u8f6c\u6362\u51fd\u6570\u662f\u4ee5implicit\u5173\u952e\u5b57\u58f0\u660e\u7684\u5e26\u6709\u5355\u4e2a\u53c2\u6570\u7684\u51fd\u6570\u3002\u8fd9\u79cd\u51fd\u6570\u5c06\u4f1a\u81ea\u52a8\u5e94\u7528\uff0c\u5c06\u503c\u4ece\u4e00\u79cd\u7c7b\u578b\u8f6c\u6362\u4e3a\u53e6\u4e00\u79cd\u7c7b\u578b\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">implicit def a(d: <span class=\"hljs-built_in\">Double<\/span>) = d.toInt<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u4e0d\u52a0\u4e0a\u8fb9\u8fd9\u53e5\u4f60\u8bd5\u8bd5<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> i1: <span class=\"hljs-built_in\">Int<\/span> = <span class=\"hljs-number\">3.5<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(i1)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<h2 id=\"142-\u5229\u7528\u9690\u5f0f\u8f6c\u6362\u4e30\u5bcc\u7c7b\u5e93\u529f\u80fd\"><a name=\"t125\"><\/a><a name=\"t125\"><\/a>14.2 \u5229\u7528\u9690\u5f0f\u8f6c\u6362\u4e30\u5bcc\u7c7b\u5e93\u529f\u80fd<\/h2>\n<p>\u5982\u679c\u9700\u8981\u4e3a\u4e00\u4e2a\u7c7b\u589e\u52a0\u4e00\u4e2a\u65b9\u6cd5\uff0c\u53ef\u4ee5\u901a\u8fc7\u9690\u5f0f\u8f6c\u6362\u6765\u5b9e\u73b0\u3002\u6bd4\u5982\u60f3\u4e3aFile\u589e\u52a0\u4e00\u4e2aread\u65b9\u6cd5\uff0c\u53ef\u4ee5\u5982\u4e0b\u5b9a\u4e49\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">RichFile<\/span>(val <span class=\"hljs-keyword\">from<\/span>: File) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">read<\/span> = Source.fromFile(<span class=\"hljs-keyword\">from<\/span>.getPath).mkString<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">implicit <span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">file2RichFile<\/span>(<span class=\"hljs-params\"><span class=\"hljs-keyword\">from<\/span>: File<\/span>) = new RichFile(<span class=\"hljs-keyword\">from<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val contents = new File(<span class=\"hljs-string\">&#8220;C:\\\\Users\\\\61661\\\\Desktop\\\\scala\u7b14\u8bb0.txt&#8221;<\/span>).read<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(contents)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>\u6709\u4ec0\u4e48\u597d\u5904\u5462\uff1f\u597d\u5904\u5c31\u662f\u4f60\u53ef\u4ee5\u4e0d\u4fee\u6539\u539f\u7248\u672c\u7684\u4ee3\u7801\u800c\u4e3a\u539f\u672c\u7684\u4ee3\u7801\u589e\u52a0\u65b0\u529f\u80fd\u3002<\/p>\n<h2 id=\"143-\u9690\u5f0f\u503c\"><a name=\"t126\"><\/a><a name=\"t126\"><\/a>14.3 \u9690\u5f0f\u503c<\/h2>\n<p>\u5c06name\u53d8\u91cf\u6807\u8bb0\u4e3aimplicit\uff0c\u6240\u4ee5\u7f16\u8bd1\u5668\u4f1a\u5728\u65b9\u6cd5\u7701\u7565\u9690\u5f0f\u53c2\u6570\u7684\u60c5\u51b5\u4e0b\u53bb\u641c\u7d22\u4f5c\u7528\u57df\u5185\u7684\u9690\u5f0f\u503c\u4f5c\u4e3a\u7f3a\u5c11\u53c2\u6570\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-keyword\">val<\/span> name = <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">person<\/span><\/span>(<span class=\"hljs-keyword\">implicit<\/span> name: <span class=\"hljs-type\">String<\/span>) = name<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(person)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u4f46\u662f\u5982\u679c\u6b64\u65f6\u4f60\u53c8\u76f8\u540c\u4f5c\u7528\u57df\u4e2d\u5b9a\u4e49\u4e00\u4e2a\u9690\u5f0f\u53d8\u91cf\uff0c\u518d\u6b21\u8c03\u7528\u65b9\u6cd5\u65f6\u5c31\u4f1a\u62a5\u9519\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-keyword\">val<\/span> name = <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-keyword\">val<\/span> name2 = <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">person<\/span><\/span>(<span class=\"hljs-keyword\">implicit<\/span> name: <span class=\"hljs-type\">String<\/span>) = name<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(person)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"144-\u9690\u5f0f\u89c6\u56fe\"><a name=\"t127\"><\/a><a name=\"t127\"><\/a>14.4 \u9690\u5f0f\u89c6\u56fe<\/h2>\n<p>1) \u9690\u5f0f\u8f6c\u6362\u4e3a\u76ee\u6807\u7c7b\u578b\uff1a\u628a\u4e00\u79cd\u7c7b\u578b\u81ea\u52a8\u8f6c\u6362\u5230\u53e6\u4e00\u79cd\u7c7b\u578b<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">foo<\/span>(<span class=\"hljs-params\">msg : String<\/span>) = println(msg)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">implicit <span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title function_\">intToString<\/span>(<span class=\"hljs-params\">x : Int<\/span>) = x.toString<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">foo(<span class=\"hljs-number\">10<\/span>)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-python\"><\/code><\/pre>\n<p>2) \u9690\u5f0f\u8f6c\u6362\u8c03\u7528\u7c7b\u4e2d\u672c\u4e0d\u5b58\u5728\u7684\u65b9\u6cd5<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Dog<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> name = <span class=\"hljs-string\">&#8220;\u91d1\u6bdb&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Skill<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">fly<\/span><\/span>(animal: <span class=\"hljs-type\">Dog<\/span>, skill: <span class=\"hljs-type\">String<\/span>) = println(animal.name + <span class=\"hljs-string\">&#8220;\u5df2\u9886\u609f&#8221;<\/span> + skill)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Learn<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">learningType<\/span><\/span>(s : <span class=\"hljs-type\">Dog<\/span>) = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Skill<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main2<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> unit15.<span class=\"hljs-type\">Learn<\/span>._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> dog = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Dog<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">dog.fly(dog, <span class=\"hljs-string\">&#8220;\u98de\u884c\u6280\u80fd&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<p>\u5f53\u7136\u4e86\uff0c\u4ee5\u4e0a\u64cd\u4f5c\u4e5f\u53ef\u4ee5\u5b9a\u4e49\u5728\u5305\u5bf9\u8c61\u4e2d\uff0c\u5373\uff0c\u5728object Learn\u7684\u5916\u9762\u518d\u5957\u4e00\u5c42\uff0cpackage\uff0c\u6ca1\u95ee\u9898\u7684\uff01<\/p>\n<h2 id=\"145-\u9690\u5f0f\u7c7b\"><a name=\"t128\"><\/a><a name=\"t128\"><\/a>14.5 \u9690\u5f0f\u7c7b<\/h2>\n<p>\u5728scala2.10\u540e\u63d0\u4f9b\u4e86\u9690\u5f0f\u7c7b\uff0c\u53ef\u4ee5\u4f7f\u7528implicit\u58f0\u660e\u7c7b\uff0c\u4f46\u662f\u9700\u8981\u6ce8\u610f\u4ee5\u4e0b\u51e0\u70b9\uff1a<br \/>\n\u2014\u2013 \u5176\u6240\u5e26\u7684\u6784\u9020\u53c2\u6570\u6709\u4e14\u53ea\u80fd\u6709\u4e00\u4e2a<br \/>\n\u2014\u2013 \u9690\u5f0f\u7c7b\u5fc5\u987b\u88ab\u5b9a\u4e49\u5728\u201c\u7c7b\u201d\u6216\u201c\u4f34\u751f\u5bf9\u8c61\u201d\u6216\u201c\u5305\u5bf9\u8c61\u201d\u91cc<br \/>\n\u2014\u2013 \u9690\u5f0f\u7c7b\u4e0d\u80fd\u662fcase class\uff08case class\u5728\u5b9a\u4e49\u4f1a\u81ea\u52a8\u751f\u6210\u4f34\u751f\u5bf9\u8c61\u4e0e2\u77db\u76fe\uff09<br \/>\n\u2014\u2013 \u4f5c\u7528\u57df\u5185\u4e0d\u80fd\u6709\u4e0e\u4e4b\u76f8\u540c\u540d\u79f0\u7684\u6807\u793a\u7b26<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">StringUtils<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">implicit<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">StringImprovement<\/span>(<span class=\"hljs-params\">val s : <span class=\"hljs-type\">String<\/span><\/span>)<\/span>{ <span class=\"hljs-comment\">\/\/\u9690\u5f0f\u7c7b<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">increment<\/span> <\/span>= s.map(x =&gt; (x +<span class=\"hljs-number\">1<\/span>).toChar)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">Main3<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> unit15.<span class=\"hljs-type\">StringUtils<\/span>._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;mobin&#8221;<\/span>.increment)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"146-\u9690\u5f0f\u7684\u8f6c\u6362\u65f6\u673a\"><a name=\"t129\"><\/a><a name=\"t129\"><\/a>14.6 \u9690\u5f0f\u7684\u8f6c\u6362\u65f6\u673a<\/h2>\n<p>1) \u5f53\u65b9\u6cd5\u4e2d\u7684\u53c2\u6570\u7684\u7c7b\u578b\u4e0e\u76ee\u6807\u7c7b\u578b\u4e0d\u4e00\u81f4\u65f6<br \/>\n2) \u5f53\u5bf9\u8c61\u8c03\u7528\u7c7b\u4e2d\u4e0d\u5b58\u5728\u7684\u65b9\u6cd5\u6216\u6210\u5458\u65f6\uff0c\u7f16\u8bd1\u5668\u4f1a\u81ea\u52a8\u5c06\u5bf9\u8c61\u8fdb\u884c\u9690\u5f0f\u8f6c\u6362<\/p>\n<h2 id=\"147-\u9690\u5f0f\u89e3\u6790\u673a\u5236\"><a name=\"t130\"><\/a><a name=\"t130\"><\/a>14.7 \u9690\u5f0f\u89e3\u6790\u673a\u5236<\/h2>\n<p>\u5373\u7f16\u8bd1\u5668\u662f\u5982\u4f55\u67e5\u627e\u5230\u7f3a\u5931\u4fe1\u606f\u7684\uff0c\u89e3\u6790\u5177\u6709\u4ee5\u4e0b\u4e24\u79cd\u89c4\u5219\uff1a<br \/>\n1) \u9996\u5148\u4f1a\u5728\u5f53\u524d\u4ee3\u7801\u4f5c\u7528\u57df\u4e0b\u67e5\u627e\u9690\u5f0f\u5b9e\u4f53\uff08\u9690\u5f0f\u65b9\u6cd5\u3001\u9690\u5f0f\u7c7b\u3001\u9690\u5f0f\u5bf9\u8c61\uff09\u3002<br \/>\n2) \u5982\u679c\u7b2c\u4e00\u6761\u89c4\u5219\u67e5\u627e\u9690\u5f0f\u5b9e\u4f53\u5931\u8d25\uff0c\u4f1a\u7ee7\u7eed\u5728\u9690\u5f0f\u53c2\u6570\u7684\u7c7b\u578b\u7684\u4f5c\u7528\u57df\u91cc\u67e5\u627e\u3002\u7c7b\u578b\u7684\u4f5c\u7528\u57df\u662f\u6307\u4e0e\u8be5\u7c7b\u578b\u76f8\u5173\u8054\u7684\u5168\u90e8\u4f34\u751f\u6a21\u5757\uff0c\u4e00\u4e2a\u9690\u5f0f\u5b9e\u4f53\u7684\u7c7b\u578bT\u5b83\u7684\u67e5\u627e\u8303\u56f4\u5982\u4e0b\uff1a<br \/>\na) \u5982\u679cT\u88ab\u5b9a\u4e49\u4e3aT with A with B with C,\u90a3\u4e48A,B,C\u90fd\u662fT\u7684\u90e8\u5206\uff0c\u5728T\u7684\u9690\u5f0f\u89e3\u6790\u8fc7\u7a0b\u4e2d\uff0c\u5b83\u4eec\u7684\u4f34\u751f\u5bf9\u8c61\u90fd\u4f1a\u88ab\u641c\u7d22\u3002<br \/>\nb) \u5982\u679cT\u662f\u53c2\u6570\u5316\u7c7b\u578b\uff0c\u90a3\u4e48\u7c7b\u578b\u53c2\u6570\u548c\u4e0e\u7c7b\u578b\u53c2\u6570\u76f8\u5173\u8054\u7684\u90e8\u5206\u90fd\u7b97\u4f5cT\u7684\u90e8\u5206\uff0c\u6bd4\u5982List[String]\u7684\u9690\u5f0f\u641c\u7d22\u4f1a\u641c\u7d22List\u7684\u4f34\u751f\u5bf9\u8c61\u548cString\u7684\u4f34\u751f\u5bf9\u8c61\u3002<br \/>\nc) \u5982\u679cT\u662f\u4e00\u4e2a\u5355\u4f8b\u7c7b\u578bp.T\uff0c\u5373T\u662f\u5c5e\u4e8e\u67d0\u4e2ap\u5bf9\u8c61\u5185\uff0c\u90a3\u4e48\u8fd9\u4e2ap\u5bf9\u8c61\u4e5f\u4f1a\u88ab\u641c\u7d22\u3002<br \/>\nd) \u5982\u679cT\u662f\u4e2a\u7c7b\u578b\u6ce8\u5165S#T\uff0c\u90a3\u4e48S\u548cT\u90fd\u4f1a\u88ab\u641c\u7d22\u3002<\/p>\n<h2 id=\"148-\u9690\u5f0f\u8f6c\u6362\u7684\u524d\u63d0\"><a name=\"t131\"><\/a><a name=\"t131\"><\/a>14.8 \u9690\u5f0f\u8f6c\u6362\u7684\u524d\u63d0<\/h2>\n<p>1) \u4e0d\u80fd\u5b58\u5728\u4e8c\u4e49\u6027<br \/>\n2) \u9690\u5f0f\u64cd\u4f5c\u4e0d\u80fd\u5d4c\u5957<\/p>\n<h1 id=\"\u5341\u4e94-\u6587\u4ef6\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\"><a name=\"t132\"><\/a><a name=\"t132\"><\/a>\u5341\u4e94\u3001 \u6587\u4ef6\u548c\u6b63\u5219\u8868\u8fbe\u5f0f<\/h1>\n<h2 id=\"151-\u8bfb\u53d6\u884c\"><a name=\"t133\"><\/a><a name=\"t133\"><\/a>15.1 \u8bfb\u53d6\u884c<\/h2>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.io.Source<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">object<\/span> FileSyllabus {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def main(args: Array[String]): <span class=\"hljs-built_in\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u6587\u4ef6\u8bfb\u53d6<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> file1 = Source.fromFile(<span class=\"hljs-string\">&#8220;C:\\\\Users\\\\61661\\\\Desktop\\\\scala\u7b14\u8bb0.txt&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> lines = file1.getLines<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span> (line &lt;- lines) {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(line)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">file1.close<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u8bb0\u5f97close<\/em><br \/>\n1) \u6587\u4ef6\u5185\u5bb9\u8f6c\u6570\u7ec4\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-sql\">val <span class=\"hljs-keyword\">array<\/span><span class=\"hljs-operator\">=<\/span> file1.getLines.toArray<\/code><\/pre>\n<p>2) \u6587\u4ef6\u5185\u5bb9\u8f6c\u5b57\u7b26\u4e32\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><span class=\"hljs-keyword\">val<\/span> iterator = file1.mkString<\/code><\/pre>\n<h2 id=\"152-\u8bfb\u53d6\u5b57\u7b26\"><a name=\"t134\"><\/a><a name=\"t134\"><\/a>15.2 \u8bfb\u53d6\u5b57\u7b26<\/h2>\n<p>\u7531\u4e8eSource.fromFile\u76f4\u63a5\u8fd4\u56de\u7684\u5c31\u662fIterator[Char]\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u5bf9\u5176\u8fdb\u884c\u8fed\u4ee3\uff0c\u6309\u7167\u5b57\u7b26\u8bbf\u95ee\u91cc\u8fb9\u6bcf\u4e00\u4e2a\u5143\u7d20\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-swift\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">Source<\/span>.fromFile(<span class=\"hljs-string\">&#8220;C:<span class=\"hljs-subst\">\\\\<\/span>Users<span class=\"hljs-subst\">\\\\<\/span>61661<span class=\"hljs-subst\">\\\\<\/span>Desktop<span class=\"hljs-subst\">\\\\<\/span>scala\u7b14\u8bb0.txt&#8221;<\/span>, <span class=\"hljs-string\">&#8220;UTF-8&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span>(ch <span class=\"hljs-operator\">&lt;-<\/span> file2){<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(ch)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">file2.close<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-swift\"><\/code><\/pre>\n<h2 id=\"153-\u8bfb\u53d6\u8bcd\u6cd5\u5355\u5143\u548c\u6570\u5b57\"><a name=\"t135\"><\/a><a name=\"t135\"><\/a>15.3 \u8bfb\u53d6\u8bcd\u6cd5\u5355\u5143\u548c\u6570\u5b57<\/h2>\n<p>\u5982\u679c\u60f3\u5c06\u4ee5\u67d0\u4e2a\u5b57\u7b26\u6216\u67d0\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\u5206\u5f00\u7684\u5b57\u7b26\u6210\u7ec4\u8bfb\u53d6\uff0c\u53ef\u4ee5\u8fd9\u4e48\u505a\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-swift\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val file3 <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-type\">Source<\/span>.fromFile(<span class=\"hljs-string\">&#8220;D:<span class=\"hljs-subst\">\\\\<\/span>BigData\u8bfe\u5802\u7b14\u8bb0<span class=\"hljs-subst\">\\\\<\/span>\u5c1a\u7845\u8c37BigData\u7b14\u8bb0<span class=\"hljs-subst\">\\\\<\/span>\u5c1a\u7845\u8c37\u5927\u6570\u636e\u6280\u672f\u4e4bScala<span class=\"hljs-subst\">\\\\<\/span>2.\u8d44\u6599<span class=\"hljs-subst\">\\\\<\/span>info.csv&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val tokens <span class=\"hljs-operator\">=<\/span> file3.mkString.split(<span class=\"hljs-string\">&#8220;,&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(tokens.mkString(<span class=\"hljs-string\">&#8221; &#8220;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">file3.close<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-swift\"><\/code><\/pre>\n<h2 id=\"154-\u8bfb\u53d6\u7f51\u7edc\u8d44\u6e90\u6587\u4ef6\u5199\u5165\u63a7\u5236\u53f0\u64cd\u4f5c\"><a name=\"t136\"><\/a><a name=\"t136\"><\/a>15.4 \u8bfb\u53d6\u7f51\u7edc\u8d44\u6e90\u3001\u6587\u4ef6\u5199\u5165\u3001\u63a7\u5236\u53f0\u64cd\u4f5c<\/h2>\n<p>1) \u8bfb\u53d6\u7f51\u7edc\u8d44\u6e90<\/p>\n<pre class=\"has\"><code class=\"hljs language-lua\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val webFile = Source.fromURL(<span class=\"hljs-string\">&#8220;http:\/\/www.baidu.com&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">webFile.<span class=\"hljs-built_in\">foreach<\/span>(<span class=\"hljs-built_in\">print<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">webFile.<span class=\"hljs-built_in\">close<\/span>()<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-lua\"><\/code><\/pre>\n<p>2) \u5199\u5165\u6570\u636e\u5230\u6587\u4ef6<\/p>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.io.{File, PrintWriter}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-type\">val<\/span> <span class=\"hljs-variable\">writer<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">PrintWriter<\/span>(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">File<\/span>(<span class=\"hljs-string\">&#8220;\u563f\u563f\u563f.txt&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">for<\/span> (i &lt;- <span class=\"hljs-number\">1<\/span> to <span class=\"hljs-number\">100<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">writer.println(i)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">writer.close()<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-java\"><\/code><\/pre>\n<p>3) \u63a7\u5236\u53f0\u64cd\u4f5c<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u63a7\u5236\u53f0\u4ea4\u4e92&#8211;\u8001API<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">&#8220;\u8bf7\u8f93\u5165\u5185\u5bb9:&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val consoleLine1 = Console.readLine()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-string\">&#8220;\u521a\u624d\u8f93\u5165\u7684\u5185\u5bb9\u662f:&#8221;<\/span> + consoleLine1)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u63a7\u5236\u53f0\u4ea4\u4e92&#8211;\u65b0API<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">print<\/span>(<span class=\"hljs-string\">&#8220;\u8bf7\u8f93\u5165\u5185\u5bb9(\u65b0API):&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val consoleLine2 = StdIn.readLine()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(<span class=\"hljs-string\">&#8220;\u521a\u624d\u8f93\u5165\u7684\u5185\u5bb9\u662f:&#8221;<\/span> + consoleLine2)<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<h2 id=\"155-\u5e8f\u5217\u5316\"><a name=\"t137\"><\/a><a name=\"t137\"><\/a>15.5 \u5e8f\u5217\u5316<\/h2>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-meta\">@SerialVersionUID<\/span>(<span class=\"hljs-number\">1<\/span>L) <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Serializable<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">toString<\/span> <\/span>= name + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + age<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> name = <span class=\"hljs-string\">&#8220;Nick&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> age = <span class=\"hljs-number\">20<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">PersonMain<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> java.io.{<span class=\"hljs-type\">FileOutputStream<\/span>, <span class=\"hljs-type\">FileInputStream<\/span>, <span class=\"hljs-type\">ObjectOutputStream<\/span>, <span class=\"hljs-type\">ObjectInputStream<\/span>}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> nick = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Person<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> out = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ObjectOutputStream<\/span>(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">FileOutputStream<\/span>(<span class=\"hljs-string\">&#8220;Nick.obj&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.writeObject(nick)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">out.close()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> in = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">ObjectInputStream<\/span>(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">FileInputStream<\/span>(<span class=\"hljs-string\">&#8220;Nick.obj&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> saveNick = in.readObject()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">in.close()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(saveNick)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h2 id=\"156-\u8fdb\u7a0b\u63a7\u5236\"><a name=\"t138\"><\/a><a name=\"t138\"><\/a>15.6 \u8fdb\u7a0b\u63a7\u5236<\/h2>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528scala\u6765\u64cd\u4f5cshell\uff0cscala\u63d0\u4f9b\u4e86scala.sys.process\u5305\u63d0\u4f9b\u4e86\u7528\u4e8eshell\u7a0b\u5e8f\u4ea4\u4e92\u7684\u5de5\u5177\u3002<br \/>\n1) \u6267\u884cshell<\/p>\n<pre class=\"has\"><code class=\"hljs language-erlang-repl\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">import sys.process._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;ls -al \/&#8221;<\/span>!<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;ls -al \/&#8221;<\/span>!!<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-erlang-repl\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a!\u548c!!\u7684\u533a\u522b\u5728\u4e8e\uff1aprocess\u5305\u4e2d\u6709\u4e00\u4e2a\u5c06\u5b57\u7b26\u4e32\u9690\u5f0f\u8f6c\u6362\u6210ProcessBuild\u5bf9\u8c61\u7684\u529f\u80fd\uff0c\u611f\u53f9\u53f7\u5c31\u662f\u6267\u884c\u8fd9\u4e2a\u5bf9\u8c61\uff0c\u5355\u611f\u53f9\u53f7\u7684\u610f\u601d\u5c31\u662f\u7a0b\u5e8f\u6267\u884c\u6210\u529f\u8fd4\u56de0\uff0c\u6267\u884c\u5931\u8d25\u8fd4\u56de\u975e0\uff0c\u5982\u679c\u53cc\u611f\u53f9\u53f7\uff0c\u5219\u7ed3\u679c\u4ee5\u5b57\u7b26\u4e32\u7684\u5f62\u5f0f\u8fd4\u56de\u3002<\/em><br \/>\n2) \u7ba1\u9053\u7b26<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> sys.process._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;ls -al \/&#8221;<\/span> #| <span class=\"hljs-string\">&#8220;grep etc&#8221;<\/span> !<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p>3) \u5c06shell\u7684\u6267\u884c\u7ed3\u679c\u91cd\u5b9a\u5411\u5230\u6587\u4ef6<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> sys.process._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;ls -al \/&#8221;<\/span> #| <span class=\"hljs-string\">&#8220;grep etc&#8221;<\/span> !;<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-string\">&#8220;ls -al \/&#8221;<\/span> #&gt;&gt; new <span class=\"hljs-type\">File<\/span>(<span class=\"hljs-string\">&#8220;output.txt&#8221;<\/span>) !;<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u6ce8\u610f\uff0c\u6bcf\u4e00\u4e2a\u611f\u53f9\u53f7\u540e\u8fb9\uff0c\u6709\u5206\u53f7\u7ed3\u675f<\/em><br \/>\n<em>scala\u8fdb\u7a0b\u8fd8\u53ef\u4ee5\u63d0\u4f9b\uff1a<\/em><br \/>\n<em>p #&amp;&amp; q\u64cd\u4f5c\uff0c\u5373p\u4efb\u52a1\u6267\u884c\u6210\u529f\u540e\uff0c\u5219\u6267\u884cq\u4efb\u52a1\u3002<\/em><br \/>\n<em>p #|| q\u64cd\u4f5c\uff0c\u5373p\u4efb\u52a1\u6267\u884c\u4e0d\u6210\u529f\uff0c\u5219\u6267\u884cq\u4efb\u52a1\u3002<\/em><br \/>\n<em>\u65e2\u7136\u8fd9\u4e48\u5f3a\u5927\uff0c\u90a3\u4e48crontab + scala + shell\uff0c\u5c31\u5b8c\u5168\u4e0d\u9700\u8981\u4f7f\u7528oozie\u4e86\u3002<\/em><\/p>\n<h2 id=\"157-\u6b63\u5219\u8868\u8fbe\u5f0f\"><a name=\"t139\"><\/a><a name=\"t139\"><\/a>15.7 \u6b63\u5219\u8868\u8fbe\u5f0f<\/h2>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6b63\u5219\u8868\u8fbe\u5f0f\u5339\u914d\u4e00\u4e2a\u53e5\u5b50\u4e2d\u6240\u6709\u7b26\u5408\u5339\u914d\u7684\u5185\u5bb9\uff0c\u5e76\u8f93\u51fa\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.util.matching.<span class=\"hljs-type\">Regex<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> pattern1 = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Regex<\/span>(<span class=\"hljs-string\">&#8220;(S|s)cala&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> pattern2 = <span class=\"hljs-string\">&#8220;(S|s)cala&#8221;<\/span>.r<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> str = <span class=\"hljs-string\">&#8220;Scala is scalable and cool&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println((pattern2 findAllIn str).mkString(<span class=\"hljs-string\">&#8220;,&#8221;<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h1 id=\"\u5341\u516d-\u9ad8\u7ea7\u7c7b\u578b\"><a name=\"t140\"><\/a><a name=\"t140\"><\/a>\u5341\u516d\u3001 \u9ad8\u7ea7\u7c7b\u578b<\/h1>\n<h2 id=\"161-\u7c7b\u578b\u4e0e\u7c7b\u7684\u533a\u522b\"><a name=\"t141\"><\/a><a name=\"t141\"><\/a>16.1 \u7c7b\u578b\u4e0e\u7c7b\u7684\u533a\u522b<\/h2>\n<p>\u5728Java\u91cc\uff0c\u4e00\u76f4\u5230jdk1.5\u4e4b\u524d\uff0c\u6211\u4eec\u8bf4\u4e00\u4e2a\u5bf9\u8c61\u7684\u7c7b\u578b(type)\uff0c\u90fd\u4e0e\u5b83\u7684class\u662f\u4e00\u4e00\u6620\u5c04\u7684\uff0c\u901a\u8fc7\u83b7\u53d6\u5b83\u4eec\u7684class\u5bf9\u8c61\uff0c\u6bd4\u5982 String.class, int.class, obj.getClass() \u7b49\uff0c\u5c31\u53ef\u4ee5\u5224\u65ad\u5b83\u4eec\u7684\u7c7b\u578b(type)\u662f\u4e0d\u662f\u4e00\u81f4\u7684\u3002<br \/>\n\u800c\u5230\u4e86jdk1.5\u4e4b\u540e\uff0c\u56e0\u4e3a\u5f15\u5165\u4e86\u6cdb\u578b\u7684\u6982\u5ff5\uff0c\u7c7b\u578b\u7cfb\u7edf\u53d8\u5f97\u590d\u6742\u4e86\uff0c\u5e76\u4e14\u56e0\u4e3ajvm\u9009\u62e9\u4e86\u5728\u8fd0\u884c\u65f6\u91c7\u7528\u7c7b\u578b\u64e6\u62ed\u7684\u505a\u6cd5(\u517c\u5bb9\u6027\u8003\u8651)\uff0c\u7c7b\u578b\u5df2\u7ecf\u4e0d\u80fd\u5355\u7eaf\u7684\u7528class\u6765\u533a\u5206\u4e86\uff0c\u6bd4\u5982 List \u548c List \u7684class \u90fd\u662f Class\uff0c\u7136\u800c\u4e24\u8005\u7c7b\u578b(type)\u5374\u662f\u4e0d\u540c\u7684\u3002\u6cdb\u578b\u7c7b\u578b\u7684\u4fe1\u606f\u8981\u901a\u8fc7\u53cd\u5c04\u7684\u6280\u5de7\u6765\u83b7\u53d6\uff0c\u540c\u65f6java\u91cc\u589e\u52a0\u4e86Type\u63a5\u53e3\u6765\u8868\u8fbe\u66f4\u6cdb\u7684\u7c7b\u578b\uff0c\u8fd9\u6837\u5bf9\u4e8e List\u8fd9\u6837\u7531\u7c7b\u578b\u6784\u9020\u5668\u548c\u7c7b\u578b\u53c2\u6570\u7ec4\u6210\u7684\u7c7b\u578b\uff0c\u53ef\u4ee5\u901a\u8fc7 Type \u6765\u63cf\u8ff0\uff1b\u5b83\u548c List \u7c7b\u578b\u7684\u5bf9\u5e94\u7684Type\u5bf9\u8c61\u662f\u5b8c\u5168\u4e0d\u540c\u7684\u3002<\/p>\n<p>\u5728Scala\u91cc\uff0c\u7c7b\u578b\u7cfb\u7edf\u53c8\u6bd4java\u590d\u6742\u5f88\u591a\uff0c\u6cdb\u578b\u4ece\u4e00\u5f00\u59cb\u5c31\u5b58\u5728\uff0c\u8fd8\u652f\u6301\u9ad8\u9636\u7684\u6982\u5ff5(\u540e\u7eed\u4f1a\u8bb2\u8ff0)\u3002\u6240\u4ee5\u5b83\u6ca1\u6709\u76f4\u63a5\u7528Java\u91cc\u7684Type\u63a5\u53e3\uff0c\u800c\u662f\u81ea\u5df1\u63d0\u4f9b\u4e86\u4e00\u4e2ascala.reflect.runtime.universe.Type(2.10\u540e)<br \/>\n\u5728scala\u91cc\u83b7\u53d6\u7c7b\u578b\u4fe1\u606f\u662f\u6bd4\u8f83\u4fbf\u6377\u7684\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-type\">A<\/span>{}<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\">object <span class=\"hljs-type\">TypeSyllabus<\/span> {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> def main(<span class=\"hljs-title\">args<\/span>: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> import scala.reflect.runtime.universe._<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> println(<span class=\"hljs-title\">typeOf<\/span>[<span class=\"hljs-type\">A<\/span>])<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> }<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\">}<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p>\u540c\u6837scala\u91cc\u83b7\u53d6\u7c7b(Class)\u4fe1\u606f\u4e5f\u5f88\u4fbf\u6377\uff0c\u7c7b\u4f3c\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-type\">A<\/span>{}<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\">object <span class=\"hljs-type\">TypeSyllabus<\/span> {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> def main(<span class=\"hljs-title\">args<\/span>: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> import scala.reflect.runtime.universe._<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> println(<span class=\"hljs-title\">typeOf<\/span>[<span class=\"hljs-type\">A<\/span>])<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> println(<span class=\"hljs-title\">classOf<\/span>[<span class=\"hljs-type\">A<\/span>])<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> }<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\">}<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1a\u6ce8\u610f\uff0ctypeOf \u548c classOf \u65b9\u6cd5\u63a5\u6536\u7684\u90fd\u662f\u7c7b\u578b\u7b26\u53f7(symbol)\uff0c\u5e76\u4e0d\u662f\u5bf9\u8c61\u5b9e\u4f8b\u3002<\/em><\/p>\n<h2 id=\"162-classof\u4e0egetclass\u7684\u533a\u522b\"><a name=\"t142\"><\/a><a name=\"t142\"><\/a>16.2 classOf\u4e0egetClass\u7684\u533a\u522b<\/h2>\n<p>\u83b7\u53d6Class\u65f6\u7684\u4e24\u4e2a\u65b9\u6cd5\uff1aclassOf \u548c getClass<\/p>\n<pre class=\"has\"><code class=\"hljs language-vbnet\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; <span class=\"hljs-keyword\">class<\/span> A<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; val a = <span class=\"hljs-built_in\">new<\/span> A<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; a.getClass<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-symbol\">res2:<\/span> <span class=\"hljs-keyword\">Class<\/span>[_ &lt;: A] = <span class=\"hljs-keyword\">class<\/span> A<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">scala&gt; classOf[A]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-symbol\">res3:<\/span> <span class=\"hljs-keyword\">Class<\/span>[A] = <span class=\"hljs-keyword\">class<\/span> A<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-vbnet\"><\/code><\/pre>\n<p>\u4e0a\u9762\u663e\u793a\u4e86\u4e24\u8005\u7684\u4e0d\u540c\uff0cgetClass\u65b9\u6cd5\u5f97\u5230\u7684\u662f Class[A]\u7684\u67d0\u4e2a\u5b50\u7c7b\uff0c\u800c classOf[A] \u5f97\u5230\u662f\u6b63\u786e\u7684 Class[A]\uff0c\u4f46\u662f\u53bb\u6bd4\u8f83\u7684\u8bdd\uff0c\u8fd9\u4e24\u4e2a\u7c7b\u578b\u662fequals\u4e3atrue\u7684\u3002<br \/>\n\u8fd9\u79cd\u7ec6\u5fae\u7684\u5dee\u522b\uff0c\u4f53\u73b0\u5728\u7c7b\u578b\u8d4b\u503c\u65f6\uff0c\u56e0\u4e3ajava\u91cc\u7684 Class[T]\u662f\u4e0d\u652f\u6301\u534f\u53d8\u7684\uff0c\u6240\u4ee5\u65e0\u6cd5\u628a\u4e00\u4e2a Class[_ &lt; : A] \u8d4b\u503c\u7ed9\u4e00\u4e2a Class[A]\u3002<\/p>\n<h2 id=\"163-\u5355\u4f8b\u7c7b\u578b\"><a name=\"t143\"><\/a><a name=\"t143\"><\/a>16.3 \u5355\u4f8b\u7c7b\u578b<\/h2>\n<h2 id=\"164-\u7c7b\u578b\u6295\u5f71\"><a name=\"t144\"><\/a><a name=\"t144\"><\/a>16.4 \u7c7b\u578b\u6295\u5f71<\/h2>\n<p>\u5728scala\u91cc\uff0c\u5185\u90e8\u7c7b\u578b(\u6392\u9664\u5b9a\u4e49\u5728object\u5185\u90e8\u7684)\uff0c\u60f3\u8981\u8868\u8fbe\u6240\u6709\u7684\u5916\u90e8\u7c7bA\u5b9e\u4f8b\u8def\u5f84\u4e0b\u7684B\u7c7b\u578b\uff0c\u5373\u5bf9 a1.B \u548c a2.B\u53ca\u6240\u6709\u7684 an.B\u7c7b\u578b\u627e\u4e00\u4e2a\u5171\u540c\u7684\u7236\u7c7b\u578b\uff0c\u8fd9\u5c31\u662f\u7c7b\u578b\u6295\u5f71\uff0c\u7528 A#B\u7684\u5f62\u5f0f\u8868\u793a\u3002<br \/>\nA#B<br \/>\n\/ \\<br \/>\n\/ \\<br \/>\na1.B a2.B<br \/>\n\u6211\u4eec\u56de\u5934\u6765\u5bf9\u6bd4\u4e00\u4e0bscala\u91cc\u7684\u7c7b\u578b\u6295\u5f71\u4e0ejava\u91cc\u7684\u5185\u90e8\u7c7b\u578b\u7684\u6982\u5ff5\uff0cjava\u91cc\u7684\u5185\u90e8\u7c7b\u578b\u5728\u5199\u6cd5\u4e0a\u662f Outter.Inner \u5b83\u5176\u5b9e\u7b49\u540c\u4e8escala\u91cc\u7684\u6295\u5f71\u7c7b\u578b Outter#Inner\uff0cjava\u91cc\u6ca1\u6709\u8def\u5f84\u4f9d\u8d56\u7c7b\u578b\u7684\u6982\u5ff5\uff0c\u6bd4\u8f83\u7b80\u5316\u3002<\/p>\n<h2 id=\"165-\u7c7b\u578b\u522b\u540d\"><a name=\"t145\"><\/a><a name=\"t145\"><\/a>16.5 \u7c7b\u578b\u522b\u540d<\/h2>\n<p>\u53ef\u4ee5\u901a\u8fc7type\u5173\u952e\u5b57\u6765\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u522b\u540d\uff0c\u7c7b\u578b\u522b\u540d\u5fc5\u987b\u88ab\u5d4c\u5957\u5728\u7c7b\u6216\u8005\u5bf9\u8c61\u4e2d\uff0c\u4e0d\u80fd\u51fa\u73b0\u5728scala\u6587\u4ef6\u7684\u9876\u5c42\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-type\">Document<\/span> {<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> import scala.collection.mutable._<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"> type <span class=\"hljs-type\">Index<\/span> = <span class=\"hljs-type\">HashMap<\/span>[<span class=\"hljs-type\">String<\/span>, (<span class=\"hljs-type\">Int<\/span>, <span class=\"hljs-type\">Int<\/span>)]<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\">}<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\">def play(<span class=\"hljs-title\">x<\/span>: <span class=\"hljs-type\">Index<\/span>): <span class=\"hljs-type\">Unit<\/span> ={}<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-haskell\"><\/code><\/pre>\n<h2 id=\"166-\u7ed3\u6784\u7c7b\u578b\"><a name=\"t146\"><\/a><a name=\"t146\"><\/a>16.6 \u7ed3\u6784\u7c7b\u578b<\/h2>\n<p>\u7ed3\u6784\u7c7b\u578b\u662f\u6307\u4e00\u7ec4\u5173\u4e8e\u62bd\u8c61\u65b9\u6cd5\u3001\u5b57\u6bb5\u548c\u7c7b\u578b\u7684\u89c4\u683c\u8bf4\u660e\uff0c\u4f60\u53ef\u4ee5\u5bf9\u4efb\u4f55\u5177\u5907append\u65b9\u6cd5\u7684\u7c7b\u7684\u5b9e\u4f8b\u8c03\u7528appendLines\u65b9\u6cd5\uff0c\u8fd9\u79cd\u65b9\u5f0f\u6bd4\u5b9a\u4e49\u7279\u8d28\u66f4\u52a0\u7075\u6d3b\uff0c\u662f\u901a\u8fc7\u53cd\u5c04\u8fdb\u884c\u8c03\u7528\u7684\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Structure<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">play<\/span>()<\/span> = println(<span class=\"hljs-string\">&#8220;play\u65b9\u6cd5\u8c03\u7528\u4e86&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">object<\/span> HelloStructure {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">main<\/span>(<span class=\"hljs-params\">args: Array[String]<\/span>): Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">type X = {<span class=\"hljs-function\">def <span class=\"hljs-title\">play<\/span>(): Unit} <span class=\"hljs-comment\">\/\/type\u5173\u952e\u5b57\u662f\u628a = \u540e\u9762\u7684\u5185\u5bb9\u547d\u540d\u4e3a\u522b\u540d\u3002<\/span><\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def <span class=\"hljs-title\">init<\/span>(<span class=\"hljs-params\">res: X<\/span>) = res.play <span class=\"hljs-comment\">\/\/\u672c\u5730\u65b9\u6cd5<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">init<\/span>(<span class=\"hljs-keyword\">new<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">play<\/span>()<\/span> = println(<span class=\"hljs-string\">&#8220;Played&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">})<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">init<\/span>(<span class=\"hljs-keyword\">new<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">play<\/span>()<\/span> = println(<span class=\"hljs-string\">&#8220;Play\u518d\u4e00\u6b21&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">})<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">object<\/span> A {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">def <span class=\"hljs-title\">play<\/span>()<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(<span class=\"hljs-string\">&#8220;A object play&#8221;<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">init<\/span>(A)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val structure = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-function\">Structure<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"> <span class=\"hljs-title\">init<\/span>(<span class=\"hljs-params\">structure<\/span>)<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"> }<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\">}<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-csharp\"><\/code><\/pre>\n<p>\u603b\u7ed3\uff1a<br \/>\n\u7ed3\u6784\u7c7b\u578b\uff0c\u7b80\u5355\u6765\u8bf4\uff0c\u5c31\u662f\u53ea\u8981\u662f\u4f20\u5165\u7684\u7c7b\u578b\uff0c\u7b26\u5408\u4e4b\u524d\u5b9a\u4e49\u7684\u7ed3\u6784\u7684\uff0c\u90fd\u53ef\u4ee5\u8c03\u7528\u3002<\/p>\n<h2 id=\"167-\u590d\u5408\u7c7b\u578b\"><a name=\"t147\"><\/a><a name=\"t147\"><\/a>16.7 \u590d\u5408\u7c7b\u578b<\/h2>\n<p>class A extends B with C with D with E<br \/>\n\u5e94\u505a\u7c7b\u4f3c\u5982\u4e0b\u5f62\u5f0f\u89e3\u8bfb\uff1a<br \/>\nclass A extends (B with C with D with E)<br \/>\nT1 with T2 with T3 \u2026<br \/>\n\u8fd9\u79cd\u5f62\u5f0f\u7684\u7c7b\u578b\u79f0\u4e3a\u590d\u5408\u7c7b\u578b(compound type)\u6216\u8005\u4e5f\u53eb\u4ea4\u96c6\u7c7b\u578b(intersection type)\u3002<br \/>\n\u4e5f\u53ef\u4ee5\u901a\u8fc7type\u7684\u65b9\u5f0f\u58f0\u660e\u7b26\u5408\u7c7b\u578b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-python\"><span class=\"hljs-built_in\">type<\/span> X = X1 <span class=\"hljs-keyword\">with<\/span> X2<\/code><\/pre>\n<h2 id=\"168-\u4e2d\u7f6e\u7c7b\u578b\"><a name=\"t148\"><\/a><a name=\"t148\"><\/a>16.8 \u4e2d\u7f6e\u7c7b\u578b<\/h2>\n<p>\u4e2d\u7f6e\u7c7b\u578b\u662f\u4e00\u4e2a\u5e26\u6709\u4e24\u4e2a\u7c7b\u578b\u53c2\u6570\u7684\u7c7b\u578b\uff0c\u4ee5\u4e2d\u7f6e\u8bed\u6cd5\u8868\u793a\uff0c\u6bd4\u5982\u53ef\u4ee5\u5c06Map[String, Int]\u8868\u793a\u4e3a\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\">val <span class=\"hljs-attr\">scores<\/span>: <span class=\"hljs-title class_\">String<\/span> <span class=\"hljs-title class_\">Map<\/span> <span class=\"hljs-title class_\">Int<\/span> = <span class=\"hljs-title class_\">Map<\/span>(<span class=\"hljs-string\">\"Fred\"<\/span> -&gt; <span class=\"hljs-number\">42<\/span>)<\/code><\/pre>\n<h2 id=\"169-\u81ea\u8eab\u7c7b\u578b\"><a name=\"t149\"><\/a><a name=\"t149\"><\/a>16.9 \u81ea\u8eab\u7c7b\u578b<\/h2>\n<p>self =&gt; \u8fd9\u53e5\u76f8\u5f53\u4e8e\u7ed9this\u8d77\u4e86\u4e00\u4e2a\u522b\u540d\u4e3aself\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">A<\/span> <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">self =&gt; <span class=\"hljs-comment\">\/\/this\u522b\u540d<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> x=<span class=\"hljs-number\">2<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">def foo = self.x + <span class=\"hljs-keyword\">this<\/span>.x<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p>self\u4e0d\u662f\u5173\u952e\u5b57\uff0c\u53ef\u4ee5\u7528\u9664\u4e86this\u5916\u7684\u4efb\u4f55\u540d\u5b57\u547d\u540d(\u9664\u5173\u952e\u5b57)\u3002\u5c31\u4e0a\u9762\u7684\u4ee3\u7801\uff0c\u5728A\u5185\u90e8\uff0c\u53ef\u4ee5\u7528this\u6307\u4ee3\u5f53\u524d\u5bf9\u8c61\uff0c\u4e5f\u53ef\u4ee5\u7528self\u6307\u4ee3\uff0c\u4e24\u8005\u662f\u7b49\u4ef7\u7684\u3002<br \/>\n\u5b83\u7684\u4e00\u4e2a\u573a\u666f\u662f\u7528\u5728\u6709\u5185\u90e8\u7c7b\u7684\u60c5\u51b5\u4e0b\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Outer<\/span> { <span class=\"hljs-function\"><span class=\"hljs-params\">outer<\/span> =&gt;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val v1 = <span class=\"hljs-string\">&#8220;here&#8221;<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">Inner<\/span> {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-title function_\">println<\/span>(outer.<span class=\"hljs-property\">v1<\/span>) <span class=\"hljs-comment\">\/\/ \u7528outer\u8868\u793a\u5916\u90e8\u7c7b\uff0c\u76f8\u5f53\u4e8eOuter.this<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-javascript\"><\/code><\/pre>\n<p>\u5bf9\u4e8ethis\u522b\u540d self =&gt;\u8fd9\u79cd\u5199\u6cd5\u5f62\u5f0f\uff0c\u662f\u81ea\u8eab\u7c7b\u578b(self type)\u7684\u4e00\u79cd\u7279\u6b8a\u65b9\u5f0f\u3002self\u5728\u4e0d\u58f0\u660e\u7c7b\u578b\u7684\u60c5\u51b5\u4e0b\uff0c\u53ea\u662fthis\u7684\u522b\u540d\uff0c\u6240\u4ee5\u4e0d\u5141\u8bb8\u7528this\u505athis\u7684\u522b\u540d\u3002<\/p>\n<h2 id=\"1610-\u8fd0\u884c\u65f6\u53cd\u5c04\"><a name=\"t150\"><\/a><a name=\"t150\"><\/a>16.10 \u8fd0\u884c\u65f6\u53cd\u5c04<\/h2>\n<p>scala\u7f16\u8bd1\u5668\u4f1a\u5c06scala\u4ee3\u7801\u7f16\u8bd1\u6210JVM\u5b57\u8282\u7801\uff0c\u7f16\u8bd1\u8fc7\u7a0b\u4e2d\u4f1a\u64e6\u9664scala\u7279\u6709\u7684\u4e00\u4e9b\u7c7b\u578b\u4fe1\u606f\uff0c\u5728scala-2.10\u4ee5\u524d\uff0c\u53ea\u80fd\u5728scala\u4e2d\u5229\u7528java\u7684\u53cd\u5c04\u673a\u5236\uff0c\u4f46\u662f\u901a\u8fc7java\u53cd\u5c04\u673a\u5236\u5f97\u5230\u7684\u662f\u53ea\u662f\u64e6\u9664\u540e\u7684\u7c7b\u578b\u4fe1\u606f\uff0c\u5e76\u4e0d\u5305\u62ecscala\u7684\u4e00\u4e9b\u7279\u5b9a\u7c7b\u578b\u4fe1\u606f\u3002\u4ecescala-2.10\u8d77\uff0cscala\u5b9e\u73b0\u4e86\u81ea\u5df1\u7684\u53cd\u5c04\u673a\u5236\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7scala\u7684\u53cd\u5c04\u673a\u5236\u5f97\u5230scala\u7684\u7c7b\u578b\u4fe1\u606f\u3002<br \/>\n\u7ed9\u5b9a\u7c7b\u578b\u6216\u8005\u5bf9\u8c61\u5b9e\u4f8b\uff0c\u901a\u8fc7scala\u8fd0\u884c\u65f6\u53cd\u5c04\uff0c\u53ef\u4ee5\u505a\u5230\uff1a1\uff09\u83b7\u53d6\u8fd0\u884c\u65f6\u7c7b\u578b\u4fe1\u606f\uff1b2\uff09\u901a\u8fc7\u7c7b\u578b\u4fe1\u606f\u5b9e\u4f8b\u5316\u65b0\u5bf9\u8c61\uff1b3\uff09\u8bbf\u95ee\u6216\u8c03\u7528\u5bf9\u8c61\u7684\u65b9\u6cd5\u548c\u5c5e\u6027\u7b49\u3002<\/p>\n<h3 id=\"16101-\u83b7\u53d6\u8fd0\u884c\u65f6\u7c7b\u578b\u4fe1\u606f\"><a name=\"t151\"><\/a><a name=\"t151\"><\/a>16.10.1 \u83b7\u53d6\u8fd0\u884c\u65f6\u7c7b\u578b\u4fe1\u606f<\/h3>\n<p>scala\u8fd0\u884c\u65f6\u7c7b\u578b\u4fe1\u606f\u662f\u4fdd\u5b58\u5728TypeTag\u5bf9\u8c61\u4e2d\uff0c\u7f16\u8bd1\u5668\u5728\u7f16\u8bd1\u8fc7\u7a0b\u4e2d\u5c06\u7c7b\u578b\u4fe1\u606f\u4fdd\u5b58\u5230TypeTag\u4e2d\uff0c\u5e76\u5c06\u5176\u643a\u5e26\u5230\u8fd0\u884c\u671f\u3002\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7typeTag\u65b9\u6cd5\u83b7\u53d6TypeTag\u7c7b\u578b\u4fe1\u606f\u3002<\/p>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.reflect.runtime.universe._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> typeTagList = typeTag[List[<span class=\"hljs-built_in\">Int<\/span>]]<span class=\"hljs-comment\">\/\/\u5f97\u5230\u4e86\u5305\u88c5Type\u5bf9\u8c61\u7684TypeTag\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(typeTagList)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">\u6216\u8005\u4f7f\u7528\uff1a<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">typeOf[List[<span class=\"hljs-built_in\">Int<\/span>]]<span class=\"hljs-comment\">\/\/\u76f4\u63a5\u5f97\u5230\u4e86Type\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-kotlin\"><\/code><\/pre>\n<p><em>\u5c16\u53eb\u63d0\u793a\uff1aType\u5bf9\u8c61\u662f\u6ca1\u6709\u88ab\u7c7b\u578b\u64e6\u9664\u7684<\/em><br \/>\n\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7typeTag\u5f97\u5230\u91cc\u9762\u7684type\uff0c\u518d\u901a\u8fc7type\u5f97\u5230\u91cc\u9762\u5c01\u88c5\u7684\u5404\u79cd\u5185\u5bb9\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">import<\/span> scala.reflect.runtime.universe._<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">val typeTagList = typeTag[List[Int]]<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(typeTagList)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(typeTagList.tpe)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-built_in\">println<\/span>(typeTagList.tpe.decls.take(<span class=\"hljs-number\">10<\/span>))<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-go\"><\/code><\/pre>\n<h3 id=\"16102-\u8fd0\u884c\u65f6\u7c7b\u578b\u5b9e\u4f8b\u5316\"><a name=\"t152\"><\/a><a name=\"t152\"><\/a>16.10.2 \u8fd0\u884c\u65f6\u7c7b\u578b\u5b9e\u4f8b\u5316<\/h3>\n<p>\u6211\u4eec\u5df2\u7ecf\u77e5\u9053\u901a\u8fc7Type\u5bf9\u8c61\u53ef\u4ee5\u83b7\u53d6\u672a\u64e6\u9664\u7684\u8be6\u5c3d\u7684\u7c7b\u578b\u4fe1\u606f\uff0c\u4e0b\u9762\u6211\u4eec\u901a\u8fc7Type\u5bf9\u8c61\u4e2d\u7684\u4fe1\u606f\u627e\u5230\u6784\u9020\u65b9\u6cd5\u5e76\u5b9e\u4f8b\u5316\u7c7b\u578b\u7684\u4e00\u4e2a\u5bf9\u8c61\uff1a<\/p>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span>(<span class=\"hljs-params\">name:<span class=\"hljs-type\">String<\/span>, age: <span class=\"hljs-type\">Int<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">myPrint<\/span><\/span>() = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(name + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + age)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">PersonMain<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230JavaUniverse\u7528\u4e8e\u53cd\u5c04<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> ru = scala.reflect.runtime.universe<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230\u4e00\u4e2aJavaMirror\uff0c\u4e00\u4f1a\u7528\u4e8e\u53cd\u5c04Person.class<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> mirror = ru.runtimeMirror(getClass.getClassLoader)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230Person\u7c7b\u7684Type\u5bf9\u8c61\u540e\uff0c\u5f97\u5230type\u7684\u7279\u5f81\u503c\u5e76\u8f6c\u4e3aClassSymbol\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> classPerson = ru.typeOf[<span class=\"hljs-type\">Person<\/span>].typeSymbol.asClass<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230classMirror\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> classMirror = mirror.reflectClass(classPerson)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230\u6784\u9020\u5668Method<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> constructor = ru.typeOf[<span class=\"hljs-type\">Person<\/span>].decl(ru.termNames.<span class=\"hljs-type\">CONSTRUCTOR<\/span>).asMethod<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230MethodMirror<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> methodMirror = classMirror.reflectConstructor(constructor)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5b9e\u4f8b\u5316\u8be5\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p = methodMirror(<span class=\"hljs-string\">&#8220;Mike&#8221;<\/span>, <span class=\"hljs-number\">1<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(p)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<h3 id=\"16103-\u8fd0\u884c\u65f6\u7c7b\u6210\u5458\u7684\u8bbf\u95ee\"><a name=\"t153\"><\/a><a name=\"t153\"><\/a>16.10.3 \u8fd0\u884c\u65f6\u7c7b\u6210\u5458\u7684\u8bbf\u95ee<\/h3>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<ol class=\"hljs-ln\">\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"1\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span>(<span class=\"hljs-params\">name:<span class=\"hljs-type\">String<\/span>, age: <span class=\"hljs-type\">Int<\/span><\/span>) <\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"2\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">myPrint<\/span><\/span>() = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"3\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(name + <span class=\"hljs-string\">&#8220;,&#8221;<\/span> + age)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"4\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"5\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"6\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"7\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">object<\/span> <span class=\"hljs-title\">PersonMain<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">App<\/span><\/span>{<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"8\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">override<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">main<\/span><\/span>(args: <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">String<\/span>]): <span class=\"hljs-type\">Unit<\/span> = {<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"9\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u83b7\u53d6Environment\u548cuniverse<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"10\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> ru = scala.reflect.runtime.universe<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"11\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u83b7\u53d6\u5bf9\u5e94\u7684Mirrors,\u8fd9\u91cc\u662f\u8fd0\u884c\u65f6\u7684<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"12\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> mirror = ru.runtimeMirror(getClass.getClassLoader)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"13\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230Person\u7c7b\u7684Type\u5bf9\u8c61\u540e\uff0c\u5f97\u5230type\u7684\u7279\u5f81\u503c\u5e76\u8f6c\u4e3aClassSymbol\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"14\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> classPerson = ru.typeOf[<span class=\"hljs-type\">Person<\/span>].typeSymbol.asClass<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"15\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u7528Mirrors\u53bbreflect\u5bf9\u5e94\u7684\u7c7b,\u8fd4\u56de\u4e00\u4e2aMirrors\u7684\u5b9e\u4f8b,\u800c\u8be5Mirrors\u88c5\u8f7d\u7740\u5bf9\u5e94\u7c7b\u7684\u4fe1\u606f<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"16\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> classMirror = mirror.reflectClass(classPerson)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"17\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230\u6784\u9020\u5668Method<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"18\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> constructor = ru.typeOf[<span class=\"hljs-type\">Person<\/span>].decl(ru.termNames.<span class=\"hljs-type\">CONSTRUCTOR<\/span>).asMethod<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"19\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230MethodMirror<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"20\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> methodMirror = classMirror.reflectConstructor(constructor)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"21\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5b9e\u4f8b\u5316\u8be5\u5bf9\u8c61<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"22\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> p = methodMirror(<span class=\"hljs-string\">&#8220;Mike&#8221;<\/span>, <span class=\"hljs-number\">1<\/span>)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"23\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(p)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"24\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"25\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"26\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u53cd\u5c04\u65b9\u6cd5\u5e76\u8c03\u7528<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"27\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> instanceMirror = mirror.reflect(p)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"28\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230Method\u7684Mirror<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"29\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> myPrintMethod = ru.typeOf[<span class=\"hljs-type\">Person<\/span>].decl(ru.<span class=\"hljs-type\">TermName<\/span>(<span class=\"hljs-string\">&#8220;myPrint&#8221;<\/span>)).asMethod<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"30\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u901a\u8fc7Method\u7684Mirror\u7d22\u53d6\u65b9\u6cd5<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"31\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> myPrint = instanceMirror.reflectMethod(myPrintMethod)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"32\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u8fd0\u884cmyPrint\u65b9\u6cd5<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"33\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">myPrint()<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"34\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"35\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-comment\">\/\/\u5f97\u5230\u5c5e\u6027Field\u7684Mirror<\/span><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"36\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> nameField = ru.typeOf[<span class=\"hljs-type\">Person<\/span>].decl(ru.<span class=\"hljs-type\">TermName<\/span>(<span class=\"hljs-string\">&#8220;name&#8221;<\/span>)).asTerm<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"37\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><span class=\"hljs-keyword\">val<\/span> name = instanceMirror.reflectField(nameField)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"38\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">println(name.get)<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"39\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\"><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"40\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"hljs-ln-numbers\">\n<div class=\"hljs-ln-line hljs-ln-n\" data-line-number=\"41\"><\/div>\n<\/div>\n<div class=\"hljs-ln-code\">\n<div class=\"hljs-ln-line\">}<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<pre class=\"has\"><code class=\"hljs language-scala\"><\/code><\/pre>\n<div class=\"hljs-button {2}\" data-title=\"\u514d\u767b\u5f55\u590d\u5236\" data-report-click=\"{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}\"><\/div>\n<\/div>\n<div>\n<div><\/div>\n<\/div>\n<\/div>\n<\/article>\n<p>&nbsp;<\/p>\n<div id=\"recommendSwitch\" class=\"blog-content-box\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u539f\u6587\u5730\u5740 \u5362\u5b50\u58a8\u4e8e\u00a02018-08-16<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[24],"tags":[121],"class_list":["post-5740","post","type-post","status-publish","format-standard","hentry","category-value_docs","tag-05-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/5740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=5740"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/5740\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=5740"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=5740"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=5740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}