2013-05-01 3 views
1

Ok, так что это мой сценарий:Почему я не могу использовать значение карты без использования временной переменной?

rascal>map[int, list[int]] g =(); 
rascal>g += (1:[2]); 

Это приведет:

rascal>g[1]; 
list[int]: [2] 

До сих пор так хорошо, но теперь я хотел это сделать, но это не сработало:

rascal>g[1] += 3; 
|stdin:///|(2,1,<1,2>,<1,3>): insert into collection not supported on value and int 

Так что не может непосредственно использовать значение из г [1] и должен использовать временную переменную как это:

rascal>lst = g[1]; 
rascal>lst += 3; 
rascal>g[1] = lst; 
map[int, list[int]]: (1:[2,3]) 

Но каждый раз, когда я хочу расширить свой список, это перетащить! Я делаю что-то неправильно или это было бы удивительной особенностью?

Richard

ответ

1

Хороший вопрос! + в списках есть конкатенация, не вставляемая, поэтому вы можете ввести следующее, чтобы получить желаемый эффект:

g[1] += [2];