2016-12-09 15 views
6

Toán tử <<: trong YAML có thể sử dụng được để nhập nội dung của một ánh xạ này sang một ánh xạ khác, tương tự như toán tử ký tự ghép đôi ** bằng Python hoặc ... toán tử hủy đối tượng trong JavaScript. Ví dụ,Cú pháp << (double left arrow) trong YAML được gọi là gì, và nó được xác định ở đâu?

foo: 
    a: b 
    <<: 
    c: d 
    e: f 

tương đương với

foo: 
    a: b 
    c: d 
    e: f 

này rất hữu ích khi được sử dụng cùng với node anchors bao gồm một số thuộc tính mặc định phổ biến ở nhiều đối tượng, như minh họa trong, ví dụ, Learn YAML in Y minutes hướng dẫn:

# Anchors can be used to duplicate/inherit properties 
base: &base 
    name: Everyone has same name 

foo: &foo 
    <<: *base 
    age: 10 

bar: &bar 
    <<: *base 
    age: 20 

Tuy nhiên, tôi nhầm lẫn về nơi cú pháp này đến từ đâu hoặc tại sao nó hoạt động. CTRL + F nhập YAML spec cho << cho biết rằng nó không xuất hiện ở bất kỳ đâu trong thông số kỹ thuật. Tuy nhiên, nó được hỗ trợ bởi, ít nhất, PyYAMLhttp://yaml-online-parser.appspot.com/.

Cú pháp này là gì và cách nó dường như không xuất hiện trong thông số kỹ thuật?

+1

Nó không phải là toán tử '<<:', nó là một khóa cụ thể '<<' trong cặp giá trị khóa. ':' Là dấu tách khóa-giá trị bình thường. – Anthon

Trả lời

6

Nó được gọi là Loại ngôn ngữ chính độc lập hợp nhất cho phiên bản YAML 1.1. và được chỉ định here

Đây là điều mà trình phân tích cú pháp có thể hỗ trợ tùy chọn, về cơ bản là giải thích cặp khóa-giá trị với khóa đặc biệt <<, trong đó giá trị là ánh xạ (có thể được chỉ báo qua bí danh) hoặc danh sách ánh xạ và được diễn giải theo cách đặc biệt.

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