Skip to content

Instantly share code, notes, and snippets.

View patrickcousins's full-sized avatar

Patrick Cousins patrickcousins

View GitHub Profile
fun calculateDiscount(person: Person) : Int {
//...
}
class Person(private val name: String,
val age: Int,
val income: Int = 0)
sealed class SocialSignIn {
   sealed class SignIn: SocialSignIn() {
       class Success : SignIn()
       sealed class TwoFactor : SignIn() {
           class Success : TwoFactor()
           class RetryTwoFactor : TwoFactor()
           class Fail : TwoFactor()
           class RetrySocial : TwoFactor()
       }
       class Fail : SignIn()
sealed class TwoFactorResult {
   object Success : TwoFactorResult()
   data class RetryTwoFactorAuth(val token: String) : TwoFactorResult()
   data class Fail(val errorMessage: String) : TwoFactorResult()
   data class RetrySocial(val errorMessage: String) : TwoFactorResult()
}
sealed class SignInResult {
   data class Success(val token: String) : SignInResult()
   data class TwoFactorAuth(val token: String) : SignInResult()
   data class Fail(val token: String) : SignInResult()
   data class RetrySocial(val errorMessage: String) : SignInResult()
}
sealed class SocialSignInResult {
   data class Success(val token: String) : SocialSignInResult()
   data class Link(val token: String) : SocialSignInResult()
   data class Register(val token: String) : SocialSignInResult()
   data class Error(val errorMessage: String) : SocialSignInResult()
}
warmWool.forEach {
   val yarn = when (it) {
       is Wool.Merino -> knit()
       is Wool.Alpaca -> knit()
   }
}
val warmWool = yarnStash.filterIsInstance<Wool>()
val yarnStash: Sequence<Yarn> = listOf(
       Yarn.Cotton(),
       Yarn.Wool(),
       Wool.Merino(),
       Wool.Alpaca(),
       Yarn.Silk()
).asSequence()
val yarn: Yarn = when(spool) {
   is Yarn.Cotton -> knit()
   is Yarn.Silk -> knit()
   is Wool.Merino -> knit()
   is Wool.Alpaca -> knit()
}