- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
val arr = new Array[Int](3)
val arr2 = arr
arr(0) = 100
arr(1) = 200
arr(2) = 300
//arr2 == Array(100, 200, 300)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+127
val arr = new Array[Int](3)
val arr2 = arr
arr(0) = 100
arr(1) = 200
arr(2) = 300
//arr2 == Array(100, 200, 300)
Не говнокод конечно, хотя как посмотреть.
Это нормально, учитывая, что val предполагает неизменяемость значения, или в данном случае считается, что только присвоить новое значение нельзя, а изменять внутреннюю структуру массива можно как захочешь?
Ведь наже в C++ нельзя изменить значения const std::vector.
Elvenfighter 01.12.2012 19:02 # +3
[image]yaoming.png[/image]
http://ideone.com/kHHEzT
bormand 01.12.2012 19:08 # +4
guest 01.12.2012 22:04 # +1
guest 01.12.2012 22:36 # +1
Fai 01.12.2012 22:23 # +2
Elvenfighter 02.12.2012 03:36 # +1
bormand 01.12.2012 19:10 # 0
Fai 01.12.2012 22:26 # −1
- Хочешь мутабельный массив? Держи Array!
- Хочешь немутабельный список? Держи List!
- Хочешь немутабельный массив? Ах ты пидорас, неверный!
- Хочешь мутабельный список? Вали из скалы, еретик!
scriptin 01.12.2012 22:54 # 0
Vector
>Хочешь мутабельный список?
scala.collection.mutable.DoubleLinkedLis t
scala.collection.mutable.LinkedList
scala.collection.mutable.ListBuffer
scala.collection.mutable.MutableList
http://stackoverflow.com/questions/11049213/which-scala-mutable-list-to-use
guest 01.12.2012 23:10 # +2
Elvenfighter 01.12.2012 19:14 # 0
http://ideone.com/6zoXp7
Или же:
http://ideone.com/EPZsig
Тут дело в value-type vs. reference-type.
scriptin 01.12.2012 21:22 # 0
Да. Переменная иммутабельна, а значение мутабельно. Мутабельность структуры данных определяется ее типом. Стандартные коллекции разделены на scala.collection.mutable, scala.collection.immutable и др. - по типу всегда можно сказать, мутабульна или нет.