-- ·|­û / µù¥U -- ¡@
¡@±b¸¹¡G
¡@±K½X¡G
¡@ | µù¥U | §Ñ°O±K½X
3/26 ·s®Ñ¨ì¡I 3/19 ·s®Ñ¨ì¡I 3/14 ·s®Ñ¨ì¡I 12/12 ·s®Ñ¨ì¡I
ÁʮѬyµ{¡EQ & A¡E¯¸°È¯d¨¥ª©¡E«ÈªA«H½c
¢x 3ds Max¢x Maya¢x Rhino¢x After Effects¢x SketchUp¢x ZBrush¢x Painter¢x Unity¢x
¢x PhotoShop¢x AutoCad¢x MasterCam¢x SolidWorks¢x Creo¢x UG¢x Revit¢x Nuke¢x
¢x C#¢x C¢x C++¢x Java¢x ¹CÀ¸µ{¦¡¢x Linux¢x ´O¤J¦¡¢x PLC¢x FPGA¢x Matlab¢x
¢x Àb«È¢x ¸ê®Æ®w¢x ·j¯Á¤ÞÀº¢x ¼v¹³³B²z¢x Fluent¢x VR+AR¢x ANSYS¢x ²`«×¾Ç²ß¢x
¢x ³æ´¹¤ù¢x AVR¢x OpenGL¢x Arduino¢x Raspberry Pi¢x ¹q¸ô³]­p¢x Cadence¢x Protel¢x
¢x Hadoop¢x Python¢x Stm32¢x Cortex¢x Labview¢x ¤â¾÷µ{¦¡¢x Android¢x iPhone¢x
¥i¬d®Ñ¦W,§@ªÌ,ISBN,3dwoo®Ñ¸¹
¸Ô²Ó®ÑÄy¤ÀÃþ

C#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X

( ²Åé ¦r)
§@ªÌ¡G[¬ü] ®¦¨½¬ì¡H³Õ«n¿Õ(Enrico Buonanno) µÛ ±i¤[­× ĶÃþ§O¡G1. -> µ{¦¡³]­p -> .NET -> C#
ĶªÌ¡G
¥Xª©ªÀ¡G²MµØ¤j¾Ç¥Xª©ªÀC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X 3dWoo®Ñ¸¹¡G 50340
¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I

¡i¯Ê®Ñ¡j
NT°â»ù¡G 490 ¤¸

¥Xª©¤é¡G1/1/2019
­¶¼Æ¡G353
¥úºÐ¼Æ¡G0
¯¸ªø±ÀÂË¡G
¦L¨ê¡G¶Â¥Õ¦L¨ê»y¨t¡G ( ²Åé ª© )
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R
(½Ð¥ýµn¤J·|­û)
ISBN¡G9787302510550
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç
(²Åé®Ñ¤W©Ò­z¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, ­YŪªÌ»Ý­n½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ)
§@ªÌ§Ç¡G

ĶªÌ§Ç¡G

«e¨¥¡G

¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¦®¦b®i¥Ü¦p¦ó§Q¥ÎC#¤¤ªº¨ç¼Æ¦¡§Þ³N½s¼g²¼ä¡BÀu¶®¡B°·§§©M¥iºûÅ@ªº¥N½X¡C
¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡nŪªÌ¹ï¶H
¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¬O¬°¨º¨Ç¨ã¦³¶¯¤ß§§§Óªº¶}µo¤H­û©Ò½s¼gªº¡C§A»Ý­n¤F¸ÑC#»y¨¥©M.NET®Ø¬[¡C§A»Ý­n¨ã³Æ¶}µo¹ê»ÚÀ³¥Îªº¸gÅç¡A¼ô±xOOPªº·§©À¡B¼Ò¦¡©M³Ì¨Î¹ê½î¡C¦}¥B¡A§A¥¿¦b´M¨D³q¹L¾Ç²ß¨ç¼Æ¦¡§Þ³N¨ÓÂX®i½sµ{§Þ¯à¡A¥H«K¥i¥H¥R¤À§Q¥ÎC#ªº¦h­S¦¡»y¨¥¯S©Ê¡C¦pªG§A¥¿¦b¹Á¸Õ©Î¥¿¦b­p¹º¾Ç²ß¤@ªù¨ç¼Æ¦¡»y¨¥¡A¨º¤\¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¤]±N¬O«D±`¦³»ù­Èªº¡A¦]¬°§A±N¾Ç²ß¦p¦ó¦b¤@ªù§A©Ò¼ô±xªº»y¨¥¤W¶i¦æ¨ç¼Æ¦¡«ä¦Ò¡C§ïÅܦۤvªº«ä¦Ò¤è¦¡¬O«ÜÃøªº¡F¦Ó¤@¥¹°µ¨ì¡A¨º¤\¾Ç²ß¥ô¦ó¯S©w»y¨¥ªº»yªk±NÅܱo¬Û¹ï®e©ö¡C
¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡nªº²Õ´µ²ºc
¥þ®Ñ¦@15³¹¡A¤À¬°3­Ó³¡¤À¡G
¡´ ²Ä¢¹³¡¤À¤¶²Ð¨ç¼Æ¦¡½sµ{ªº°ò¥»§Þ³N©M­ì²z¡C§Ú­Ì±Nªì¿s¨ç¼Æ¦¡½sµ{¬O¤°¤\¡A¥H¤ÎC#¬O¦p¦ó¤ä«ù¨ç¼Æ¦¡½sµ{­·®æªº¡CµM¦Z¡A±N¬ã¨s°ª¶¥¨ç¼Æªº¥\¯à¡B¯Â¨ç¼Æ¤Î¨ä»P¥i´ú©ÊªºÃö¨t¡BÃþ«¬©M¨ç¼Æñ¦Wªº³]­p¡A¥H¤Î¦p¦ó±N²³æªº¨ç¼Æ²Õ¦X¨ì´_Âøªºµ{§Ç¤¤¡C¦b²Ä¢¹³¡¤Àªº³Ì¦Z¡A§A±N«Ü¦n¦a·P¨ü¨ì¤@­Ó¥Î¨ç¼Æ¦¡­·®æ©Ò½s¼gªºµ{§Ç¬O¤°¤\¼Ëªº¡A¥H¤Î³oºØ­·®æ©Ò±a¨Óªº¦n³B¡C
¡´ ²Ä¢º³¡¤À±N¥[§Ö³t«×¡AÂà¦V§ó¼sªxªºÃöª`ÂI¡A¨Ò¦p¨ç¼Æ¦¡ªº¿ù»~³B²z¡B¼Ò¶ô¤Æ©M²Õ¦XÀ³¥Î¡A¥H¤Î²z¸Ñª¬ºA©Mªí¥ÜÅܤƪº¨ç¼Æ¦¡¤èªk¡C¨ì²Ä¢º³¡¤Àµ²§ô®É¡A§A±N´x´¤¤@¨t¦C¤u¨ãªº¥Îªk¡A±N¯à§Q¥Î¨ç¼Æ¦¡¤èªk¨Ó¦³®Ä¦a§¹¦¨³\¦h½sµ{¥ô°È¡C
¡´ ²Ä¢»³¡¤À±N°Q½×§ó°ª¯Åªº¥DÃD¡A¥]¬A´k©Ê¨D­È¡B¦³ª¬ºA­pºâ¡B²§¨B¡B¼Æ¾Ú¬y©M¦}µo©Ê¡C²Ä¢»³¡¤Àªº¨C³¹³£¤¶²Ð¤@¨Ç­«­n§Þ³N¡A¥¦­Ì¥i¯à¹ý©³§ïÅܧA½s¼g³n¥óªº¤è¦¡©M«ä¦Ò¤è¦¡¡C
§A·|¦b¨C³¹¤¤§ä¨ì§ó¸Ô²Óªº¥DÃD¤ÀÃþ¡A¦}¦b¾\Ū¥ô¦ó¯S©w³¹¸`¤§«e¡A³£¯à±q¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡nªº¤º«Ê¤F¸Ñ¨ì»Ý­n¹w¥ý¾\Ū­þ¨Ç³¹¸`¡C
¬°¹ê»ÚÀ³¥Î½s½X
¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¦®¦bÅý¹ê»Ú³õ´º«O«ù¯u¹ê¡C¬°¦¹¡A«Ü¦h¨Ò¤l³£¯A¤Î¹ê»Ú¥ô°È¡A¨Ò¦pŪ¨ú°t¸m¡B³s±µ¼Æ¾Ú®w¡BÅçÃÒHTTP½Ð¨D¡F¹ï¤_³o¨Ç¨Æ±¡¡A§A¥i¯à¤w¸gª¾¹D¦p¦ó°µ¤F¡A¦ý§A±N¥Î¨ç¼Æ¦¡«äºûªº·sµø¨¤¨Ó­«·s¬Ý«Ý¥¦­Ì¡C
¦b¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¤¤¡A§Ú¨Ï¥Î¤F¤@­Óªø´Á¹B¦æªº¨Ò¤l¨Ó»¡©ú¦b½s¼gLOBÀ³¥Î®É¡AFP¬O¦p¦ó´£¨ÑÀ°§Uªº¡C¬°¦¹¡A§Ú¿ï¾Ü¤F¤@­Ó¦b½u»È¦æÀ³¥Î¡A¥¦¬OµêÀÀªºCodeland»È¦æ(BOC) ¡X¡X§Úª¾¹D³o©Î³\¦³¨Ç¥Í·hµw®M¤F¡A¦ý¦Ü¤Ö¥¦¦³¤F¥²»Ýªº¤T­Ó¦r¥ÀªºÁY¼g¡C¥Ñ¤_¤j¦h¼Æ¤H³£¥i³X°Ý¦b½u»È¦æ³]¬I¡A¦]¦¹«Ü®e©ö·Q¶H¨ä©Ò»Ýªº¥\¯à¡A¦}¥B²M·¡¦a¬Ý¨ì©Ò°Q½×ªº°ÝÃD¬O¦p¦ó»P¹ê»ÚÀ³¥ÎÃöÁpªº¡C
§Ú¤]¨Ï¥Î¤F³õ´º¨Ó»¡©ú¦p¦ó¸Ñ¨M¨ç¼Æ¦¡­·®æ¤¤¨å«¬ªº½sµ{°ÝÃD¡C¦b¹ê»Úªº¨Ò¤l©MFP·§©À¤§¶¡ªº¤£Â_¤Ï´_¡A±NÀ°§U§Ú­ÌÀ±¦X²z½×»P¹ê½î¤§¶¡ªº®t²§¡C
§Q¥Î¨ç¼Æ¦¡®w
½Ñ¦pC#ªº»y¨¥¨ã¦³¨ç¼Æ¦¡¯S©Ê¡A¦ý¬°¤F¥R¤À§Q¥Î³o¨Ç¯S©Ê¡A§A±N¸g±`¨Ï¥Î«K¤_¹ê²{±`¨£¥ô°Èªº®w¡CMicrosoft¤w¸g´£¨Ñ¤F´X­Ó®w¡A¥H«K¶i¦æ¨ç¼Æ¦¡­·®æªº½sµ{¡A¥]¬A¡G
¡´ System.Linq¡X¡X³o¬O¤@­Ó¥\¯à®w¡C§Ú°²©w§A¬O¼ô±x¥¦ªº¡A¦]¬°¥¦¬O.NETªº¤@­Ó­«­n²Õ¦¨³¡¤À¡C
¡´ System.Collections.Immutable¡X¡X³o¬O¤@­Ó¤£¥iÅܶ°¦Xªº®w¡A²Ä9³¹±N¶}©l¨Ï¥Î¥¦¡C
¡´ System.Reactive¡X¡X³o¬O.NETªºReactive Extensionsªº¹ê²{¡A¤¹³\§A¨Ï¥Î¼Æ¾Ú¬y¡A²Ä14³¹±N°Q½×³o¨Ç¼Æ¾Ú¬y¡C
·íµMÁÙ¦³¨ä¥L³\¦h­«­nªºÃþ«¬©M¥\¯à¥¼¦CÁ|¡A³o¨Ç³£¬OFPªº¥D­n³¡¤À¡C¦]¦¹¡A¤@¨Ç¿W¥ßªº¶}µo¤H­û¤w¸g½s¼g¤F¤@¨Ç¶}·½ªº¥N½X®w¨Ó¶ñ¸É³o¨ÇªÅ¥Õ¡C¨ì¥Ø«e¬°¤î¡A¨ä¤¤³Ì§¹¾ãªº¬OLanguageExt¡A³o¬O¥ÑPaul Louth½s¼gªº¤@­Ó®w¡A¥Î¤_¦b¶i¦æ¨ç¼Æ¦¡½s½X®É§ï¶iC#¶}µo¤H­ûªºÅéÅç¡C
¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¦}¨S¦³ª½±µ¨Ï¥ÎLanguageExt¡F¬Û¤Ï¡A±N¦V§A®i¥Ü¦p¦ó¶}µo¦Û¤vªº¨ç¼Æ¦¡¹ê¥Î¤u¨ã®w¡A¥B±N¨ä©R¦W¬°LaYumba.Functional¡AºÉºÞ¥¦»PLanguageExt¦b«Ü¤jµ{«×¤W¬O­«Å|ªº¡A¦ý³o¦b±Ð¾Ç¤è­±·|§ó¦³¥Î¡A­ì¦]¦³¦p¤U´XÂI¡G
¡´ ¦b¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¥Xª©¦Z¡A±N«O«ù¥N½XªºÃ­©w¡C
¡´ §A¥i¥H³z¹L²{¶H¬Ý¥»½è¡A±N¬Ý¨ì¬Ý¦ü²³æ¹ê«h±j¤jªº¨ç¼Æ¦¡ºc³y¡C
¡´ §A¥i¥H±Mª`¤_°ò¥»­n¯À¡G§Ú±N¥H³Ì¯Âºéªº§Î¦¡¦V§A®i¥Ü³o¨Çºc³y¡A³o¼Ë§A´N¤£·|³Q¤@­Ó§¹¾ãªº®w©Ò³B²zªº²Ó¸`©MÃä½t±¡ªp¤À´²ª`·N¤O¡C
¥N½X¬ù©w©M¤U¸ü
¥N½X¥Ü¨Ò¨Ï¥Î¤FC# 7¡A¤j³¡¤À»PC# 6­Ý®e¡CC# 7¤¤±Mªù¤¶²Ðªº»y¨¥¯S©Ê¶È¥Î¤_²Ä10³¹¤Î¤§¦Z³¹¸`(¥t¥~¡A1.2¸`ªº´X­Ó¥Ü¨Ò¤¤©ú½T¦a®i¥Ü¤FC# 7)¡C¥i¦bREPL¤¤°õ¦æ³\¦h¸ûµuªº¥N½X¤ù¬q¡A±q¦ÓÀò±o°Ê¤â½m²ßªº¹ê®É¤ÏõX¡C§ó¦hªºÂX®i¥Ü¨Ò¥i³q¹Lhttps://github.com/la-yumba/functional-csharp-code¤U¸ü¡A¨ä¤¤ÁÙ°t¦³½m²ßªº³]¸m©M¸Ñ¨M¤è®×¡C
¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¤¤ªº¥N½X²M³æ­«ÂI°Q½×¤F¥¿¦b°Q½×ªº¥DÃD¡A¦]¦¹¥i¯à·|¬Ù²¤©R¦WªÅ¶¡(namespace)¡Busing»y¥y¡B²³æªººc³y¨ç¼Æ¡A©Î¥ý«e¥N½X²M³æ¤¤¥X²{ªº¦}«O«ù¤£Åܪº¥N½X¬q¡C¦pªG§A·Q¬d¬Ý¥N½X²M³æªº§¹¾ã½sĶª©¥»¡A¥i¦b¥N½X¦sÀx®w¤¤§ä¨ì¥¦¡Ghttps://github.com/la-yumba/functional-csharp-code¡C
¥t¥~¡AŪªÌ¤]¥i±½´y«Ê©³ªº¤Gºû½X¤U¸ü¬ÛÃö¸ê®Æ¡C
¹Ï®Ñ½×¾Â
ÁʶR¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¦Z¡A¥i§K¶O³X°Ý¥ÑManning¥Xª©ªÀ¹B¦æªº¨p¤Hºôµ¸½×¾Â¡A§A¥i¦b³o¨½´£¥æ¦³Ãö¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡nªºµû½×¡A¸ß°Ý§Þ³N°ÝÃD¡A¦}Àò±o§@ªÌ©M¨ä¥L¥Î¤áªºÀ°§U¡C¥i³q¹Lhttps://forums.manning.com/forums/functional-programming-in-c-sharp³X°Ý¸Ó½×¾Â¡C§A¤]¥i³q¹Lhttps://forums.manning.com/forums/about¤F¸Ñ§ó¦hÃö¤_Manning½×¾Â¤Î½×¾Â¦æ¬°·Ç«hªº«H®§¡C
Manning¥Xª©ªÀ¬°ÅªªÌ´£¨Ñ¤@­Ó³õ©Ò¡A¦b³o¨½¡AŪªÌ¤§¶¡¥H¤ÎŪªÌ©M§@ªÌ¤§¶¡¥i¥H¶i¦æ¦³·N¸qªº¹ï¸Ü¡C¦ý¤£©Ó¿Õ§@ªÌªº¥ô¦ó¨ãÅé°Ñ»P«×¡A§@ªÌ¹ï½×¾Âªº°^Äm¬O¦Ûº@ªº(¦}¥B¬OµLÀvªº)¡C§Ú­Ì«Øij§A¹Á¸Õ¦V§@ªÌ´£¥X¤@¨Ç¨ã¦³¬D¾Ô©Êªº°ÝÃD¡A¥H§K¥Lªº¿³½ì¬y¥¢¡I¥u­n¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡nÁÙ¦b¥«³õ¤W¾P°â¡A½×¾Â©M¤§«e©Ò°Q½×ªº¤º®e¦sÀɱN¥i±q¥Xª©°Óªººô¯¸¤Wª½±µ³X°Ý¡C
¤º®e²¤¶¡G

