0

私はテスト優先の Ruby の問題に取り組んでおり、問題 11 の辞書に取り組んでいます。仕様ファイルの最終テストでは、ハッシュのすべてのキーと値 (単語とその定義) を特定の形式で出力するように要求します。

どうすればいいですか?このタイプの出力に固有の名前はありますか? 出力をこのように表示する方法や、すべての余分な記号の意味がわかりません。

it 'can produce printable output like so: [keyword] "definition"' do
  @d.add('zebra' => 'African land animal with stripes')
  @d.add('fish' => 'aquatic animal')
  @d.add('apple' => 'fruit')
  @d.printable.should == %Q{[apple] "fruit"\n[fish] "aquatic animal"\n[zebra] "African land animal with stripes"}
end

メソッドを実行してハッシュを正常に返すと、次のように表示されます。

expected: "[apple] \"fruit\"\n[fish] \"aquatic animal\"\n[zebra] \"African land animal with stripes\""

太平洋時間午後 6 時 38 分更新

私はまだ自分の質問に答えることができないので、ここに私の解決策があります:

初挑戦:

def printable
    print_string = ""
    @hash1.sort.each do |k,v|
        print_string = print_string + "[" + k + "]" + " " + "#{v.to_s}" + "\n"
    end
    print_string.chomp
end

ほとんど正しい答えが返されましたが、単語の定義を引用符で囲む方法がわかりませんでした。

=> "[りんご] 果物\n[魚] 水生動物\n[シマウマ] 縞模様のアフリカの陸生動物"

spec doc の %Q{ } ラッパーを使用してみましたが、引用符の問題は解決しました。次に、以下に示すように、変数などの表記を作り直しました。

これが私が最終的に思いついた答えです:

def printable
  printable_string = ""
  @hash1.sort.each do |k,v|
    printable_string = printable_string + %Q{[#{k}] "#{v}"\n}
  end
  return printable_string.chomp
end

正しい答えを返します。

=> "[りんご] \"果物\"\n[魚] \"水生動物\"\n[シマウマ] \"アフリカの縞模様の陸上動物\""

4

2 に答える 2

1

ハッシュを次のように反復処理できます

d.each do |key,value|
    puts key
    puts value
end
于 2013-11-13T00:16:53.807 に答える