탐색 연산자 "."
외에도, 옥타브에서는 구조체를 만드는 데에 능동 명명 "(변수)"
나
struct
함수가 가능합니다. 능동 명명은 기록란 이름으로 변수의 문자열 값을 사용합니다. 예시입니다.
a = "field2"; x.a = 1; x.(a) = 2; x ⇒ x = { a = 1 field2 = 2 }
능동 명명에는 올바른 옥타브 식별자 뿐만 아니라 임의의 문자열을 사용하여도 됩니다.(매트랩에서 작동하지 않음에 유의하십시오.)
a = "long field with spaces (and funny char$)"; x.a = 1; x.(a) = 2; x ⇒ x = { a = 1 long field with spaces (and funny char$) = 2 }
경고 식별자 Octave:language-extension
가 위 용법에 대한 경고를 할 수 있습니다.
경고 식별자를 참고하십시오.
실제로는 문자열을 다루는 모든 함수를 기록란이 자료 구조체에 들어가기 전까지 기록란 이름을 만드는 데에 사용하여도 됩니다.
names = ["Bill"; "Mary"; "John"]; ages = [37; 26; 31]; for i = 1:rows (names) database.(names(i,:)) = ages(i); endfor database ⇒ database = { Bill = 37 Mary = 26 John = 31 }
구조체를 만드는 세 번째 방법은 struct
명령입니다. struct
는 여러 매개변수 쌍을
받아 첫 번째 매개변수는 구조체에 넣을 기록란 이름으로 쓰고, 두 번째 매개변수는 스칼라나 낱칸 배열로써 구조체나 구조체 배열에 넣을 값으로
사용합니다. 예시입니다.
struct ("field1", 1, "field2", 2) ⇒ ans = { field1 = 1 field2 = 2 }
스칼라와 낱칸 배열이 혼합된 값을 struct
에 넣으면, 스칼라 매개변수를 확장하여 같은 크기의 구조체 배열을
만듭니다. 예시입니다.
s = struct ("field1", {1, "one"}, "field2", {2, "two"}, "field3", 3); s.field1 ⇒ ans = 1 ans = one s.field2 ⇒ ans = 2 ans = two s.field3 ⇒ ans = 3 ans = 3
개별 기록란에 낱칸 배열을 넣은 구조체를 만드려면, 아래 예시처럼 넣을 낱칸 배열을 다른 낱칸 배열이 품어야 합니다.
struct ("field1", {{1, "one"}}, "field2", 2) ⇒ ans = { field1 = { [1,1] = 1 [1,2] = one } field2 = 2 }
스칼라 구조체나 배열 구조체를 만들고 값을 초기화 합니다.
기록란1, 기록란2, … 변수는 기록란의 이름을 정하는 문자열이고, 값1, 값2, … 변수는 모든 자료형이 가능합니다.
값이 낱칸 배열이면, 구조체 배열을 만들고, 그 값으로 초기화 합니다. 값에 지정한 각 낱칸 배열의 크기는 반드시 같아야 합니다. 홑낱칸과 낱칸 배열이 아닌 값은 복제되어 전체 배열을 채웁니다. 빈 낱칸은 지정한 기록란 이름을 가진 빈 구조체 배열을 만듭니다.
매개변수가 객체이면, 해당 객체에 속한 구조체를 반환합니다.
구조체 배열에서 구문이 최적환된 것을 보십시오. 아래 예시를 따르는 것이 좋습니다.
struct ("foo", 1) ⇒ scalar structure containing the fields: foo = 1 struct ("foo", {}) ⇒ 0x0 struct array containing the fields: foo struct ("foo", { {} }) ⇒ scalar structure containing the fields: foo = {}(0x0) struct ("foo", {1, 2, 3}) ⇒ 1x3 struct array containing the fields: foo
첫 번째 예시는 기록란과 값이 한 개인 일반적인 스카라 구조체입니다. 두 번째 예시는 구조체 배열 값로 빈 낱칸 배열이 입력되었기 때문에 기록란이 한 개이고 값이 없는 빈 구조체 배열을 만듭니다. 값으로 낱칸이 하나인 낱칸 배열을 사용하면, 기록란의 값으로 낱칸을 사용하는 스칼라 구조체를 만듭니다. 해당 낱칸은 빈 낱칸 배열이 됩니다.
마지막으로 값이 스칼라가 아닌 낱칸 배열이면, struct
는 구조체 배열을 만듭니다.
같이 보기: cell2struct, fieldnames, getfield, setfield, rmfield, isfield, orderfields, isstruct, structfun.
함수 isstruct
를 객체가 구조체나 구조체 배열인지 검사하는 데에 사용할 수 있습니다.