سؤال

لقد اكتشفت للتو أن عند الاتصال جافا من Matlab

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

ما يعادل

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

المشكلة هنا هي عندي أيضا method.m أن يفعل بعض الترجمة من جاوة إلى Matlab (على سبيل المثال.تحويل String[] إلى خلية من سلاسل).بلدي method.m يبدو

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

ما يحدث هو عندما اتصل method(object, arg1,...,argn), ، فإنه المباشر جافا الاتصال بدلا من استخدام بلدي method.m

الإصلاح السهل, فقط لا تستخدم نفس الأسلوب اسم بلدي على حد سواء جافا أساليب بلدي .m ملفات. ولكن هل هناك طريقة أخرى ؟ كيف أعرف الطريقة التي سوف يطلق تعطى نفس الاسم ؟ هل هناك طريقة لضمان أسميه method.m بدلا من جافا الأسلوب ؟ من السهل أن تضمن دعوة إلى طريقة جافا ، object.method بناء الجملة.

كملاحظة جانبية, ما هو أيضا سخيفة هو .m محرر الروابط method.m على method(object, arg1,...,argn) المكالمة ، بينما عندما تصحيحها ويدعو طريقة جافا.

هل كانت مفيدة؟

المحلول

قد يكون الوقوع في بعض المشاكل مع كيفية MATLAB لا إيفاد...

كيف أعرف الطريقة التي سوف يطلق تعطى نفس الاسم ؟

هذا القسم من MATLAB الوثائق يناقش كيف هي وظيفة المختار في الحالات عندما تكون هناك وظائف متعددة مع نفس الاسم.من الوثائق:"وظيفة ترتيب الأسبقية تحدد الأسبقية من وظيفة واحدة على أخرى بناء على نوع الوظيفة وموقعها على MATLAB المسار." هذا النظام (من الأعلى إلى الأدنى) أدناه:

  • الفرعية وظيفة
  • خاصة وظيفة
  • منشئ الفئة
  • زائد طريقة
  • وظيفة في الدليل الحالي
  • وظيفة في مكان آخر على الطريق

وضع الخاص بك "الأسلوب.م" وظيفة من المرجح أن تحدد ما إذا كان يحصل على ما يسمى أو طريقة جافا يحصل تسمى عند استخدام "طريقة(كائن...)" بناء الجملة.

هل هناك طريقة لضمان أنا استدعاء الأسلوب.م بدلا من جافا الأسلوب ؟

الآن أنا التخمين الخاص بك "الأسلوب.م" في الدليل الحالي أو في أي مكان آخر على طريق (اثنين أدنى الأسبقية المناصب في).إذا كنت جعلت من "الأسلوب.م" أ الفرعية وظيفة في أكبر رمز الدعوة ، أو إذا كان من الممكن وضعه في دليل خاص حيث يمكن أن يطلق عليه من قبل كل وظيفة تحتاج إلى دعوة ، ومن ثم قد يسمى بدلا من جافا الطريقة عند استخدام "طريقة(كائن...)" بناء الجملة.

ويساعد هذا الأمل!

نصائح أخرى

Hmmmmmmmmm....قد تتمكن من محاولة الحصول على وظيفة التعامل مع باستخدام @method ثم اتصل feval() على وظيفة التعامل معها.

التي قد تعمل ولكن لست متأكدا....

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top