Skip to content

Instantly share code, notes, and snippets.

View basvanmeurs's full-sized avatar

Bas van Meurs basvanmeurs

View GitHub Profile
@basvanmeurs
basvanmeurs / Account.js
Last active February 5, 2019 16:40
State Subclassing example
export default class Account extends StateMachine {
constructor() {
this._balance = 0;
}
$enter() {
this.open();
}
@basvanmeurs
basvanmeurs / StealingAccount.js
Last active February 5, 2019 15:52
State Subclassing example for inheritance
import Account from "./Account.js";
export default class StealingAccount extends Account {
constructor() {
super();
this._stolen = 0;
}
getRealAvailable() {
@basvanmeurs
basvanmeurs / WeakIdentityMap.kt
Created February 11, 2021 09:41
Kotlin WeakMap that uses identity comparison rather than equality comparison
package org.mypackage.util
import java.lang.ref.Reference
import java.lang.ref.ReferenceQueue
import java.lang.ref.WeakReference
/**
* WeakMap that uses identity comparison rather than equality comparison ([java.util.WeakHashMap]).
* Useful for instance mappings.
*
@basvanmeurs
basvanmeurs / example.kt
Created February 11, 2021 09:53
Kotlin Extension function with stateful property
class TargetClass {} // External class to be extended
class Extra(var name: String = "")
val state = mutableMapOf<TargetClass, Extra>()
fun TargetClass.getState(): Extra {
 return state.getOrPut(this) { Extra() }
}
fun TargetClass.setName(v: String) {
 getState().name = v;