mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-10 21:58:48 +01:00
This allows "%(...)" inside a string literal to interpolate the stringified result of an expression. It doesn't support custom interpolators or format strings, but we can consider extending that later.
69 lines
1.3 KiB
Plaintext
69 lines
1.3 KiB
Plaintext
class Toggle {
|
|
construct new(startState) {
|
|
_state = startState
|
|
}
|
|
|
|
value { _state }
|
|
activate {
|
|
_state = !_state
|
|
return this
|
|
}
|
|
}
|
|
|
|
class NthToggle is Toggle {
|
|
construct new(startState, maxCounter) {
|
|
super(startState)
|
|
_countMax = maxCounter
|
|
_count = 0
|
|
}
|
|
|
|
activate {
|
|
_count = _count + 1
|
|
if (_count >= _countMax) {
|
|
super.activate
|
|
_count = 0
|
|
}
|
|
|
|
return this
|
|
}
|
|
}
|
|
|
|
var start = System.clock
|
|
var n = 100000
|
|
var val = true
|
|
var toggle = Toggle.new(val)
|
|
|
|
for (i in 0...n) {
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
val = toggle.activate.value
|
|
}
|
|
|
|
System.print(toggle.value)
|
|
|
|
val = true
|
|
var ntoggle = NthToggle.new(val, 3)
|
|
|
|
for (i in 0...n) {
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
val = ntoggle.activate.value
|
|
}
|
|
|
|
System.print(ntoggle.value)
|
|
System.print("elapsed: %(System.clock - start)")
|