プログラミング言語 Scala 2冊目
■ このスレッドは過去ログ倉庫に格納されています
0665デフォルトの名無しさん
2009/11/21(土) 07:09:09takeWhile を自作すれば速くなるが、やりすぎか?
def myTakeWhile[A](it: Iterator[A], p: A => Boolean) = new Iterator[A] {
private var cached = false
private var nextCache: A = _
private var hasNextCache = false
def hasNext = {
if (!cached) {
cached = true
if (it.hasNext) { nextCache = it.next; hasNextCache = p(nextCache) }
else hasNextCache = false
}
hasNextCache
}
def next =
if (hasNext) { cached = false; nextCache }
else throw new NoSuchElementException("next on empty iterator")
}
def main(args: Array[String]) {
val primes = new ArrayBuffer[Int]
for {
i <- 2 until args(0).toInt
if !myTakeWhile[Int](primes.elements, (_ <= (Math sqrt i))).exists(i % _ == 0)
} primes += i
}
■ このスレッドは過去ログ倉庫に格納されています