MATLAB에서 디버깅 할 때 진단 인쇄에 익명 함수를 사용합니다. 예를 들면, "이 중얼"로 disp([])
를 사용MATLAB에서 "빈"익명 함수를 만드는 방법은 무엇입니까?
debug_disp = @(str) disp(str);
debug_disp('Something is up.')
...
debug_disp = @(str) disp([]);
% diagnostics are now hidden
나에게 조금 더러운 것 같습니다; 거기에 더 나은 옵션이 있습니까? 명백한 (?) 방법이 작동하지 않습니다.
debug_disp = @(str) ;
이것은 아마도 진단 인쇄뿐만 아니라 다른 기능적 언어 응용 프로그램에 유용 할 수 있습니다. 당신은 단순히 익명 함수의 본문을 대체 할 "하지 않는다 - 아무것도"명령을 찾고 있다면
나는이 접근법을 가장 좋아합니다. 참으로 그것을하는 가장 청결한 방법이다. –
내 컴퓨터에서이 방법은 내가 시도한 두 가지 버전을 제외한 모든 버전보다 빠릅니다. handle이'handle = @ NOP' 일 때 handle()에 대한 1 백만 건의 호출은 7.09 초가 필요합니다. 'handle = @() [];'은 23.2 초가 필요합니다. 객체 생성의 오버 헤드 때문에 이것이라고 상상해보십시오. 'handle = @() drawnow ('update');'3.37 초가 필요합니다. 'handle = @() disp ([])'와'handle = @() disp ('');는 9.71 초에 묶여있었습니다. 가장 빠른 함수는'handle = @() (1);'이고 0.775 초의 시간이다. 그러나 해당 호출은 세미콜론으로 끝나야합니다. – Eponymous
Oops'handle = @() drawnow ('update');는 100 만 건의 호출에 34.0 초가 걸렸습니다. 나는 우연히 1000000을 타이핑 할 때 0을 버렸다. 그건 그렇고, 그것은 여전히 handle = @() drawnow;보다 훨씬 빠르며 187 초가 걸린다. – Eponymous