2013-04-03 23 views
6

Trong Perl tôi có thể làm một cái gì đó như sau:Chuỗi suy trong YAML

my $home = "/home"; 
my $alice = "$home/alice"; 

Tôi có thể làm điều gì đó như sau trong YAML:

Home: /home 
Alice: $Home/alice 

Vì vậy, "Alice" là một cách hiệu quả /home/alice trong kết thúc?

+1

** Xem thêm: ** * https://stackoverflow.com/questions/15777987/ * https://stackoverflow.com/questions/13055753/ * https : //stackoverflow.com/questions/41620674/ * https://stackoverflow.com/questions/4150782/ – dreftymac

+0

** Xem thêm: ** https://stackoverflow.com/a/41620747/42223 – dreftymac

Trả lời

4

Thật không may, bạn đã hết may mắn. Để làm những gì bạn muốn, bạn sẽ cần phải vượt qua trong $home từ một tập tin view (hoặc bất cứ nơi nào) và suy nó trong mục yaml của bạn, mà có thể có thể giống như thế:

Alice: ! '%{home}/Alice' 

Xem this StackOverflow Q&A cho câu trả lời chi tiết cho khá chính xác câu hỏi của bạn.

1

Tôi đã sử dụng YAML::AppConfig nhưng thừa nhận rằng đó không phải là giải pháp YAML mà là giải pháp cụ thể của Perl. Nó cho phép YAML bao gồm $var s được nội suy.

+1

+1 cho kiến thức mới, thú vị. Tôi sẽ xem xét sử dụng thư viện này nếu tôi làm một dự án Perl. –

6

Bạn nên sử dụng mẫu ERB.

bạn có thể viết như sau:

Alice: <%=home%>/alice 

Khi sử dụng, bạn cần phân tích home giá trị với ERB trước khi phân tích cú pháp như YAML. nếu nhà là biến cục bộ, bạn cần vượt qua ràng buộc cục bộ trong đối số của phương thứC#result. nếu bạn không vượt qua điều này, sẽ sử dụng kết buộc TOP LEVEL như mặc định.

Như thế này:

require 'erb' 

home = 'home' 
YAML.load(ERB.new(yaml_content).result(binding)) 
Các vấn đề liên quan