次のスニペットの効率はどうなのだろうか:
val lst = Source.fromFile(f).getLines.toList
発行時lst.contains(x)、
再スキャンされているということですか、それとも、検索が新しく作成されたリストのfメモリ内コンテンツに依存しているということですか?f
前もって感謝します。
次のスニペットの効率はどうなのだろうか:
val lst = Source.fromFile(f).getLines.toList
発行時lst.contains(x)、
再スキャンされているということですか、それとも、検索が新しく作成されたリストのfメモリ内コンテンツに依存しているということですか?f
前もって感謝します。
検索はメモリ内のコンテンツに依存しています。そして、呼び出されたときにのみロードさtoListれます。
ソースから直接見る方が良い方法。  Source.fromFileを返しますscala.io.BufferedSource。BufferedLineIteratorgetLinesを返します。
ここは BufferedLineIterator にあり、ファイルの内容が読み取られます。
override def hasNext = {
  if (nextLine == null)
    nextLine = lineReader.readLine
  nextLine != null
}
override def next(): String = {
  val result = {
    if (nextLine == null) lineReader.readLine
    else try nextLine finally nextLine = null
  }
  if (result == null) Iterator.empty.next
  else result
}
}
呼び出しtoListは、nextおよびhasNext上記を使用してリストを取得します。したがってlst、すでにファイルのすべての要素が含まれています。
lst.contains(x)実行すると、他のリストと同様にリストが繰り返されます。