0

steam-condenser gem を使用して、特定のユーザー (自分自身) のゲームのリストを取得しようとしています。これまでのところ、次のものがあります。

require 'steam-condenser'

id = SteamId.new 'tamachan87'
games_owned = id.games

games_ownedキーと配列を含むハッシュになりました。

IRBを呼び出すとgames_owned.values、ID 番号から名前、ロゴ ハッシュまで、これらのゲームのすべての情報を含む結果が得られます。

ただし、次を使用すると:

games_owned.each do |key, array|
    puts "==== #{key} ===="
    puts array
end

次のような配列の最初の値だけを取得します。

==== 200260 ====
#<SteamGame:0x00000100beb0a8>

各値/配列のものには@name変数があり、それは私が引き出したい唯一のものです。

これらのハッシュをよりよく理解し@name、それらから特定のデータ ( ) を取得する方法を教えてください。

前もって感謝します。

4

3 に答える 3

1

"puts" を使用して Steamgame オブジェクトをきれいに印刷したい場合は、Steamgame クラスで "to_s" を上書きする必要があります。

異なる結果が得られる理由は、 puts が to_s メソッドを使用してその引数を出力するためです(これは、特定のIDを持つ場合はsteamgameオブジェクト自体です)。「puts」の代わりに「p」または「puts array.inspect」を使用すると、オブジェクトがデバッグされ、irb のような結果が表示されます。

Steamgame クラスに @name のような属性がある場合、games_owned.values[i].name または puts array.name と言うだけで取得できるはずです。あなたはそれを試しましたか?

于 2014-09-26T17:06:11.937 に答える
1

分かりにくいクラス名とメモリ値を取得する理由は、クラスがメソッドSteamGameを定義していないためです。inspectただし、ゲームの名前を出力することだけに関心がある場合は、puts key.name

于 2014-09-26T16:39:05.663 に答える