/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - 2 0 1 7 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ // ĠThis Ġfile Ġwas Ġautomatically Ġgenerated Ġfrom Ġcor outines - guide . md Ġby ĠK nit Ġtool . ĠDo Ġnot Ġedit . Ċ package Ġguide . select . example 0 2 Ċ Ċ import Ġkotlinx . coroutines . experimental .* Ċ import Ġkotlinx . coroutines . experimental . channels .* Ċ import Ġkotlinx . coroutines . experimental . select s .* Ċ Ċ suspend Ġfun Ġselect A or B ( a : ĠReceive Channel < String >, Ġb : ĠReceive Channel < String >): ĠString Ġ= ĊĠĠĠ Ġselect < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġa . on Receive OrNull Ġ{ Ġvalue Ġ-> ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Channel Ġ' a ' Ġis Ġclosed " ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a Ġ-> Ġ'$ value '" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġb . on Receive OrNull Ġ{ Ġvalue Ġ-> ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Channel Ġ' b ' Ġis Ġclosed " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b Ġ-> Ġ'$ value '" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ= Ġrun Blocking < Unit > Ġ{ ĊĠĠĠ Ġ// Ġwe Ġare Ġusing Ġthe Ġcontext Ġof Ġthe Ġmain Ġthread Ġin Ġthis Ġexample Ġfor Ġpredict ability Ġ... ĠĊĠĠĠ Ġval Ġa Ġ= Ġproduce < String >( context ) Ġ{ ĠĊĠĠĠĠĠĠĠ Ġrepeat ( 4 ) Ġ{ Ġsend (" Hello Ġ$ it ") Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġb Ġ= Ġproduce < String >( context ) Ġ{ ĠĊĠĠĠĠĠĠĠ Ġrepeat ( 4 ) Ġ{ Ġsend (" World Ġ$ it ") Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġrepeat ( 8 ) Ġ{ Ġ// Ġprint Ġfirst Ġeight Ġresults ĊĠĠĠĠĠĠĠ Ġprintln ( select A or B ( a , Ġb )) ĊĠĠĠ Ġ} Ċ } Ċ