'개인'범위 식별자를 사용하여 몇 개의 모듈 수준 인스턴스 변수를 정의한 상황이 있습니다. 이러한 변수는 모듈 내의 여러 함수에서 사용되므로이 작업을 수행해야합니다. 또한 이러한 변수 중 일부는 '목록'또는 '집합'입니다. 나는이 변수들의 값들이 모듈 내의 특정 함수에 대한 반복적 인 호출들 사이에서 지속된다는 것을 깨달았다. 이것은 예상대로입니다.목록 및/또는 집합에서 요소 삭제
나는 또한 함수 중 하나를 반복적으로 호출하는 테스트를 만들고있다. Java 인스턴스 멤버와 마찬가지로 인스턴스 변수의 새로운 복사본을 갖고 싶습니다. 나는 그렇게 할 수 없다. 나는이 목록/세트의 내용을 무효화하려고하면 다음과 같이 나는 곤경에 얻을 :
module foo::bar
private set[DataType_1] data1;
public void nullifyInstanceVars()
{
//tried
data1={}
}
//method that gets called repeatedly:
public void repeatCallMe(..)
{
nullifyInstanceVars();
...
..
//Throws an error like: trying to add an element of type 1 to set[void]
data1 += anElementOfType1
}
그래서,이 방법은 [DataType1] 데이터 1을 설정하는()는 nullifyInstanceVars을 수정 = {}. 그것은 단지 함수 내에서만 범위가 지정된 새 변수를 만들고 실제로 요소를 지우지 않는다고 생각하기 때문에 작동하지 않습니다!
도움이 되시길 바랍니다.
https://github.com/cwi-swat/rascal/issues/718 –
참조 Ahhh .. 글쎄, 난 주위에 작품을 발견하고 내 스크립트는 내가 맘에 들지 않는 것보다 더 얽혀있다 상태. 그 동안, 나는 여러분이 권장 할 때 명시 적으로 초기화하는 다른 인스턴스 변수가 있음을 깨달았습니다. 그들은 결코 오류를보고하지 않았습니다. 따라서, 당신이 제안한대로해야합니다. 고마워 ... –
또한, data1 = data1 + anElementOfType1을 말하고, 전에도 이것을 알아 차렸지만, 언제 일어날 지 예측할 수는 없습니다. –