class MemoDemo extends Memo {
// Functions:
private val func = (input: String) => { /* Do something expensive here */ }
def memoisedFunction(input: String) = memo { func } (input)
// Methods:
private def method(input: String) = { /* Do something expensive here */ }
val f = method _ // Assign this explicitly, not when calling memo (below)
def memoisedMethod(input: String) = memo { f } (input)
}
Usage:
class MemoDemo extends Memo { // Functions: private val func = (input: String) => { /* Do something expensive here */ } def memoisedFunction(input: String) = memo { func } (input)
// Methods: private def method(input: String) = { /* Do something expensive here */ } val f = method _ // Assign this explicitly, not when calling memo (below) def memoisedMethod(input: String) = memo { f } (input) }