2017-02-08 19 views
7

Các YAML spec nêu rõ:Tại sao thông số YAML chỉ định một dấu cách sau dấu hai chấm?

Mappings sử dụng dấu hai chấm và không gian (“:”) để đánh dấu mỗi phím: cặp giá trị.

Vì vậy, đây là hợp pháp:

foo: bar 

Nhưng điều này, Không phải là:

foo:bar 

Tôi thấy nhiều người trực tuyến được ranting về không gian. Tôi nghĩ rằng họ có một điểm. Tôi đã bị nó đốt cháy nhiều lần.

Tại sao không gian bắt buộc? Xem xét thiết kế đằng sau nó là gì?

Trả lời

8

Thật dễ dàng để bỏ lỡ, bởi vì đặc điểm kỹ thuật có sử dụng quy ước kỳ lạ chỉ làm nổi bật nhân vật cuối cùng của một liên kết nội bộ, nhưng “: ” trong phần bạn trích dẫn là thực sự là một liên kết to another section of the specification mà trả lời câu hỏi của bạn:

Thông thường, YAML khẳng định chỉ báo giá trị ánh xạ “:” được tách biệt với giá trị bằng khoảng trắng. Một lợi ích của hạn chế này là ký tự “:” có thể được sử dụng bên trong các scalars đơn giản, miễn là nó không được theo sau bởi khoảng trắng. Điều này cho phép các URL và dấu thời gian không được kiểm duyệt. Nó cũng là một nguồn tiềm ẩn cho sự nhầm lẫn là "a: 1" là một vô hướng đơn giản và không phải là một cặp khóa: giá trị.

Vì vậy, động lực là bạn có thể viết danh sách như thế này mà không đòi hỏi bất kỳ trích dẫn:

useful_values: 
- 2:30 
- http://example.com 
- localhost:8080 

Nếu không gian là không bắt buộc, điều này có thể kết thúc được mơ hồ, và hiểu là một bộ chìa khóa cặp giá trị.

Bên cạnh: Đây là đoạn mã JS để làm cho liên kết định dạng trên tài liệu đó ít hữu dụng hơn.

document.styleSheets[0].insertRule('a[href^="#"] { color: #00A !important; text-decoration: underline !important; background: none !important; }', 0); 
+0

Wow! Họ rất rất lén lút. Cảm ơn. – Vitaliy

Các vấn đề liên quan