구조화된 config 작성하는 세 방법
표준 table — [section]
[name] 으로 시작하는 줄이 새 table 을 열어. 그 아래부터 다음 table 헤더가 나올 때까지의 모든 key 가 그 table 에 들어가. 이름은 key 문법을 그대로 따라 (bare 든 quoted 든, 중첩이면 점을 찍고).
중첩 table — [section.subsection]
table 헤더에 찍은 점이 곧 중첩이야. [server.database] 는 server table 안의 database table 을 가리켜.
Inline table — { key = value, ... }
중괄호로 묶은 table 은 한 줄에 들어가. 좌표 하나, 설정값 하나처럼 자잘한 덩어리에 써. [section] 을 통째로 여는 게 과하게 느껴질 때 말이야. 다만 inline table 은 거기서 완결돼. 한 번 써놓으면 나중에 [section] 헤더로 뭘 더 붙일 수가 없어.
YAML 보다 순서 덜 중요
[a] 보다 [a.b] 를 먼저 써도 되고, [a] 를 아예 안 써도 돼. 안 쓰면 있는 걸로 쳐주거든. 파서가 알아서 맞춰. 대신 값을 하나 치러. 파일을 위에서 아래로 읽은 순서가 실제 파싱된 구조와 늘 맞아떨어지지는 않아. 유연함을 얻고 그만큼 내주는 거야.
'table 은 다시 못 열어':
[server] 로 한 번 연 table 은 나중에 [server] 로 또 열 수 없어. 그 table 의 key 는 헤더 하나 아래에 다 모아둬. sub-table 이나 array of table 은 이야기가 다른데, 그건 다음 lesson 에서 볼게.