Как создать массив из Iterable в Scala 2.7.7? - PullRequest
1 голос
/ 31 октября 2010

Я использую Scala 2.7.7

Я испытываю трудности с доступом к документации, поэтому фрагменты кода будут отличными.

Контекст

Я анализирую IP-адрес длиной 4 или 16 байтов.Мне нужен массив байтов, чтобы перейти в java.net.InetAddress.Результат String.split (separator) .map (_. ToByte) возвращает мне экземпляр Iterable.

Я вижу два пути решения проблемы

  • использовать массив16 байтов, заполняем его из Iterable и возвращаем только часть его, если не все поля используются (есть ли функция для заполнения массива в 2.7.7? Как получить часть?).
  • используйте контейнер динамической длины и сформируйте массив из него (какой контейнер подходит?).

Текущая реализация опубликована в мой другой вопрос об утечках памяти .

Ответы [ 2 ]

2 голосов
/ 31 октября 2010

В Scala 2.7 Iterable имеет метод, называемый copyToArray.

1 голос
/ 31 октября 2010

Я бы настоятельно рекомендовал вам не использовать массив здесь, если только вам не нужно использовать определенную библиотеку / фреймворк, тогда требуется массив.

Обычно вам лучше использовать собственный тип Scala:

String.split(separator).map(_.toByte).toList
//or
String.split(separator).map(_.toByte).toSeq

Обновление

Если исходная строка представляет собой список имен хостов с разделителями, почему бы не просто:

val namesStr = "www.sun.com;www.stackoverflow.com;www.scala-tools.com"
val separator = ";"
val addresses = namesStr.split(separator).map(InetAddress.getByName)

That 'Я дам вам итерацию из InetAddress экземпляров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...