/** Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠIsl on ĠSch er er Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ package Ġnov ah . data Ċ Ċ import Ġjava . lang . RuntimeException Ċ Ċ sealed Ġclass ĠResult < out ĠT , Ġout ĠE > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġok Ġvalue Ġor Ġthrows ĊĠĠĠĠ Ġ* Ġif Ġthis Ġresult Ġis Ġan Ġerror . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunwrap (): ĠT Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠOk Ġ-> Ġvalue ĊĠĠĠĠĠĠĠ Ġis ĠErr Ġ-> Ġthrow ĠRuntimeException (" failed Ġto Ġunwrap Ġerror .") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠOk < out ĠT >( val Ġvalue : ĠT ) Ġ: ĠResult < T , ĠNothing >() Ċ Ċ class ĠErr < out ĠE >( val Ġerr : ĠE ) Ġ: ĠResult < Nothing , ĠE >() Ċ Ċ /** Ċ Ġ* ĠReturn Ġthis Ġok Ġvalue Ġor Ċ Ġ* Ġruns Ġthe Ġhandler Ġwith Ġthe Ġerror . Ċ Ġ*/ Ċ inline Ġfun Ġ< T , ĠE > ĠResult < T , ĠE >. unwrap OrElse ( handler : Ġ( E ) Ġ-> ĠT ): ĠT Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠOk Ġ-> Ġvalue ĊĠĠĠ Ġis ĠErr Ġ-> Ġhandler ( err ) Ċ } Ċ Ċ inline Ġfun Ġ< T , ĠE , ĠR > ĠResult < T , ĠE >. map ( f : Ġ( T ) Ġ-> ĠR ): ĠResult < R , ĠE > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠOk Ġ-> ĠOk ( f ( value )) ĊĠĠĠ Ġis ĠErr Ġ-> ĠErr ( err ) Ċ } Ċ Ċ /** Ċ Ġ* ĠMaps Ġeither Ġthe Ġsuccess Ġor Ġthe Ġfailure . Ċ Ġ*/ Ċ inline Ġfun Ġ< T , ĠE , ĠR > ĠResult < T , ĠE >. map Both ( success : Ġ( T ) Ġ-> ĠR , Ġfailure : Ġ( E ) Ġ-> ĠR ): ĠR Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠOk Ġ-> Ġsuccess ( value ) ĊĠĠĠ Ġis ĠErr Ġ-> Ġfailure ( err ) Ċ }