2013-08-01 3 views
0
val scan2 = new scala.collection.mutable.HashMap[String, Int] 
var scan2 = new scala.collection.immutable.HashMap[String, Int] 

Какой я должен использовать или лучше, для меня оба выполняют ту же работу. меня немного сбивает с толку. Я новичок в Scala.Неизменяемая и взаимозаменяемая карта в Scala

+0

В долгосрочной перспективе используйте неизменяемый вариант – 4lex1v

ответ

1

Если вы переходите с Java, вы можете найти изменчивую версию более знакомой и более простой в использовании при перезаписи кода Java в Scala. Однако в долгосрочной перспективе я (и другие) рекомендую привыкнуть к использованию и работе с неизменными формами классов сбора, где это возможно. Работа с неизменяемыми данными (неизменные коллекции, использующие «val», а не «var» и т. Д.) Более функциональны (как в стиле «функционального программирования») в природе, что является силой изучения Scala. Например, он работает лучше в параллельных ситуациях (не беспокоясь о блокировке/синхронизации доступа к вашей коллекции, чтобы остановить его неожиданно и так далее) и позволяет лучше рассуждать о том, как работает ваш код. Вы не должны слишком усердно переписывать свои классы для работы с неизменяемыми типами коллекций - подумайте о том, как вы используете класс String Java (который также является неизменным).

+0

спасибо за ответ. В веб-приложении точка зрения неизменной карты не очень полезна, мы все время должны модифицировать коллекцию путем добавления или удаления. так что я понял, что если я хочу неизменную коллекцию, я должен использовать imutable collection с ключевым словом val. то я не могу изменить. так как вы подходите к этой проблеме типа fo. –

Смежные вопросы