문제

Matlab에서 Java를 호출할 때 방금 발견했습니다.

object.method(arg1,...,argn)

는 다음과 같습니다

method(object, arg1,...,argn)

여기서 문제는 나에게도 method.m 이는 Java에서 Matlab으로 일부 번역을 수행합니다(예:전환하다 String[] 문자열 셀에).나의 method.m 처럼 보인다

function result = method(object, arg1,...argn)
  intermediate = object.method(arg1,...argn);
  result = translate(intermediate);

내가 전화했을 때 무슨 일이 일어나고 있는지 method(object, arg1,...,argn), my를 사용하는 대신 직접 Java 호출을 수행합니다. method.m

해결 방법은 간단합니다. Java 메서드와 Java 메서드 모두에 동일한 메서드 이름을 사용하지 마세요. .m 파일. 하지만 다른 방법이 있나요?같은 이름으로 어떤 메서드가 호출되는지 어떻게 알 수 있나요?내가 전화했는지 확인할 수 있는 방법이 있나요? method.m Java 메소드 대신? Java 메소드에 대한 호출을 보장하는 것은 쉽습니다. object.method 통사론.

부수적으로, 또한 어리석은 것은 .m 편집자 링크는 다음과 같습니다. method.mmethod(object, arg1,...,argn) 호출하고 디버깅할 때는 Java 메소드를 호출합니다.

도움이 되었습니까?

해결책

MATLAB이 디스패치를 ​​수행하는 방식과 관련하여 몇 가지 문제가 발생할 수 있습니다.

같은 이름으로 어떤 메서드가 호출되는지 어떻게 알 수 있나요?

이 구역 MATLAB 문서 중 동일한 이름을 가진 함수가 여러 개 있는 경우 함수를 선택하는 방법에 대해 설명합니다.문서에서:"함수 선행 순서는 함수 유형과 MATLAB 경로의 위치를 ​​기반으로 한 기능의 우선 순위를 결정합니다." 이 주문 (가장 높은 것부터 가장 높은 것)은 다음과 같습니다.

  • 하위 기능
  • 비공개 기능
  • 클래스 생성자
  • 오버로드된 메서드
  • 현재 디렉터리의 함수
  • 경로의 다른 곳에서 기능

"method.m" 함수의 배치에 따라 "method(object,...)" 구문을 사용할 때 해당 함수가 호출되는지 또는 Java 메서드가 호출되는지가 결정됩니다.

Java 메서드 대신 method.m을 호출하는 방법이 있나요?

지금 당장은 "method.m"이 현재 디렉터리나 경로의 다른 위치(두 개의 가장 낮은 우선 순위 위치)에 있을 것으로 추측됩니다."method.m"을 만들었다면 하위 기능 더 큰 코드에서 이를 호출하거나 개인 디렉토리 호출이 필요한 모든 함수에서 호출할 수 있는 경우 호출될 수 있습니다. 대신에 "method(object,...)" 구문을 사용할 때 Java 메서드입니다.

도움이 되었기를 바랍니다!

다른 팁

hmmmmmmmmm .... 당신은 사용 기능 핸들을 얻을 수 있습니다. @method 그런 다음 전화하십시오 feval() 기능 핸들에.

작동하지만 잘 모르겠습니다 ....

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top