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

4 views (last 30 days)
Kenichi Tanaka
Kenichi Tanaka on 12 Nov 2016
Commented: Kenichi Tanaka on 14 Nov 2016
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によるコードの移動を実現させたいのですが、何か方法はありますか?

Accepted Answer

Jiro Doke
Jiro Doke on 14 Nov 2016
操作1に関しては、ドット表記の場合は別ファイルのメソッドに飛んでくれないみたいですが、関数表記だと飛んでくれました。
this.func1() % 飛ばない
func1(this) % 飛ぶ
操作2に関してはでき無そうなので、対処法として一旦ワークスペースでオブジェクトを作成してみてはいかがでしょう。
this = Test()
this がワークスペースにある限りエディターではクラスプロパティやメソッドをタブ補完できるようになります。
いずれも回避策なので、もしよろしければ機能のリクエストとして下記のリンクからご連絡お願いします。
  2 Comments
Jiro Doke
Jiro Doke on 14 Nov 2016
因みに上記のテクニックは R2015b/R2016a/R2016b で確認しました。
Kenichi Tanaka
Kenichi Tanaka on 14 Nov 2016
早速の回答ありがとうございます。
操作1のケースは自動補完機能を利用したい、操作2のケースはクラス内でprivate関数なども利用しているため、提示していただいた方法では対応が難しそうです。
クラスフォルダーを使わずに1ファイル内でclassが完結するようにしていこうと思います。

Sign in to comment.

More Answers (0)

Categories

Find more on Software Development Tools in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!