Skip to content

Instantly share code, notes, and snippets.

@VladimirReshetnikov
Created June 5, 2015 18:58
Show Gist options
  • Save VladimirReshetnikov/77cc53a119d7755a3e79 to your computer and use it in GitHub Desktop.
Save VladimirReshetnikov/77cc53a119d7755a3e79 to your computer and use it in GitHub Desktop.
public interface ImmutableCollection<out E>: Collection<E> {
fun <B: Builder<in E>, R> invokeOnBuilder(f: (B) -> R) : R
public interface Builder<E> {
fun add(e: E): Builder<E>
fun build(): ImmutableCollection<E>
}
}
fun <E1, E: E1> ImmutableCollection<E>.add(e: E1): ImmutableCollection<E1> {
return this.invokeOnBuilder { builder: ImmutableCollection.Builder<E1> -> builder.add(e).build() }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment