2017-01-28 5 views
1

{TOKEN}と{ACCOUNT_ID}は次のRubyの意味は何ですか?Rubyではキーがないハッシュは何ですか?

my_function({ 
    :amount => 2000, 
    :currency => "usd", 
    :source => {TOKEN}, 
    :destination => {ACCOUNT_ID} 
}) 

see here)私は、Ruby 2.3.1持っているとエラーにsyntax error, unexpected '}', expecting => (SyntaxError)

+7

Rubyハッシュ値はプリミティブ型でなければなりません。 '{TOKEN}'と '{ACCOUNT_ID}'はあなた自身で編集して置き換えるプレースホルダーのようです。 – bejado

+0

@bejado:Rubyで言及されたプリミティブ型を初めて見たのは初めてのことです。どういう意味? –

+1

@EricDuminil:Rubyにプリミティブ型はありません。また、ハッシュ値に制限はありません。 *任意の*オブジェクトはハッシュ値として使用できます。技術的には、ハッシュキーは 'eql? 'と' hash'に応答する必要があるため、ハッシュ*キー*には制限があります。しかし、これらのメソッドはどちらも 'Object'にデフォルトの実装を持っています(ほとんどすべてのオブジェクトが継承します)。ただし、' hash'や 'eql? 'をオーバーライドしないと、すべてのオブジェクトもハッシュキーとして使用できます。セマンティクスは驚くかもしれません。 –

答えて

5

を取得していますハッシュが空またはキーを使用してのいずれかとして定義する必要があり、値のペア。私はあなたがチュートリアルのいくつかの並べ替えに従っている場合は、いくつかの定数でこれらの値を埋める必要が推測しています。

通常、CAPSの変数は定数ですが、キャップでメソッドを定義することは可能です。それでも、TOKEN()のように中かっこで明示的に呼び出す必要があり、何らかのハッシュを初期化するために中括弧の中に入れられるものは考えられません。

2

おそらく、このような構造で終わる必要があります。

my_function({ 
    :amount => 2000, 
    :currency => "usd", 
    :source => "THE TOKEN", 
    :destination => "THE ACCOUNT ID" 
}) 

または

my_function({ 
    :amount => 2000, 
    :currency => "usd", 
    :source => "ckjnsdncc98n9dnx93d372n", 
    :destination => 123456 
}) 

それは文字列または数値のいずれかのプレースホルダとして使用されているように{X}構文が見えます(ほとんどの可能性のある文字列)

関連する問題