Posted to tcl by dkf at Mon Nov 12 09:16:11 GMT 2007view pretty

Aspect create cache {
    aspect -before {
	my variable ValueCache
	set key [self target],$args
	if {[info exist ValueCache($key)]} {
	    return $ValueCache($key)
	}
    } -variable result -after {
	return [set ValueCache($key) $result]
    }
    method flushCache {} {
	my variable ValueCache
	unset ValueCache
	# Skip the cacheing
	return -level 2 ""
    }
}
cache attach demo