2009-02-23 57 views

Trả lời

209

Sử dụng chức năng class

>> b = 2 
b = 
    2 
>> a = 'Hi' 
a = 
Hi 
>> class(b) 
ans = 
double 
>> class(a) 
ans = 
char 
61

class() chức năng là tương đương với typeof()

Bạn cũng có thể sử dụng isa() để kiểm tra xem một biến là một loại cụ thể. Nếu bạn muốn trở thành thậm chí cụ thể hơn, bạn có thể sử dụng ischar(), isfloat(), iscell() vv

23

Hãy cẩn thận khi sử dụng isa chức năng. Điều này sẽ đúng nếu đối tượng của bạn thuộc loại được chỉ định hoặc một trong các lớp con của nó. Bạn phải sử dụng strcmp với hàm class để kiểm tra xem đối tượng có phải là loại cụ thể và không phải là phân lớp hay không.

38

Một hàm liên quan khác là whos. Nó sẽ liệt kê tất cả các loại thông tin (kích thước, kích thước byte, loại) cho các biến trong một không gian làm việc đã cho.

>> a = [0 0 7]; 
>> whos a 
    Name  Size   Bytes Class  Attributes 

    a   1x3    24 double    

>> b = 'James Bond'; 
>> whos b 
    Name  Size   Bytes Class Attributes 

    b   1x10    20 char 
+1

Hàm [WHO] (http://www.mathworks.de/de/help/matlab/ref/who.html) không liệt kê kích thước của các biến. Bởi vì nó nhanh hơn nhiều nếu không gian làm việc của bạn đông đúc. – JaBe

3

Vì không ai đề cập đến nó, MATLAB cũng có metaclass chức năng, mà trả về một đối tượng với bit thông tin khác nhau về đơn vị thông qua phòng. Các đối tượng meta.class này có thể hữu ích cho các thử nghiệm thừa kế (thông qua các toán tử so sánh chung).

Ví dụ:

>> metaclass(magic(1)) 

ans = 

    class with properties: 

        Name: 'double' 
       Description: '' 
     DetailedDescription: '' 
        Hidden: 0 
        Sealed: 0 
       Abstract: 0 
       Enumeration: 0 
      ConstructOnLoad: 0 
     HandleCompatible: 0 
      InferiorClasses: {0×1 cell} 
     ContainingPackage: [0×0 meta.package] 
    RestrictsSubclassing: 0 
      PropertyList: [0×1 meta.property] 
       MethodList: [272×1 meta.method] 
       EventList: [0×1 meta.event] 
    EnumerationMemberList: [0×1 meta.EnumeratedValue] 
      SuperclassList: [0×1 meta.class] 

>> ?containers.Map <= ?handle 

ans = 

    logical 

    1 

Chúng ta có thể thấy rằng class(someObj) tương đương với Name lĩnh vực kết quả của metaclass(someObj).

Các vấn đề liên quan