tlist (typed list)
tlist는 사용자에게 특수한 데이터 객체를 정의하고 연산자를 재정의할 수 있도록 하는 아주 유용한 기능을 제공한다. tlist의 첫 번째 인수는 반드시 문자열 (혹은 문자열 벡터) 이어야 한다. 문자열 벡터인 경우 이것의 첫 요소는 정의되는 리스트의 이름이고 나머지 문자열은 뒤따라오는 객체의 이름 (필드명)이 된다. 예를 들면 다음과 같다.
>> tlA=tlist(['example', 'first', 'second'], 1.23, [1,2])tlA =tlA(1)!example first second !tlA(2)1.23tlA(3)1. 2.>> type(tlA)ans =16.>> typeof(tlA)ans =example |
이 예에서 tlist()함수의 첫 번째 인수는 다음과 같은 문자열 행렬인데,
[ 'example', 'first', 'second' ]
첫 번째 요소 ‘example’은 이 리스트의 이름을 지정한다. 이 이름은 1024문자까지 지정할 수 있으나 연산자 오버로딩을 하기 위해서는 8자를 넘지 말아야 한다. 그 다음 ‘first’ 는 1.23을 가리키는 문자열키이고 ‘second’는 벡터 [1, 2]를 가리키는 문자열키이다. 예를 들어서 1.23이라는 값에 접근하기 위해서는 다음과 같이 하면 된다.
>> tlA(2) // 혹은>> tlA(‘first’) // 혹은>> tlA.first |
두 번째 요소도 마찬가지로 접근해서 값을 읽거나 다른 값으로 설정할 수 있다. 만약 두 번째 요소를 문자열로 바꾸고 싶다면 다음과 같이 하면 된다.
>> tlA(2) = = “A new value” // 혹은>> tlA.second = “A new value” |
구조체의 경우와 마찬가지로 tlA.stringKey 와 같은 방식일 경우에는 stringKey는 일반적인 식별자 규칙을 따라야 한다. 하지만 tlA(‘stringKey’)와 같은 방식으로 접근하는 경우에 문자열키는 어떤 문자열이라도 상관없으며, 이 경우 문자열을 조합해서 아니면 문자열벡터의 한 요소로 네임키를 지정해 줄 수 있다는 장점을 가진다.
똑 같은 tlist 를 다음과 같이 생성할 수도 있는데 구조체의 경우와 유사하다.
>> tlA=tlist(['example', 'first', 'second']) ;>> tlA.first = 1.23 ;>> tlA.second = [1 2] ; |
mlist
mlist (matrix-oriented typed list)는 전 절에서 설명한 tlist 와 유사하지만 한 가지 중요한 차이점이 있다. 그것은 필드값을 인덱스로 접근할 수 없다는 점이다.
댓글 없음:
댓글 쓰기