9

Codecademy の指示は次のとおりです。

後でハッシュキーとして使用したい文字列の配列がありますが、それらはシンボルである必要があります。新しい配列シンボルを作成します。.each文字列配列を反復処理し、各文字列をシンボルに変換して、それらのシンボルをシンボルに追加するために使用します。

これは私が書いたコードです(strings配列が提供されました):

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"]
symbols = []
strings.each { |x| x.to_sym }
symbols.push(strings)

おそらく複数の間違いを犯していることはわかっていますが、ここまでほとんど問題なく ruby​​ トラックを通過できたので、なぜこれが私を困惑させているのかわかりません。第一に、文字列をシンボルに変換していません。第二に、それらをシンボル配列にプッシュしていません。

4

5 に答える 5

16

to_symだけでは何も役に立ちませんでした。文字列を変換していましたが、どこにも保存したり、後で使用したりしませんでした。シンボル配列に追加し続けたい。

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"]
symbols = []
strings.each { |s| symbols.push s.to_sym }

または、よりエレガントに、設定symbols = []をスキップして を使用mapして 1 行で作成することもできます。

symbols = strings.map { |s| s.to_sym }

map配列内の各項目を調べて、マップ関数に従って別のものに変換します。関数を適用するだけの単純なマップの場合は、さらに一歩進めることができます。

symbols = strings.map &:to_sym

(それは と同じsymbols = strings.map(&:to_sym)です。より味わい深い方を使用してください。)

于 2013-04-12T12:27:42.277 に答える
1

eachを繰り返しstrings、すべての要素にブロックを適用します。ただし、何も返されません。symbolsブロック自体の配列に追加する必要があります。

strings.each { |x| symbols.push(x.to_sym) }

ただし、1 行でシンボル配列を生成することもできます。

symbols = strings.map { |x| x.to_sym }
于 2013-04-12T12:27:35.983 に答える
1

コードを次のように変更できます。

strings.each do |x|
x = x.to_sym
symbols.push(x)
于 2014-03-13T09:53:57.513 に答える
0

文字列の各値を反復し、それをシンボルに変換してから値を返すときに、新しい値を保存する必要があります

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"]
symbols = []
strings.each do |s|
  s = s.to_sym
  symbols.push(s)
end
于 2016-06-22T08:02:29.303 に答える
0
strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"]

symbols = Array.new
strings.each do |x|
    symbols.push(x.to_sym)
end

これは正確な答えでなければなりません..

于 2014-01-20T07:02:33.237 に答える