dz̸ScalaģʽƥÅä
£¨¸£ÀûÍƼö£ºÄ㻹ÔÚÔ¼Û¹ºÂò°¢ÀïÔÆ·þÎñÆ÷£¿ÏÖÔÚ°¢ÀïÔÆ0.8ÕÛÏÞʱÇÀ¹º»î¶¯À´À²£¡4ºË8GÆóÒµÔÆ·þÎñÆ÷½ö2998Ôª/3Ä꣬Á¢¼´ÇÀ¹º>>>£º9i0i.cn/aliyun£©
Ò».scalaģʽƥÅ䣨pattern matching£©
pattern matching¿ÉÒÔ˵ÊÇscalaÖÐÊ®·ÖÇ¿´óµÄÒ»¸öÓïÑÔÌØÐÔ£¬µ±È»Õâ²»ÊÇscala¶ÀÓеģ¬µ«Õâ²»·Á°Ëü³ÉΪscalaµÄÓïÑÔµÄÒ»´óÀûÆ÷¡£
scalaµÄpattern matchingÊÇÀàËÆÕâÑùµÄ£¬
e match { case Pattern1 => do Something case Pattern2 if-clause => do others ... }
ÆäÖУ¬±äÁ¿eºóÃæ½ÓÒ»¸ömatchÒÔ¼°Ò»¸ö´úÂë¿é£¬ÆäÖÐÿ¸öcase¶ÔÓ¦Ò»ÖÖ¿ÉÄÜ»ØÆ¥ÅäµÄÀàÐÍ£¬Èç¹ûÆ¥Åä³É¹¦ÔòÖ´ÐÐ=>ºóÃæµÄ´úÂë¡£
ÎÒÃÇ¿ÉÒÔÓÃÒ»¸ö¾ßÌåһЩµÄÀý×ÓÀ´¿´¿´Ä£Ê½Æ¥ÅäÊÇÔõô¹¤×÷µÄ£º
case class Player(name: String, score: Int) def printMessage(player: Player) = player match { case Player(_, score) if score > 100000 => println("Get a job, dude!") case Player(name, _) => println("Hey, $name, nice to see you again!") }
¿´ÆðÀ´ÓеãÀàËÆÓÚÆäËûÓïÑÔµÄswitch£¬µ«Æäʵ»¹ÊÇÓкܴóµÄ²»Í¬µÄ¡£
ÒÔjavaµÄswitchΪÀý£¬javaµÄswitch½ö½ö»á×öһЩ»ù±¾ÀàÐ͵ÄÆ¥Å䣬ȻºóÖ´ÐÐһЩ¶¯×÷£¬²¢ÇÒÊÇûÓзµ»ØÖµµÄ¡£
¶øscalaµÄpattern matching matchÔòҪǿ´óµÃ¶à£¬³ýÁË¿ÉÒÔÆ¥ÅäÊýÖµ£¬Í¬Ê±Ëü»¹ÄÜÆ¥ÅäÀàÐÍ¡£
def parseArgument(arg: String) = arg match { //Æ¥ÅäÖµ case "-h" | "--help" => displayHelp case "-v" | "--version" => displayVerion case whatever => unknownArgument(whatever) }
def f(x: Any): String = x match { //Æ¥ÅäÀàÐÍ case i:Int => "integer: " + i case _:Double => "a double" case s:String => "I want to say " + s }
ͬʱpattern matchingÊÇÓзµ»ØÖµµÄ£¬±ÈÈçÉÏÃæµÄmatch£¬Ëü·µ»ØµÄ¾ÍÊÇÒ»¸öUnit¡£ÎÒÃÇÒ²¿ÉÒÔÐÞ¸ÄÉÏÃæµÄ´úÂëÈÃËü·µ»ØÒ»¸ö×Ö·û´®£º
case class Player(name: String, score: Int) def message(player: Player) = player match { case Player(_, score) if score > 100000 => "Get a job, dude!" case Player(name, _) => "Hey, $name, nice to see you again!" }
ÖµµÃÒ»ÌáµÄÊÇ£¬pattern matching ·µ»ØÖµÊÇÓɵÚÒ»¸öÆ¥ÅäµÄģʽÖеĴúÂë¿é¾ö¶¨µÄ¡£
¶þ. ΪʲôҪÓÃpattern matching
¿´µ½ÕâÀïÄã»á·¢ÏÖÒ»¸öÎÊÌ⣬pattern matching²»ÊǺÍif else²î²»¶àÂð£¿ÄÇΪʲô»¹ÒªÊ¹ÓÃpattern matchingÄØ£¿
Ê×ÏÈÎÒÃÇÐèÒªÃ÷°×£¬Ä£Ê½Æ¥ÅäÆäʵ±¾ÖÊÉÏÊÇÌṩһ¸ö·½±ãµÄ½â¹¹(Destructuring)Êý¾Ý½á¹¹µÄ·½Ê½£¬ÒÔscalaΪÀý£¬pattern matchingÆäʵÓõ½ÁËscalaÖÐÌáÈ¡Æ÷µÄ¹¦ÄÜ£¬ÌáÈ¡Æ÷Æäʵ¾ÍÊÇÀàÖеÄunapply()·½·¨¡£
trait User { def name: String } class FreeUser(val name: String) extends User object FreeUser { //ÌáÈ¡Æ÷ def unapply(user: FreeUser): Option[String] = Some(user.name) }
val user: User = new FreeUser("Daniel") user match { case FreeUser(name) => println("it match here" + name) case _ => println("not me") }
Ã÷°×ÁËģʽƥÅäµÄ±¾ÖÊÄã¾Í»áÖ±µ½£¬Æäʵif elseÖ»ÊÇpattern matchingÖеÄÒ»¸öµäÐ͵ÄÓ÷¨£¬µ«²¢·ÇËüµÄÈ«²¿¡£
ͬʱ£¬pattern matchingÔÊÐíÄã½âñîÁ½¸ö²¢²»ÕæÕýÊôÓڱ˴˵Ķ«Î÷£¬Ò²Ê¹µÃÄãµÄ´úÂë¸üÒ×ÓÚ²âÊÔ¡£±ÈÈçÉÏÃæµÄmatch²¿·ÖµÄ´úÂëÎÒÃÇ¿ÉÒÔд³ÉÏÂÃæÕâÑù£º
val user: User = new FreeUser("Daniel") //½«·µ»Ø½á¹û´æÔÚÒ»¸ö³£Á¿ÖÐ val message = user match { case FreeUser(name) => "it match here" + name case _ => "not me" } //¿ÉÒÔËæÒâʹÓøó£Á¿£¬ÊµÏÖ½âñî println(message)
ÕâÑù»á¸³Óè´úÂë¸ü¶àµÄÁé»îÐÔ£¬Í¬Ê±Ò²¸ü¼Ó·½±ã×ö½øÒ»²½²Ù×÷¡£
¶øÒԿɶÁÐԵĽǶÈÀ´Ëµ£¬Ê¹ÓÃÒ»´ó¶ÑµÄif else´úÂëÎÞÒÉÊDZȽÏÄÑ¿´µÄ£¬¶øÈç¹ûʹÓÃpattern matchingµÄ»°£¬´úÂë»á¼ò½àÇåÎúºÜ¶à£¬¶ø¼ò½àµÄ´úÂëÔò»á¸üÈÝÒ×ÔĶÁ¡£
ÒÔÉϾÍÊÇdz̸ScalaģʽƥÅäµÄÏêϸÄÚÈÝ£¬¸ü¶à¹ØÓÚscalaģʽƥÅäµÄ×ÊÁÏÇë¹Ø×¢³ÌÐòÔ±Ö®¼ÒÆäËüÏà¹ØÎÄÕ£¡
Ïà¹ØÎÄÕÂ
Ò»¸öÄÜÉú³É¾«ÃÀ´úÂëͼƬµÄ¹¤¾ßCarbon!Èÿ´´úÂë³ÉΪһÖÖÏíÊÜ
µ±ÎÒÃÇÏëչʾ×Ô¼ºÐ´µÄ´úÂë¸ø±ðÈË¿´µÄʱºò,Ï£ÍûÈôúÂë±£³ÖÔÓеĸñʽ,²¢ÇÒÒªÃÀ¹ÛÒ»µã,ÓÐÒ»¸öÇ¿´óµÄÔÚÏß¹¤¾ß¿ÉÒÔ°ïÖúÎÒÃÇʵÏÖ,¶øÇÒÖ§³Ö¶àÖÖÖ÷Ìâ,Ëû¾ÍÊÇCarbon,ÐèÒªµÄÅóÓÑ¿ÉÒԲο¼ÏÂ2021-05-05K8S¶þ½øÖƲ¿ÊðµÄK8S(1.15)²¿Êðhpa¹¦ÄÜ
ÕâƪÎÄÕÂÖ÷Òª½éÉÜÁËK8S¶þ½øÖƲ¿ÊðµÄK8S(1.15)²¿Êðhpa¹¦ÄÜ,±¾Îĸø´ó¼Ò½éÉܵķdz£Ïêϸ£¬¶Ô´ó¼ÒµÄѧϰ»ò¹¤×÷¾ßÓÐÒ»¶¨µÄ²Î¿¼½è¼ø¼ÛÖµ£¬ÐèÒªµÄÅóÓÑ¿ÉÒԲο¼ÏÂ2021-04-04Èí¼þ²âÊÔ¹ý³ÌÖг£¼ûµÄÓ¢Îĵ¥´Ê»ã×Ü
ÕâƪÎÄÕÂÖ÷Òª½éÉÜÁËÈí¼þ²âÊÔ¹ý³ÌÖг£¼ûµÄÓ¢Îĵ¥´Ê»ã×Ü,ÐèÒªµÄÅóÓÑ¿ÉÒԲο¼ÏÂ2022-09-09Ïê½âwindows »·¾³Ï´electricSearch+kibana
ÕâƪÎÄÕÂÖ÷Òª½éÉÜÁËwindows »·¾³Ï´electricSearch+kibana,±¾Îĸø´ó¼Ò½éÉܵķdz£Ïêϸ£¬¶Ô´ó¼ÒµÄѧϰ»ò¹¤×÷¾ßÓÐÒ»¶¨µÄ²Î¿¼½è¼ø¼ÛÖµ£¬ÐèÒªµÄÅóÓÑ¿ÉÒԲο¼ÏÂ2021-05-058¸ö»ùÓÚLuceneµÄ¿ªÔ´ËÑË÷ÒýÇæ(ÍƼö)
LuceneÊÇÒ»ÖÖ¹¦ÄÜÇ¿´óÇÒ±»¹ã·ºÊ¹ÓõÄËÑË÷ÒýÇ棬ÒÔÏÂÁгö8ÖÖ»ùÓÚLuceneµÄËÑË÷ÒýÇ棬Äã¿ÉÒÔÏëÏóËûÃÇÓжàôǿ´ó2017-04-04Ïê½âÌáÉý³¡¾°Îı¾Ê¶±ðÖеÄÓïÑÔÄ£ÐÍ
ÓïÑÔÄ£Ðͼ´¸ù¾Ýµ±Ç°Óï¾³µÄÉÏÏÂÎÄÍƶϵ±Ç°¾ä×ÓµÄÒâ˼¡£Îı¾Í¼ÏñÖаüº¬Á½²ãÐÅÏ¢£ºÊÓ¾õÎÆÀíÐÅÏ¢ºÍÓïÑÔÐÅÏ¢¡£ÓÉÓÚµ¥´¿¸ù¾ÝÊÓ¾õÎÆÀíÐÅÏ¢½øÐÐÎÄ×Öʶ±ðȱÉÙÁ˶ÔÉÏÏÂÎĵÄ×Ö·ûÓïÒåÐÅÏ¢µÄÍÚ¾ò£¬Ê±³£»áµ¼Ö´íÎóµÄÎı¾Ê¶±ð½á¹û£¨Ö®ºó»áÏêϸ˵Ã÷£©¡£2021-05-05
×îÐÂÆÀÂÛ