온도를 변환하는 매우 간단한 GUI를 MATLAB에 작성했습니다. 그것은 학생들의 수업을위한 튜토리얼 역할을하기위한 것입니다. 이상한 일이 일어났습니다. MVC 디자인 패턴과 마찬가지로 모델 오브젝트, 뷰 오브젝트 및 컨트롤러 기능이 있습니다. GUI를 (변환 된 온도)의 출력 필드를 설정하려면 컨트롤러 함수 자체에서이 줄을 실행할 수 있습니다 : views.outputTextField
변환 된 온도와 model.outTemp
를 표시하는 GUI 텍스트 필드입니다MATLAB 함수는 배치에 따라 기능을 거부합니다.
set(views.outputTextField,'string',num2str(round(model.outTemp)));
는 변환 된 온도입니다. 꽤 직설적 인. 뷰 객체는 모든 GUI 사용자에 대한 참조를 가지며 모델 객체에서 새로 변환 된 온도로 필드를 업데이트합니다. 그냥 지금은 뷰에서 익명 함수이며, 이전
views.updateOutputField = @()set(views.outputTextField,'string',...
num2str(round(model.outTemp)));
같은 라인 :
그러나, 나는 오히려 뷰 객체에서보기 기능을 할 것이다, 그래서 나는이 같은 라인을 만드는 시도 목적. 이 방법으로 컨트롤러에서 단순히 views.updateOutputField();
으로 함수를 호출하고 뷰 로직을 컨트롤러 로직 밖으로 유지할 수 있습니다. 하지만이 방법은 효과가 없습니다! , 다시 작동 단지 익명 함수를 사용하는 대신 (중복) 기능을 분리하여
views.updateOutputField = @updateOutputField
function updateOutputField()
set(views.outputTextField,'string',num2str(round(model.outTemp)));
end
: (. 그것은 get()
기능 일 것이다 )
대신 나는 다음을 수행해야 . 뭐!? 이것은 나에게 의미가 없습니다. 뷰 및 모델 객체는 전역이며 익명의 함수는 get()
으로 작동합니다. 누구가 여기에 무슨 일이 있는지 실마리가 있습니까?
이것은 사실입니다. 역설적이게도, MVC 디자인 패러다임에서 잠시 동안 작업 한 후이를 일부 학생들에게 보여 주면서 어쨌든 익명의 함수를 사용하지 않는 것이 더 낫다는 것을 깨달았습니다. 조직적인 이유로, 이름을 붙이는 것이 더 낫습니다 (가장 단순한 조건 이외에는). 그럼에도 불구하고이 아주 명확한 설명에 감사드립니다. – russellmania
@ruzel : 답변을 "수락 함"으로 표시하십시오. – Mikhail
미안하지만 그렇게 오래 걸려서 미안 해요. 여전히 StackOverflow가 어떻게 작동하는지 익숙해졌습니다! – russellmania