/** Runs the passed in function pausing approxmimately one second in between calls.
* as long as the function returns true.
*/
def oncePerSecond
(callback
: () => Boolean
) { Thread sleep 1000
}
}
/** Counts down from 0 to 1, approxmimately once per second.
*/
def main
(args
: Array
[String
]) { oncePerSecond(() => {println(count); count -= 1; count > 0})
}
}
b2JqZWN0IFRpbWVyRXhhbXBsZSB7CiAgLyoqIFJ1bnMgdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiBwYXVzaW5nIGFwcHJveG1pbWF0ZWx5IG9uZSBzZWNvbmQgaW4gYmV0d2VlbiBjYWxscy4KICAgKiBhcyBsb25nIGFzIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuIAogICAqLwogIGRlZiBvbmNlUGVyU2Vjb25kKGNhbGxiYWNrOiAoKSA9PiBCb29sZWFuKSB7CiAgICB3aGlsZShjYWxsYmFjaygpKSB7CiAgICAgIFRocmVhZCBzbGVlcCAxMDAwCiAgICB9CiAgfQoKICAvKiogQ291bnRzIGRvd24gZnJvbSAwIHRvIDEsIGFwcHJveG1pbWF0ZWx5IG9uY2UgcGVyIHNlY29uZC4KICAgKi8KICBkZWYgbWFpbihhcmdzOiBBcnJheVtTdHJpbmddKSB7CiAgICB2YXIgY291bnQgPSAxMAogICAgb25jZVBlclNlY29uZCgoKSA9PiB7cHJpbnRsbihjb3VudCk7IGNvdW50IC09IDE7IGNvdW50ID4gMH0pCiAgfQp9Cg==