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

2 次查看(过去 30 天)
Kenichi Tanaka
Kenichi Tanaka 2016-11-12
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
操作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 个)

类别

Help CenterFile Exchange 中查找有关 Multirate Signal Processing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by