TOML(Tom's Obvious, Minimal Language)是一种用于配置文件的轻量级文本格式,旨在易于阅读和编写。它的设计目标是简单明了,同时也能表达复杂的数据结构。TOML文件通常用于配置应用程序、库或项目的设置。

下面是一些TOML的基本概念和语法,以及如何编写TOML文件的示例:

基本语法

TOML文件由键值对(key-value pairs)组成,每个键值对由键、等号(或双冒号),以及值组成。键和值之间需要用等号(=)或双冒号(::)分隔,如下所示:

key = "value"

key :: "value"

TOML文件也支持行内注释,可以使用井号(#)来注释一行:

key = "value"  # 这是一条注释

数据类型

TOML支持多种数据类型,包括字符串、整数、浮点数、布尔值、日期时间和数组。以下是一些示例:

string_key = "Hello, TOML!"
integer_key = 42
float_key = 3.14
boolean_key = true
date_key = 2023-09-08T14:30:00Z
array_key = [1, 2, 3]

嵌套表(Nested Tables)

TOML允许创建嵌套的表(tables),用于组织配置数据。嵌套表由表名和一对方括号组成,如下所示:

[table_name]
key1 = "value1"
key2 = "value2"

多行字符串

TOML支持多行字符串,可以使用三个双引号(""")或三个单引号(''')来表示,例如:

multiline_string = """
This is a
multi-line string.
"""

区分大小写

TOML是区分大小写的,因此键名和表名是大小写敏感的。

示例

下面是一个简单的TOML示例,表示一个应用程序的配置:

# Application settings
app_name = "MyApp"
version = "1.0" # Database settings
[database]
host = "localhost"
port = 5432
username = "myuser"
password = "mypassword"

这只是TOML的基础,它支持更复杂的数据结构和更丰富的功能,可以根据你的需要进行扩展和定制。你可以在项目的配置文件中使用TOML来管理各种设置。

TOML的多级嵌套需要一些规则,包括缩进和键的结构。以下是一些重要的规则:

  1. 缩进: TOML使用缩进来表示多级嵌套。通常情况下,你可以使用空格或制表符作为缩进字符,但是在整个文件中要保持一致。通常,2或4个空格的缩进是常见的选择。缩进用来表示嵌套关系。

  2. 表名: 表名是包含在方括号内的,用来表示表的层次结构。表名可以根据需要进行嵌套,但要确保使用正确的缩进来表示层次关系。

  3. 键名: 键名可以包含字母、数字和下划线。键名不需要缩进,它们是与表名对齐的。键名是区分大小写的。

  4. 键值对: 键值对由键、等号(=)或双冒号(::)和值组成。键值对需要缩进,以表示它们属于哪个表。

所以,你不一定要使用database.connection这种形式,可以根据你的需求自定义键名和表名,只需遵循上述规则即可。例如,你可以这样表示多级嵌套:

[server]
hostname = "example.com"
port = 8080 [database]
[database.connection]
host = "localhost"
port = 5432
username = "myuser"
password = "mypassword" [logging]
level = "info"
file = "app.log"

在上述示例中,database.connection 是一个自定义的表名,用于表示数据库连接设置的嵌套。你可以根据你的需求自由定义键名和表名,只要遵循TOML的语法规则即可。

TOML格式简介的更多相关文章

  1. vcf格式简介

    1)背景 伴随着大规模的基因分型及测序工程的产生(例如1000 Genomes Project),之前的信息贮存格式例如gff文件它记录了每一个基因的详细信息,其中许多基因信息在基因组之间是共享的,而 ...

  2. Hex格式和Mot格式简介

    Hex格式和Mot格式简介 一.Hex格式介绍    1.1 什么是 Intel HEX 文件格式?  Intel HEX文件 是由一行行符合 Intel HEX文件格式的文本所构成的ASCII文本文 ...

  3. JSON数据表示格式简介(JavaScript对象表示法)

    [1] JSON简介    > JSON全称 JavaScript Object Notation    > 类似于JS中对象的创建的方法    > JSON和XML一样,都是一种表 ...

  4. IFC格式简介

    IFC是一个数据交换标准, 用于不同系统交换和共享数据.当需要多个软件协同完成任务时, 不同系统之间就会出现数据交换和共享的需求.这时, 工程人员都希望能将工作成果(这里就是工程数据), 从一个软件完 ...

  5. JSON格式简介

    一.JSON:JavaScript Object Notation的简写,是一种轻量级数据交换格式. 二.数据类型:标量.序列(数组).映射(key-value) 三.JSON的四个原则 1 .并列数 ...

  6. RIFF格式简介

    Resource Interchange File Format(简称RIFF),资源交换文件格式,是一种按照标记区块存储数据(tagged chunks)的通用文件存储格式,多用于存储音频.视频等多 ...

  7. LibSVM格式简介

    对于训练或预测,XGBoost采用如下格式的实例文件: train.txt 1 101:1.2 102:0.03 0 1:2.1 10001:300 10002:400 0 0:1.3 1:0.3 1 ...

  8. HTTP 报文格式简介

    HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送 WWW 方式的数据,关于 HTTP 协议的详细内容请参考 RFC2616.HTTP 协议采用了请求/响 ...

  9. 编码的来源于格式简介ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE

    编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚.但是编码又是那么重要,特别在网页这一块.如果你打出来 ...

  10. python 本地配置文件库 Dynaconf 简介

    [前言] 在项目中经常会遇到以下几种需要用到配置文件的场景: 相同的配置参数用在不同的代码中,如果需要调整,则需要手动将各个使用到的地方都相应调整. 密码等信息不想硬编码在项目文件中. 配置文件的格式 ...

随机推荐

  1. Vagrant 学习笔记:搭建 K8s 集群

    Vagrant学习笔记:搭建K8s集群 通常情况下,我们在使用VMware.VirtualBox这一类虚拟机软件创建虚拟开发环境时,往往需要经历寻找并下载操作系统的安装镜像文件,然后根据该镜像文件启动 ...

  2. awk 内置变量与自定义变量

    点击上方" 生信科技爱好者 ",马上关注 真爱,请置顶或星标 作者:ghostwu 原文:https://www.cnblogs.com/ghostwu/p/9085653.htm ...

  3. Python Django Web开发实战

    Python Django全面介绍 Django是一个非常强大的Python Web开发框架,它以"快速开发"和"干净.实用的设计"为设计宗旨.本文将从Djan ...

  4. 好用到飞起的新项目「GitHub 热点速览」

    虽然本周 GitHub 热榜都是一些熟悉的面孔,但还是有不少新开源的项目,比如受启发于 Stripe IDs 的 UUIDv7 扩展 typeid,相信有了它,数据标识问题就迎刃而解了.此外,还有刚开 ...

  5. JVM之指针压缩

    做java开发的同学一般都比较熟悉JVM,那么关于指针压缩这块内容是不是也了解呢,不熟悉的小伙伴往下看吧. 首先说明,本文涉及的JDK版本是1.8,JVM虚拟机是64位的HotSpot实现为准. ja ...

  6. AR增强现实 之Metaio For Unity 开发 之HelloWorld

    开发工具 unity 4.6     MetaioSDK 6.1       代码编辑器 VS 2013 上图不会配置的请自行百度 1.创建项目并且导入Metaio SDk 开发包 2.导入后目录图 ...

  7. TiDB简述及TiKV的数据结构与存储

    1 概述 TiDB 是 PingCAP 公司自主设计.研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical ...

  8. 跟着 GPT-4 从0到1学习 Golang 并发机制(二)

    btw: 我的个人博客网站 目录 一.前言 二.开聊 2.1 Golang 中的 sync 包 - Mutex, RWMutex 和 WaitGroup 2.2 条件变量 sync.Cond 2.3 ...

  9. 详解RISC v中断

    声明 本文为本人原创,未经许可严禁转载.部分图源自网络,如有侵权,联系删除. RISC-V 中断与异常 trap(陷阱)可以分为异常与中断.在 RISC v 下,中断有三种来源:software in ...

  10. 刷了一个月AI歌唱的视频 做一个大胆预测

    现在的AI热点转到ChatAI和AI唱歌去了 很好理解(现在每天在看Neuro的切片 感慨这才是看V的初心 可惜Neuro这个形象在创立的时候只是一个ChatAI 和游戏用的GameBOT并不是同一个 ...