18

Perl では、次のようなことができます。

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

YAML で次のようなことができますか。

Home: /home
Alice: $Home/alice

では、「アリス」は実質的/home/aliceに最終的にですか?

4

5 に答える 5

11

残念ながら、あなたは運が悪いです。必要なことを行うに$homeは、ビュー ファイル (または任意の場所) から渡して、yaml エントリで補間する必要があります。これは次のようになります。

Alice: ! '%{home}/Alice' 

あなたの質問に対する詳細な回答については、この StackOverflow Q&Aを参照してください。

于 2013-04-03T05:53:32.710 に答える
11

ERB テンプレートを使用する必要があります。

次のように書くことができます。

Alice: <%=home%>/alice

home使用する場合、 YAML としてパースする前に ERB で値をパースする必要があります。ホームがローカル変数の場合、#result メソッドの引数としてローカル バインディングを渡す必要があります。これを渡さない場合、TOP LEVEL バインディングがデフォルトとして使用されます。

このような:

require 'erb'

home = 'home'
YAML.load(ERB.new(yaml_content).result(binding))
于 2014-12-09T10:48:45.347 に答える
2

私は最終的に使用しましYAML::AppConfigたが、それは YAML ソリューションではなく、Perl 固有のソリューションです。$var補間された s をYAML に含めることができます。

于 2013-04-04T04:30:23.210 に答える