¨ç¼Æ¦¡½sµ{±N§ïÅܧA«ä¦Ò¥N½Xªº¤è¦¡¡I§Q¥ÎFP§Þ³N¡AC#¶}µo¤H­û¥i·¥¤j¦a´£¤Éª¬ºAºÞ²z¡B¦}µo³B²z©M¨Æ¥ó³B²z¯à¤O¡A¦}§ó¦n¦aªø´ÁºûÅ@¥N½X¡CC#´£¨Ñ¤FÆF¬¡©Ê¡A¨Ï§A¯à¥R¤À§Q¥Î¨ç¼Æ¦¡§Þ³NªºÀu¶Õ¡C¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n±q¥þ·sµø¨¤½á¤©§A±j¤j¤O¶q¡C

¡mC#¨ç¼Æ¦¡½sµ{ ½s¼g§óÀu½èªºC#¥N½X¡n¤Þ¾É§A¦bC#»y¨¥¤¤¨Ï¥Î¨ç¼Æ¦¡«ä·Q¨Ó¸Ñ¨M²{¹ê°ÝÃD¡F­º¥ý¤¶²Ð¨ç¼Æ¦¡½sµ{ªº­ì²z¡A¤ÀªR¦p¦ó­É§UC#»y¨¥¯S©Ê¹ê²{¨ç¼Æ¦¡½sµ{¡AµM¦Z¦b¦h­Óºò¶K¹ê¥Îªº¥Ü¨Òªº¤Þ¾É¤U¡AÁ¿­z¨ç¼Æ²Õ¦X¡B¼Æ¾Ú¬y½sµ{¡B¤£¥iÅܼƾڵ²ºc¥H¤Î¨Ï¥ÎLINQºc«Ø³æ¤l²Õ¦Xµ¥¥DÃD¡C
¥Ø¿ý¡G

²Ä¢¹³¡¤À®Ö¤ß·§©À
²Ä1³¹¤¶²Ð¨ç¼Æ¦¡½sµ{3
1.1¤°¤\¬O¨ç¼Æ¦¡½sµ{4
1.1.1¨ç¼Æ§@¬°²Ä¤@Ãþ­È4
1.1.2ÁקKª¬ºA¬ðÅÜ4
1.1.3½s¼g¨ã¦³±j¤O«OÃÒªºµ{§Ç5
1.2C#ªº¨ç¼Æ¦¡»y¨¥8
1.2.1LINQªº¨ç¼Æ¦¡©Ê½è9
1.2.2C#6©MC#7¤¤ªº¨ç¼Æ¦¡¯S©Ê10
1.2.3¥¼¨ÓªºC#±N§óÁͨç¼Æ¤Æ13
1.3¨ç¼Æ«äºû13
1.3.1¬M®g¨ç¼Æ13
1.3.2¦bC#¤¤ªí¥Ü¨ç¼Æ14
1.4°ª¶¥¨ç¼Æ18
1.4.1¨Ì¿à¤_¨ä¥L¨ç¼Æªº¨ç¼Æ18
1.4.2¾A°t¾¹¨ç¼Æ20
1.4.3³Ð«Ø¨ä¥L¨ç¼Æªº¨ç¼Æ20
1.5¨Ï¥ÎHOFÁקK­«´_21
1.5.1±N¦w¸Ë©M©î¨ø«Ê¸Ë¨ìHOF¤¤23
1.5.2±Nusing»y¥yÂà´«¬°HOF24
1.5.3HOFªºÅv¿Å25
1.6¨ç¼Æ¦¡½sµ{ªº¦n³B27
½m²ß27
¤pµ²28
²Ä2³¹¬°¤°¤\¨ç¼Æ¯Â¼ä©Ê«Ü­«­n29
2.1¤°¤\¬O¨ç¼Æªº¯Â¼ä©Ê29
2.1.1¯Â¼ä©Ê©M°Æ§@¥Î30
2.1.2ºÞ²z°Æ§@¥Îªºµ¦²¤31
2.2¯Â¼ä©Ê©M¦}µo©Ê33
2.2.1¯Â¨ç¼Æ¥i¨}¦n¦a¦}¦æ¤Æ34
2.2.2¦}¦æ¤Æ¤£¯Â¨ç¼Æ35
2.2.3ÁקKª¬ºAªº¬ðÅÜ36
2.3¯Â¼ä©Ê©M¥i´ú©Ê38
2.3.1¹ê½î¡G¤@­ÓÅçÃÒ³õ´º39
2.3.2¦b´ú¸Õ¤¤¤Þ¤J¤£¯Â¨ç¼Æ40
2.3.3¬°¤°¤\«ÜÃø´ú¸Õ¤£¯Â¨ç¼Æ42
2.3.4°Ñ¼Æ¤Æ³æ¤¸´ú¸Õ43
2.3.5ÁקK¼ÐÀY±µ¤f44
2.4¯Â¼ä©Ê©M­pºâªºµo®i47
½m²ß47
¤pµ²48
²Ä3³¹³]­p¨ç¼Æñ¦W©MÃþ«¬49
3.1¨ç¼Æñ¦W³]­p49
3.1.1½bÀY²Å¸¹50
3.1.2ñ¦Wªº«H®§¶q¦³¦h¤j51
3.2¨Ï¥Î¼Æ¾Ú¹ï¶H®·Àò¼Æ¾Ú52
3.2.1­ì©lÃþ«¬³q±`¤£°÷¨ãÅé53
3.2.2¨Ï¥Î¦Û©w¸qÃþ«¬¬ù§ô¿é¤J53
3.2.3½s¼g¡§¸Û¹êªº¡¨¨ç¼Æ55
3.2.4¨Ï¥Î¤¸²Õ©M¹ï¶H¨Ó²Õ¦X­È56
3.3¨Ï¥ÎUnit¬°¼Æ¾Ú¯Ê¥¢«Ø¼Ò58
3.3.1¬°¤°¤\void¤£²z·Q58
3.3.2¨Ï¥ÎUnitÀ±¦XAction©MFunc¤§¶¡ªº®t²§59
3.4¨Ï¥ÎOption¬°¼Æ¾Ú¥i¯à¯Ê¥¢«Ø¼Ò61
3.4.1§A¨C¤Ñ³£¦b¨Ï¥ÎÁV¿|ªºAPI61
3.4.2OptionÃþ«¬ªº¤¶²Ð62
3.4.3¹ê²{Option65
3.4.4³q¹L¨Ï¥ÎOption¦Ó¤£¬Onull¨ÓÀò±o°·§§©Ê68
3.4.5Option§@¬°°¾¨ç¼Æªº¦ÛµMµ²ªGÃþ«¬69
½m²ß73
¤pµ²74
²Ä4³¹¨ç¼Æ¦¡½sµ{¤¤ªº¼Ò¦¡77
4.1±N¨ç¼ÆÀ³¥Î¤_µ²ºcªº¤º³¡­È77
4.1.1±N¨ç¼Æ¬M®g¨ì§Ç¦C¤W77
4.1.2±N¨ç¼Æ¬M®g¨ìOption79
4.1.3Option¬O¦p¦ó´£°ª©â¶H¼h¯Åªº81
4.1.4¨ç¤l82
4.2¨Ï¥ÎForEach°õ¦æ°Æ§@¥Î83
4.3¨Ï¥ÎBind¨ÓÃì±µ¨ç¼Æ85
4.3.1±Nªð¦^Optionªº¨ç¼Æµ²¦X°_¨Ó85
4.3.2¨Ï¥ÎBind¥­¾Q´O®M¦Cªí87
4.3.3¹ê»Ú¤W¡A³o³QºÙ¬°³æ¤l88
4.3.4Return¨ç¼Æ88
4.3.5¨ç¤l©M³æ¤l¤§¶¡ªºÃö¨t89
4.4¨Ï¥ÎWhere¹LÂo­È90
4.5¨Ï¥ÎBindµ²¦XOption©MIEnumerable91
4.6¦b¤£¦P©â¶H¼h¯Å¤W½s½X92
4.6.1±`³W­È»P°ª¯Å­È93
4.6.2¸ó¶V©â¶H¼h¯Å94
4.6.3­«·s¼fµøMap»PBind95
4.6.4¦b¥¿½Tªº©â¶H¼h¯Å¤W
¤u§@96
½m²ß96
¤pµ²97
²Ä5³¹¨Ï¥Î¨ç¼Æ²Õ¦X³]­pµ{§Ç99
5.1¨ç¼Æ²Õ¦X99
5.1.1´_²ß¨ç¼Æ²Õ¦X100
5.1.2¤èªkÃì101
5.1.3°ª¯Å­È¬É°ì¤¤ªº²Õ¦X101
5.2±q¼Æ¾Ú¬yªº¨¤«×¶i¦æ«ä¦Ò102
5.2.1¨Ï¥ÎLINQªº¥i²Õ¦X
API102
5.2.2½s¼g¥i²Õ¦X©Ê§ó¦nªº¨ç¼Æ103
5.3¤u§@¬y½sµ{105
5.3.1Ãö¤_ÅçÃÒªº¤@­Ó²³æ
¤u§@¬y106
5.3.2¥H¼Æ¾Ú¬yªº«ä·Q¶i¦æ­«ºc107
5.3.3²Õ¦X±a¨Ó¤F§ó¤jªºÆF¬¡©Ê108
5.4¤¶²Ð¨ç¼Æ¦¡»â°ì«Ø¼Ò109
5.5ºÝ¨ìºÝªºªA°È¾¹ºÝ¤u§@¬y110
5.5.1ªí¹F¦¡»P»y¥y112
5.5.2Án©ú¦¡»P©R¥O¦¡112
5.5.3¨ç¼Æ¦¡¤À¼h113
½m²ß115
¤pµ²115
²Ä¢º³¡¤À¨ç¼Æ¦¡­·®æ
²Ä6³¹¨ç¼Æ¦¡¿ù»~³B²z119
6.1ªí¥Ü¿é¥Xªº§ó¦w¥þ¤è¦¡120
6.1.1¨Ï¥ÎEither®·Àò¿ù»~²Ó¸`120
6.1.2³B²zEitherªº®Ö¤ß¨ç¼Æ123
6.1.3¤ñ¸ûOption©MEither124
6.2Ãì±µ¾Þ§@¥i¯à¥¢±Ñ125
6.3ÅçÃÒ¡GEitherªº¤@­Ó§¹¬ü¥Î¨Ò127
6.3.1¬°¿ù»~¿ï¾Ü¦X¾Aªºªí¥Üªk128
6.3.2©w¸q¤@­Ó°ò¤_EitherªºAPI129
6.3.3²K¥[ÅçÃÒÅÞ¿è130
6.4±N¿é¥X´£¨Ñµ¹«È¤áºÝÀ³¥Îµ{§Ç131
6.4.1¤½¶}¤@­ÓÃþ¦üOptionªº±µ¤f132
6.4.2¤½¶}¤@­ÓÃþ¦üEitherªº±µ¤f134
6.4.3ªð¦^¤@­ÓDTOµ²ªG134
6.5EitherªºÅÜÅé136
6.5.1¦b¤£¦Pªº¿ù»~ªí¥Ü¤§¶¡¶i¦æ§ïÅÜ136
6.5.2Eitherªº¯S©wª©¥»137
6.5.3­«ºcValidation©MExceptional138
6.5.4«O¯d²§±`141
½m²ß142
¤pµ²142
²Ä7³¹¥Î¨ç¼Æºc³y¤@­ÓÀ³¥Îµ{§Ç145
7.1°¾¨ç¼ÆÀ³¥Î¡G³v­Ó´£¨Ñ°Ñ¼Æ146
7.1.1¤â°Ê±Ò¥Î°¾¨ç¼ÆÀ³¥Î147
7.1.2Âk¯Ç°¾¨ç¼ÆÀ³¥Î148
7.1.3°Ñ¼Æªº¶¶§Ç°ÝÃD150
7.2§JªA¤èªk¸ÑªRªº©ÇÂ}150
7.3¬_¨½¤Æ¨ç¼Æ¡GÀu¤Æ°¾¨ç¼ÆÀ³¥Î152
7.4³Ð«Ø¤@­Ó¤Í¦nªº°¾¨ç¼ÆÀ³¥ÎAPI155
7.4.1¥i¤åÀɤƪºÃþ«¬156
7.4.2¨ã¤Æ¼Æ¾Ú³X°Ý¨ç¼Æ157
7.5À³¥Îµ{§Çªº¼Ò¶ô¤Æ¤Î
²Õ¦X159
7.5.1OOP¤¤ªº¼Ò¶ô¤Æ160
7.5.2FP¤¤ªº¼Ò¶ô¤Æ162
7.5.3¤ñ¸û¨âºØ¤èªk164
7.5.4²Õ¦XÀ³¥Îµ{§Ç165
7.6±N¦CªíÀ£ÁY¬°³æ­Ó­È166
7.6.1LINQªºAggregate¤èªk166
7.6.2»E¦XÅçÃÒµ²ªG168
7.6.3¦¬ÀòÅçÃÒ¿ù»~169
½m²ß170
¤pµ²171
²Ä8³¹¦³®Ä¦a³B²z¦h°Ñ¨ç¼Æ173
8.1°ª¯Å¬É°ì¤¤ªº¨ç¼ÆÀ³¥Îµ{§Ç174
8.1.1²z¸ÑÀ³¥Î¦¡176
8.1.2´£¤É¨ç¼Æ177
8.1.3¤¶²Ð°ò¤_Äݩʪº´ú¸Õ179
8.2¨ç¤l¡BÀ³¥Î¦¡¡B³æ¤l181
8.3³æ¤l©w«ß182
8.3.1¥kùÚµ¥¤¸183
8.3.2¥ªùÚµ¥¤¸183
8.3.3µ²¦X«ß184
8.3.4¹ï¦h°Ñ¨ç¼Æ¨Ï¥ÎBind185
8.4³q¹L¹ï¥ô¦ó³æ¤l¨Ï¥ÎLINQ¨Ó´£°ª¥iŪ©Ê186
8.4.1¹ï¥ô·N¨ç¤l¨Ï¥ÎLINQ186
8.4.2¹ï¥ô·N³æ¤l¨Ï¥ÎLINQ188
8.4.3let¡Bwhere¤Î¨ä¥LLINQ¤l¥y191
8.5¦ó®É¨Ï¥ÎBind©ÎApply192
8.5.1¨ã¦³´¼¯àºc³y¨ç¼ÆªºÅçÃÒ192
8.5.2¨Ï¥ÎÀ³¥Î¦¡¬y¨Ó¦¬¶°¿ù»~194
8.5.3¨Ï¥Î³æ¤l¬y¨Ó§Ö³t¥¢±Ñ195
½m²ß196
¤pµ²196
²Ä9³¹Ãö¤_¼Æ¾Úªº¨ç¼Æ¦¡«ä¦Ò199
9.1ª¬ºA¬ðÅܪº³´¨À200
9.2²z¸Ñª¬ºA¡B¼ÐÃѤÎÅܤÆ202
9.2.1¦³¨Ç¨Æª«¥Ã»·¤£·|ÅܤÆ203
9.2.2ªí¥Ü«D¬ðÅܪºÅܤÆ205
9.3±j¨î¤£¥iÅÜ©Ê207
9.3.1¥Ã»·¤£¥iÅÜ209
9.3.2µL¼ËªO¥N½Xªº«þ¨©¤èªkªº¥i¦æ©Ê210
9.3.3§Q¥ÎF#³B²z¼Æ¾ÚÃþ«¬212
9.3.4¤ñ¸û¤£Åܩʪºµ¦²¤¡G¤@³õ¤¡­®ªº¤ñÁÉ213
9.4¨ç¼Æ¦¡¼Æ¾Úµ²ºc²¤¶214
9.4.1¸g¨åªº¨ç¼Æ¦¡Ãìªí215
9.4.2¤G¤e¾ð219
½m²ß223
¤pµ²224
²Ä10³¹¨Æ¥ó·¹·½¡G«ù¤[¤Æªº¨ç¼Æ¦¡¤èªk225
10.1Ãö¤_¼Æ¾Ú¦sÀxªº¨ç¼Æ¦¡«ä¦Ò226
10.1.1¬°¤°¤\¼Æ¾Ú¦sÀx¥u¯à°l¥[226
10.1.2©ñªQ¡A¦}§Ñ«o¦sÀxª¬ºA227
10.2¨Æ¥ó·¹·½ªº°ò¦ª¾ÃÑ228
10.2.1ªí¥Ü¨Æ¥ó228
10.2.2«ù¤[¤Æ¨Æ¥ó229
10.2.3ªí¥Üª¬ºA230
10.2.4¤@­Ó¼Ò¦¡¤Ç°tªº´¡¦±231
10.2.5ªí¥Üª¬ºAÂà´«234
10.2.6±q¹L¥hªº¨Æ¥ó¤¤­««Ø·í«eª¬ºA235
10.3¨Æ¥ó·¹·½¨t²Îªº¬[ºc236
10.3.1³B²z©R¥O237
10.3.2³B²z¨Æ¥ó240
10.3.3²K¥[ÅçÃÒ241
10.3.4®Ú¾Ú¨Æ¥ó³Ð«Ø¼Æ¾Úªºµø¹Ï243
10.4¤ñ¸û¤£¥iÅܦsÀxªº¤£¦P¤èªk246
10.4.1Datomic»P
EventStore247
10.4.2§Aªº»â°ì¬O§_¨ü¨Æ¥óÅX°Ê¡H247
¤pµ²248
²Ä¢»³¡¤À°ª¯Å§Þ³N
²Ä11³¹´k©Ê­pºâ¡B©µÄò¥H¤Î³æ¤l²Õ¦X¤§¬ü251
11.1´k©ÊªºÀuÂI251
11.1.1¥Î¤_³B²zOptionªº´k©ÊAPI252
11.1.2²Õ¦X´k©Ê­pºâ254
11.2¨Ï¥ÎTry¶i¦æ²§±`³B²z256
11.2.1ªí¥Ü¥i¯à¥¢±Ñªº­pºâ257
11.2.2±qJSON¹ï¶H¤¤¦w¥þ¦a´£¨ú«H®§257
11.2.3²Õ¦X¥i¯à¥¢±Ñªº­pºâ259
11.2.4³æ¤l²Õ¦X¡G¬O¤°¤\·N«ä©O¡H260
11.3¬°¼Æ¾Ú®w³X°Ý³Ð«Ø¤¤¶¡¥óºÞ¹D261
11.3.1²Õ¦X°õ¦æ¦w¸Ë/©î¨øªº¨ç¼Æ261
11.3.2°kÂ÷¤Ì¹Bª÷¦r¶ðªº¯µ¤è263
11.3.3®·Àò¤¤¶¡¥ó¨ç¼Æªº¥»½è263
11.3.4¹ê²{¤¤¶¡¥óªº¬d¸ß¼Ò¦¡265
11.3.5²K¥[­p®É¾Þ§@ªº¤¤¶¡¥ó268
11.3.6²K¥[ºÞ²z¼Æ¾Ú®w¨Æ°Èªº¤¤¶¡¥ó269
¤pµ²271
²Ä12³¹¦³ª¬ºAªºµ{§Ç©M­pºâ273
12.1ºÞ²zª¬ºAªºµ{§Ç274
12.1.1ºûÅ@©ÒÀ˯Á¸ê·½ªº½w¦s275
12.1.2­«ºc¥i´ú¸Õ©Ê©M¿ù»~³B²z277
12.1.3¦³ª¬ºAªº­pºâ278
12.2¤@ºØ¥Î¤_¥Í¦¨ÀH¾÷¼Æ¾Úªº»y¨¥279
12.2.1¥Í¦¨ÀH¾÷¾ã¼Æ280
12.2.2¥Í¦¨¨ä¥L°ò¤¸281
12.2.3¥Í¦¨´_Âøªºµ²ºc282
12.3¦³ª¬ºA­pºâªº³q¥Î¼Ò¦¡284
¤pµ²287
²Ä13³¹¨Ï¥Î²§¨B­pºâ289
13.1²§¨B­pºâ290
13.1.1¹ï²§¨Bªº»Ý­n290
13.1.2¥ÎTaskªí¥Ü²§¨B¾Þ§@291
13.1.3Task§@¬°¤@­Ó±N¨Ó­Èªº®e¾¹292
13.1.4³B²z¥¢±Ñ294
13.1.5¤@­Ó¥Î¤_³f¹ôÂà´«ªºHTTPAPI296
13.1.6¦pªG¥¢±Ñ¡A½Ð¦A¸Õ´X¦¸297
13.1.7¦}¦æ¹B¦æ²§¨B¾Þ§@297
13.2¹M¾ú¡G³B²z°ª¯Å­È¦Cªí299
13.2.1¨Ï¥Î³æ¤lªºTraverse¨ÓÅçÃҭȦCªí301
13.2.2¨Ï¥ÎÀ³¥Î¦¡Traverse¨Ó¦¬¶°ÅçÃÒ¿ù»~302
13.2.3±N¦h­ÓÅçÃÒ¾¹À³¥Î¤_³æ­Ó­È304
13.2.4±NTraverse»PTask¤@°_¨Ï¥Î¥Hµ¥«Ý¦h­Óµ²ªG305
13.2.5¬°³æ­Èµ²ºc©w¸qTraverse306
13.3µ²¦X²§¨B©MÅçÃÒ(©Î¨ä¥L¥ô¦ó¨â­Ó³æ¤l®ÄªG)308
13.3.1°ïÅ|³æ¤lªº°ÝÃD308
13.3.2´î¤Ö®ÄªGªº¼Æ¶q310
13.3.3¨ã¦³¤@­Ó³æ¤l°ïÅ|ªºLINQªí¹F¦¡311
¤pµ²312
²Ä14³¹¼Æ¾Ú¬y©MReactiveExtensions315
14.1¥ÎIObservableªí¥Ü¼Æ¾Ú¬y316
14.1.1®É¶¡¤Wªº¤@­Ó§Ç¦Cªº­È316
14.1.2­q¾\IObservable317
14.2³Ð«ØIObservable318
14.2.1³Ð«Ø¤@­Ó©w®É¾¹319
14.2.2¨Ï¥ÎSubject¨Ó§iª¾IObservableÀ³¦ó®Éµo¥X«H¸¹320
14.2.3±q°ò¤_¦^½Õªº­q¾\¤¤³Ð«ØIObservable320
14.2.4¥Ñ§ó²³æªºµ²ºc³Ð«ØIObservable321
14.3Âà´«©Mµ²¦X¼Æ¾Ú¬y323
14.3.1¬yªºÂà´«323
14.3.2µ²¦X©M¹º¤À¬y325
14.3.3¨Ï¥ÎIObservable¶i¦æ¿ù»~³B²z327
14.3.4¿Ä·|³e³q329
14.4¹ê²{³e¬ï¦h­Ó¨Æ¥óªºÅÞ¿è330
14.4.1ÀË´ú«öÁ䶶§Ç330
14.4.2¹ï¨Æ¥ó·½§@¥X¤ÏÀ³333
14.4.3³qª¾½ã¤á¦ó®É³z¤ä335
14.5À³¸Ó¦ó®É¨Ï¥ÎIObservable¡H337
¤pµ²338
²Ä15³¹¦}µo®ø®§¶Ç»¼339
15.1¹ï¦@¨É¥iÅܪ¬ºAªº»Ý­n339
15.2²z¸Ñ¦}µo®ø®§¶Ç»¼341
15.2.1¦bC#¤¤¹ê²{¥N²z343
15.2.2¶}©l¨Ï¥Î¥N²z344
15.2.3¨Ï¥Î¥N²z³B²z¦}µo½Ð¨D346
15.2.4¥N²z»P¨¤¦â349
15.3¡§¨ç¼Æ¦¡API¡¨»P¡§°ò¤_¥N²zªº¹ê²{¡¨350
15.3.1¥N²z§@¬°¹ê²{²Ó¸`351
15.3.2±N¥N²zÁôÂä_±`³WAPIªº­I¦Z352
15.4LOBÀ³¥Îµ{§Ç¤¤ªº¦}µo®ø®§¶Ç»¼353
15.4.1¨Ï¥Î¥N²z¨Ó¦P¨B¹ï½ã¤á¼Æ¾Úªº³X°Ý354
15.4.2«OºÞ½ã¤áªºª`¥Uªí356
15.4.3¥N²z¤£¬O¤@­Ó¹ï¶H357
15.4.4¿Ä·|³e³q359
¤pµ²361
µ²§ô»y¡G±µ¤U¨Ó©O¡H363
§Ç¡G