/r/matlab에있는 누군가가 며칠 전 Flappy Bird clone과 관련된 MATLAB FEX에 관한 정말 흥미로운 질문을했습니다. 포스터는 주 .m
파일을 열고 첫 번째 줄의 디버거에서 중지하고 whos()
을 실행하면 함수에서 명시 적으로 정의하기 전에 많은 변수를 보게된다는 것을 알았습니다.중첩 된 함수가있는 변수 선언
편집기에서 가장 먼저 알아 낸 점은 중첩 된 함수가 있음을 나타내는 구문 강조입니다. 한눈에, whos()
에 의해 반환 된 변수는 기본 함수의 범위에서 어느 시점에서 정의되는 변수 인 것 같습니다.
당신은 간단한 예제를 통해이 문제를 다시 만들 수 있습니다 : 당신이 얻을, 당신은 첫 번째 줄에 중단 점을 설정하면
function testcode
asdf = 1;
function testing
ghfj = 2;
end
end
을하고 whos()
을 실행
Name Size Bytes Class Attributes
ans 0x0 0 (unassigned)
asdf 0x0 0 (unassigned)
내가 찾을 수가 없습니다 중첩 된 함수 또는 관련 항목에 대한 설명서에서이 동작을 설명하는 항목 저는 컴퓨터 과학자가 아니며 프로그래밍 지식은 MATLAB과 파이썬의 아주 작은 뿌리에 국한됩니다. 아무도 무슨 일이 일어나는지 설명 할 수 있습니까? MATLAB이 런타임에 코드를 컴파일하는 방법과 관련이 있습니까?
흥미 롭습니다. 감사합니다. 더 많이 파고 들자 나는 [function basics documentation] (http://www.mathworks.com/help/matlab/matlab_prog/variables-in-nested-and-anonymous-functions.html)에서 몇 문장을 보았습니다. 변수는 코드의 텍스트에 존재해야합니다. 나는 정적 인 작업 공간을 사용하는 추리에 대해 더 많이 알고 싶어할지 모르지만, 필자가 본 검색 결과는이 오류에 대한 질문을 가리킨다. – excaza