옥타브에서 클래스 인스턴스 속성에 액세스 / 읽는 방법은 무엇입니까?

사람들

예제 의 클래스와 비슷한 클래스 를 만들면서 클래스 인스턴스에 인수를 첨부했습니다.

function t = train (m, F_z, F_b, varargin)
  ...
  t.m =     m;      % total mass of train [kg]
  t.F_z =  F_z;     % ...
  ...
  t = class (t, "train");

필드 이름 작동하기

>> t1 = train(100, 150000, 200000);
...
>> fieldnames(t1)
ans =
{
  [1,1] = m
  [2,1] = F_z
  ...

하지만 이것에 어떻게 액세스합니까? 분명히 그렇지 않습니다

>> t1.m
error: invalid index for class
>> getfield(t1, 'm')
error: invalid index for class
error: called from
...

내가 줄을두면 t = class (t, 'train');function t = train (m...@train/train.m이 일 모두 잘 작동하는 것 ... 그러나 그것 struct아닌class

Carandraug

두 가지 방법으로이를 수행 할 수 있습니다. 검색 방법을 정의하거나 (쉬운) 설정 subsref(구독 참조) (어려움) 할 수 있습니다.

메소드를 정의하려면 다음을 사용하여 작성하십시오 @train/m.m.

function r = m ()
  r = t.m;
endfunction

구독을 설정하려면 다음을 사용 @train/subsref.m하여 만듭니다 .

function r = subsref (val, idx)
  if (strcmp (idx.type, ".") && strcmp (idx.subs, "m"))
    r = val.m;
  endif
endfunction

이렇게하면 필드 에만 액세스 할 수 있습니다 m. 클래스 내의 속성에 대한 액세스 권한을 부여하려면 다음을 수행하면됩니다.

function r = subsref (val, idx)
  r = subsref (struct (val), idx);
endfunction

속성 하위 집합에 대한 액세스를 허용하려면 다음을 수행 할 수 있습니다.

function r = subsref (val, idx)
  if (strcmp (idx.type, ".") && any (strcmp (idx.subs, {"m", "f2", "F_z"})))
    r = val.(idx.subs{1});
  endif
endfunction

그러나 subsref구조로 액세스 할 때뿐만 아니라 모든 인덱싱을 제어합니다. 사람들이 객체를 색인화하도록 허용 할 수 있습니다 (마차 클래스가 있고 기차를 색인화하면 객체가 반환 될 수 있습니다). 이 함수는 처음에는 약간 이상해 보이지만 subsasgn((첨자 할당) 처럼 ) 매우 유용 할 수 있습니다. 다음과 같이 할 수 있습니다.

function r = subsref (val, idx)
  if (strcmp (idx.type, ".") && strcmp (idx.subs, "m"))
    r = val.m;
  elseif (strcmp (idx.type, "()"))
    r = val.wagons(idx.subs{:});
  endif
endfunction

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

객체 인스턴스에서 클래스 모듈에 액세스하는 방법은 무엇입니까?

분류에서Dev

하나의 인스턴스에서 클래스에 액세스하는 방법은 무엇입니까?

분류에서Dev

그래프를 통해 그래프 노드 인 클래스 인스턴스의 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

요청 컨텍스트 내에서 MvcApplication 클래스의 인스턴스 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

런타임에서 Objective-C 클래스 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

파생 클래스 내에서 기본 클래스의 인스턴스 변수에 액세스하는 더 좋은 방법은 무엇입니까?

분류에서Dev

내부 데코레이터 클래스에서 클래스의 인스턴스에 액세스하는 방법은 무엇입니까?

분류에서Dev

구성 요소 속성에서 클래스 멤버에 액세스하는 방법은 무엇입니까?

분류에서Dev

추상 클래스의 인스턴스 변수에 클래스에 액세스하는 방법은 무엇입니까?

분류에서Dev

Coffeescript에서 확장 클래스의 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

RegistryKey 클래스에 액세스하는 방법은 무엇입니까?

분류에서Dev

ajax / jquery로 클래스에 액세스하는 방법은 무엇입니까?

분류에서Dev

XAML에서 'this'클래스 인스턴스 뷰 또는 레이아웃의 너비와 높이에 액세스하는 방법은 무엇입니까? (Xamarin.forms)

분류에서Dev

구체적인 자식 클래스의 재정의 된 메서드에서 추상 클래스의 생성자를 통해 인스턴스화 된 개체의 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

코드 숨김에서 XAML로 만든 DataContext 클래스 인스턴스에 액세스하는 방법은 무엇입니까?

분류에서Dev

Python : 메타 클래스로 인스턴스 속성을 만드는 방법은 무엇입니까?

분류에서Dev

클래스 및 각 모델 인스턴스에서 액세스 할 수있는 모듈 변수를 만드는 방법은 무엇입니까?

분류에서Dev

옥타브에서 인덱스가있는 행렬을 내보내는 방법은 무엇입니까?

분류에서Dev

다른 클래스의 개인 인스턴스 변수 값에 액세스하는 방법은 무엇입니까?

분류에서Dev

클래스가 인터페이스에서 상속 될 때 List <Interface> 개체 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

서비스 인스턴스에 액세스하는 방법은 무엇입니까?

분류에서Dev

다형성 함수에서 자식 클래스 인스턴스 대신 부모 클래스 인스턴스를 전달하는 방법은 무엇입니까?

분류에서Dev

동일한 인스턴스 내에있는 다른 클래스의 함수에 액세스하는 방법은 무엇입니까?

분류에서Dev

클래스의 인스턴스에서 _init_를 상속하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트 클래스 내에서 프로토 타입 속성에 액세스하는 방법은 무엇입니까?

분류에서Dev

클래스의 목적 인스턴스에 액세스하고 데이터를 전달하는 방법은 무엇입니까?

분류에서Dev

클래스의 인스턴스를 생성자 내의 속성에 전달하고 해당 속성이 초기화 된 속성에 액세스하도록하는 방법은 무엇입니까?

분류에서Dev

Rails Minitest에서 인스턴스 변수에 액세스하는 방법은 무엇입니까?

분류에서Dev

텍스트 파일에서 클래스의 인스턴스를 만드는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    객체 인스턴스에서 클래스 모듈에 액세스하는 방법은 무엇입니까?

  2. 2

    하나의 인스턴스에서 클래스에 액세스하는 방법은 무엇입니까?

  3. 3

    그래프를 통해 그래프 노드 인 클래스 인스턴스의 속성에 액세스하는 방법은 무엇입니까?

  4. 4

    요청 컨텍스트 내에서 MvcApplication 클래스의 인스턴스 속성에 액세스하는 방법은 무엇입니까?

  5. 5

    런타임에서 Objective-C 클래스 속성에 액세스하는 방법은 무엇입니까?

  6. 6

    파생 클래스 내에서 기본 클래스의 인스턴스 변수에 액세스하는 더 좋은 방법은 무엇입니까?

  7. 7

    내부 데코레이터 클래스에서 클래스의 인스턴스에 액세스하는 방법은 무엇입니까?

  8. 8

    구성 요소 속성에서 클래스 멤버에 액세스하는 방법은 무엇입니까?

  9. 9

    추상 클래스의 인스턴스 변수에 클래스에 액세스하는 방법은 무엇입니까?

  10. 10

    Coffeescript에서 확장 클래스의 속성에 액세스하는 방법은 무엇입니까?

  11. 11

    RegistryKey 클래스에 액세스하는 방법은 무엇입니까?

  12. 12

    ajax / jquery로 클래스에 액세스하는 방법은 무엇입니까?

  13. 13

    XAML에서 'this'클래스 인스턴스 뷰 또는 레이아웃의 너비와 높이에 액세스하는 방법은 무엇입니까? (Xamarin.forms)

  14. 14

    구체적인 자식 클래스의 재정의 된 메서드에서 추상 클래스의 생성자를 통해 인스턴스화 된 개체의 속성에 액세스하는 방법은 무엇입니까?

  15. 15

    코드 숨김에서 XAML로 만든 DataContext 클래스 인스턴스에 액세스하는 방법은 무엇입니까?

  16. 16

    Python : 메타 클래스로 인스턴스 속성을 만드는 방법은 무엇입니까?

  17. 17

    클래스 및 각 모델 인스턴스에서 액세스 할 수있는 모듈 변수를 만드는 방법은 무엇입니까?

  18. 18

    옥타브에서 인덱스가있는 행렬을 내보내는 방법은 무엇입니까?

  19. 19

    다른 클래스의 개인 인스턴스 변수 값에 액세스하는 방법은 무엇입니까?

  20. 20

    클래스가 인터페이스에서 상속 될 때 List <Interface> 개체 속성에 액세스하는 방법은 무엇입니까?

  21. 21

    서비스 인스턴스에 액세스하는 방법은 무엇입니까?

  22. 22

    다형성 함수에서 자식 클래스 인스턴스 대신 부모 클래스 인스턴스를 전달하는 방법은 무엇입니까?

  23. 23

    동일한 인스턴스 내에있는 다른 클래스의 함수에 액세스하는 방법은 무엇입니까?

  24. 24

    클래스의 인스턴스에서 _init_를 상속하는 방법은 무엇입니까?

  25. 25

    자바 스크립트 클래스 내에서 프로토 타입 속성에 액세스하는 방법은 무엇입니까?

  26. 26

    클래스의 목적 인스턴스에 액세스하고 데이터를 전달하는 방법은 무엇입니까?

  27. 27

    클래스의 인스턴스를 생성자 내의 속성에 전달하고 해당 속성이 초기화 된 속성에 액세스하도록하는 방법은 무엇입니까?

  28. 28

    Rails Minitest에서 인스턴스 변수에 액세스하는 방법은 무엇입니까?

  29. 29

    텍스트 파일에서 클래스의 인스턴스를 만드는 방법은 무엇입니까?

뜨겁다태그

보관