TwoWayFun

trait TwoWayFun[A, B] extends A => B

Bi-Directional Function

TwoWayFun allows to convert value to some type and back

It is used in two way binded collections

  val intToChar: TwoWayFun[Int,Char] = TwoWayFun(i => ('A' + i).toChar, _ - 'A')

  val list:  Idx.M[Int] = Stream(0, 2, 4).toBuffer
  val view:  Idx.M[Char] = list.twoWay_^(intToChar)

  list.~.tp     // Prints ~(0, 2, 4)
  view.~.tp     // Prints ~(A, C, E)

  view(1) = 'Z' // Note, only second collection is updated, but both are changed

  list.~.tp     // Prints ~(0, 25, 4)
  view.~.tp     // Prints ~(A, Z, E)
Companion
object
Source
TwoWayFun.scala
trait A => B
class Object
trait Matchable
class Any

Def

def apply(v: A): B
def undo(v: B): A

Undo map

Undo map

Restores conversion result to original value

Source
TwoWayFun.scala

Inherited

override def toString(): String
Definition Classes
Function1 -> Any
Inherited from
Function1

Extension

def reverse: TwoWayFun[B, A]
Extension method from TwoWayFun

Reverses two functions

Reverses two functions

apply becomes undo and undo becomes apply

Source
TwoWayFun.scala