탐색 연산자 "." 외에도, 옥타브에서는 구조체를 만드는 데에 능동 명명 "(변수)"나
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를 객체가 구조체나 구조체 배열인지 검사하는 데에 사용할 수 있습니다.