#DOCUMENTATION by cg
class: SharedQueue
comment/format in:
#next
#nextWithTimeout:
"{ Package: 'stx:libbasic2' }"
"{ NameSpace: Smalltalk }"
VirtualArray subclass:#VirtualArrayWithCache
instanceVariableNames:'lruCache'
classVariableNames:''
poolDictionaries:''
category:'Collections-Arrayed'
!
!VirtualArrayWithCache class methodsFor:'documentation'!
documentation
"
like a VirtualArray, but caches the results of the last few accesses.
This might behave better, if it is expensive to compute the elements,
and they are often accessed repeatedly (as when showing in a listView).
[author:]
Claus Gittinger
[instance variables:]
[class variables:]
[see also:]
"
!
examples
"
[exBegin]
|factorialLines|
factorialLines := VirtualArrayWithCache new:10000.
factorialLines generator:[:index | index factorial printString].
factorialLines at:1000.
factorialLines at:1000.
factorialLines at:10000.
[exEnd]
"
! !
!VirtualArrayWithCache methodsFor:'collection protocol'!
at:index
lruCache isNil ifTrue:[
lruCache := CacheDictionary new:100.
].
^ lruCache at:index ifAbsentPut:[generator value:index]
"Created: / 01-03-2019 / 20:35:45 / Claus Gittinger"
! !
!VirtualArrayWithCache class methodsFor:'documentation'!
version_CVS
^ '$Header$'
! !