티카

2011-01-10 2 views
3

이 목록 할당을 수정하는 방법을 내가 티카티카

Table[p[i], {i, -3, 0}] = Flatten[{Table[0, {i, -3, -1}], 1}] 

에서 다음을 수행 할하지만 오류가있어 : 그러나

Set::write: Tag Table in Table[p[i], {i, -3, 0}] is Protected. 

를, 그것을 할 완벽하게 괜찮 :

{p[-3], p[-2], p[-1], p[0]} = Flatten[{Table[0, {i, -3, -1}], 1}] 

감사합니다.

답변

5

에 할당 할 수있는 조각으로 평가할 LHS 강제 [표 [P [I] {I, -3, 0}] = 펼치기 [{[표 0, {I 평가

, -3, -1}], 1}]

+0

그렇게 할 때 나는 많은 경고를 받았다. 이 일을 할 수있는 깨끗한 방법이 있습니까? 감사! –

+0

@ Qiang이 답변에는 아무런 문제가 없습니다. 클리어 [ "Global' *"] 또는 깨끗한 Mma 시작 후에 시도해 보시기 바랍니다. –

+0

@ belisarius : 맞아. 나는 분명히하는 것을 잊었다. 그러나 매우 우아하거나 적어도 내가 원하는 방식으로 보이지 않습니다. : –

4

의 속성이 HoldFirst이므로 작동하지 않는 이유가 있습니다. 즉 Set[a,stuff]a에서 Set까지의 값 대신에 a이라는 기호를 전달한다는 의미입니다. 이 속성이있는 이유는 Set[a,stuff] 일 때 stuffa 기호 또는 a 값으로 지정 하시겠습니까?

예에서 a에는 변수 이름 테이블이 있으므로 aHoldFirst 값을 성가 시게해야합니다.

[email protected]@{Table[p[i], {i, -3, 0}],Flatten[{Table[0, {i, -3, -1}], 1}]} 
그러나, 시간 a 대부분의 5 같은 값을 갖게됩니다 당신이 기호 astuff을 할당 a=stuff 원하는 값이 아닌 5

지주 속성을 극복하는 일반적인 패턴은 다음과 같다

관련 문제