커뮤니티
변수에 대해서
2011-08-14 14:58:45
666
글번호 41896
원래 과거에 프로그래머였는데 YesLanguage메뉴얼을 공부하던중에 배열에 대한 부분에서 의문점이 생겨서 아래와 같이 해봤는데
1분봉에서 디버깅을해보니
AA값은 60분에 한번 바뀌는데 한번 바뀐 이후에는 AA값이 자동 복사 되는 것 같은데
맞나요? 자동 복사하는 것으로 생각해야 하나요 아니면 다른개념이 있나요
분명 AA값은 초기 값은 0이고
60분의 처음에는 AA=AA+1 가 실행되서 AA는 1이 되겠지만
2분째에는 AA=AA+1 문장이 있는 곳에 집입을 하지 않으니까 아무 값도 할당되지 않을 것이고 1분째에 AA가 현재 값이었지만 2분째에는 AA[1]이 1이 되고 AA는 아직 값을 할당 받지 못해서 0일거라 생각했는데 AA는 1이더군요...
var : Frame(0),count(0),AA(0);
Frame = TimeToMinutes(stime)%60;
if dayindex == 0 or Frame < Frame[1] Then{
AA=AA+1;
}
MessageLog("%f %f",AA, AA[1]);
답변 1
예스스탁 예스스탁 답변
2011-08-16 11:51:51
안녕하세요
예스스탁입니다.
작성하신 식에서 AA값은 일반변수이고 60분 간격으로 1씩 증가하는 값입니다.
선언시에 (0)은 AA의 최초값이고 매봉 초기화되는 것은 아닙니다.
AA에 한번 값이 할당되면 다른 값이 할당하기 전에는 그 값을 유지하게 됩니다.
false --> false --> true --> false --> false --> true --> false --> false
AA : 0 --> 0 --> 1 --> 1 --> 1 --> 2 --> 2 --> 2
AA[1] : X --> 0 --> 0 --> 1 --> 1 --> 1 --> 2 --> 2
AA[2] : X --> X --> 0 --> 0 --> 1 --> 1 --> 1 --> 2
AA[3] : X --> X --> X --> 0 --> 0 --> 1 --> 1 --> 1
true는 dayindex == 0 or Frame < Frame[1] 조건이 만족한 봉 false는 만족하지 않은 봉입니다.
수식의 변수값은 모두 이전봉들의 값을 자동으로 저장하고 사용할 수 있습니다.
현재봉의 값은 [0], 1봉전의 값은 [1], 2봉전의 값은 [2]에 저장이 되고
새로운 봉이 생기면 순차적으로 복사해서 가게 됩니다.
dayindex == 0 or Frame < Frame[1]조건이 만족하면 AA에1 아니면 0을 할당하고자 하시면 아래와 같이 수식을 작성하셔야 합니다.
var : Frame(0),count(0),AA(0);
Frame = TimeToMinutes(stime)%60;
if dayindex == 0 or Frame < Frame[1] Then{
AA = 1;
else
AA = 0;
false --> false --> true --> false --> false --> true --> false --> false
AA : 0 --> 0 --> 1 --> 0 --> 0 --> 1 --> 0 --> 0
AA[1] : X --> 0 --> 0 --> 1 --> 0 --> 0 --> 1 --> 0
AA[2] : X --> X --> 0 --> 0 --> 1 --> 0 --> 0 --> 1
AA[3] : X --> X --> X --> 0 --> 0 --> 1 --> 0 --> 0
즐거운 하루되세요
> 나무아래 님이 쓴 글입니다.
> 제목 : 변수에 대해서
> 원래 과거에 프로그래머였는데 YesLanguage메뉴얼을 공부하던중에 배열에 대한 부분에서 의문점이 생겨서 아래와 같이 해봤는데
1분봉에서 디버깅을해보니
AA값은 60분에 한번 바뀌는데 한번 바뀐 이후에는 AA값이 자동 복사 되는 것 같은데
맞나요? 자동 복사하는 것으로 생각해야 하나요 아니면 다른개념이 있나요
분명 AA값은 초기 값은 0이고
60분의 처음에는 AA=AA+1 가 실행되서 AA는 1이 되겠지만
2분째에는 AA=AA+1 문장이 있는 곳에 집입을 하지 않으니까 아무 값도 할당되지 않을 것이고 1분째에 AA가 현재 값이었지만 2분째에는 AA[1]이 1이 되고 AA는 아직 값을 할당 받지 못해서 0일거라 생각했는데 AA는 1이더군요...
var : Frame(0),count(0),AA(0);
Frame = TimeToMinutes(stime)%60;
if dayindex == 0 or Frame < Frame[1] Then{
AA=AA+1;
}
MessageLog("%f %f",AA, AA[1]);