12

ルビーでは行くことができます

a = { }
a['a'] = 82
a['b'] = 'foo'
puts a['a'] # 82

JavaScriptのようにドット表記が使えればいいのですが。

puts a.a # 82

Rubyでオブジェクトリテラルを作成し、ドット表記でアクセスする方法はありますか?

4

3 に答える 3

17

を作成できますStruct

A = Struct.new(:a, :b)
a = A.new(82, 'foo')
puts a.a
#=> 82

編集:

あなたもできる

a = { }
a['a'] = 82
a['b'] = 'foo'
Struct.new(*a.keys).new(*a.values)
于 2012-09-28T01:25:39.400 に答える
5

必要な構造は、OpenStructJSオブジェクトリテラルと同じように機能するものです。method_missingセッターメソッドを使用して新しい変数を追加できるメソッドを上書きしました。

于 2012-09-28T05:10:51.597 に答える
2

Ruby にはオブジェクト リテラルがありません。

Ruby はクラスベースのオブジェクト指向言語です。すべてのオブジェクトはクラスのインスタンスであり、クラスはそれ自体のインスタンスを作成する責任があります。書き留めるだけでオブジェクトを作成するのではなく、クラスにメッセージを送信してそれ自体のインスタンスを作成するように依頼する必要があります (通常は と呼ばれますnewが、これは単なる慣例です)。

于 2012-09-28T01:16:24.827 に答える