Насколько я понимаю, смысл использования метода +=
на изменяемых множествах состоит в том, что
val s = collection.mutable.Set(1)
s += 2 // s is now a mutable Set(1, 2)
имеет эффект, аналогичный
var s = Set(1) // immutable
s += 2 // s is now an immutable Set(1, 2)
Если это так, почему метод +=
в изменяемом наборе возвращает сам набор? Разве это не затруднит рефакторинг кода, например
val s = collection.mutable.Set(1)
val s1 = s += 2 // s and s1 are now mutable Set(1, 2)
не может быть реорганизован в
var s = Set(1) // immutable
var s1 = s += 2 // s is immutable Set(1, 2), s1 is now ()
при сохранении первоначального значения. В чем причина этого дизайнерского решения?