クラス フォルダーを利用して​メンバ関数を別ファイ​ルに作成した際に、T​AB補完によるメンバ​変数、メンバ関数を表​示させる方法について

1. クラス フォルダーを利用してクラスを定義
@Test/Test.m
classdef Test < handle
properties
a;
end
methods
function this = Test()
end
end
methods(Access = private)
func1(this);
end
methods
function check(this)
this.func1(); % A
end
end
end
2. クラスフォルダ内に別ファイルとしてメンバ関数を作成
@Test/func1.m
function func1(this)
this.<TAB> % B
end
操作1:@Test/Test.m のA行でctrl+Dを押す
期待する動作1:@Test/func1.m が開く
実際の動作1:「ファイルthis.func1は存在しません、作成しますか?」とメッセージが表示される
操作2:@Test/func1.m 内のB行において"this."に続いて<TAB>を押す
期待する動作2:Testクラスのメンバ変数aやメンバ関数func1, checkが候補として表示される。
実際の動作2:Testクラスのメンバ変数aやメンバ関数func1, checkが候補として表示されない。
質問
クラスフォルダーを使ってクラスを構築する際に、TAB補完やctrl+Dによるコードの移動を実現させたいのですが、何か方法はありますか?

 채택된 답변

Jiro Doke
Jiro Doke 2016년 11월 14일

2 개 추천

操作1に関しては、ドット表記の場合は別ファイルのメソッドに飛んでくれないみたいですが、関数表記だと飛んでくれました。
this.func1() % 飛ばない
func1(this) % 飛ぶ
操作2に関してはでき無そうなので、対処法として一旦ワークスペースでオブジェクトを作成してみてはいかがでしょう。
this = Test()
this がワークスペースにある限りエディターではクラスプロパティやメソッドをタブ補完できるようになります。
いずれも回避策なので、もしよろしければ機能のリクエストとして下記のリンクからご連絡お願いします。

댓글 수: 2

Jiro Doke
Jiro Doke 2016년 11월 14일
因みに上記のテクニックは R2015b/R2016a/R2016b で確認しました。
Kenichi Tanaka
Kenichi Tanaka 2016년 11월 14일
早速の回答ありがとうございます。
操作1のケースは自動補完機能を利用したい、操作2のケースはクラス内でprivate関数なども利用しているため、提示していただいた方法では対応が難しそうです。
クラスフォルダーを使わずに1ファイル内でclassが完結するようにしていこうと思います。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 PHY Components에 대해 자세히 알아보기

제품

질문:

2016년 11월 12일

댓글:

2016년 11월 14일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by