2017-01-28 46 views
1

在以下Ruby中,{TOKEN}和{ACCOUNT_ID}的含義是什麼?Ruby中沒有鍵的散列意味着什麼?

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

我有紅寶石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

散列需要被定義爲空,或者與鍵,值對(see here)。我猜如果你正在學習某種教程,你需要用一些常量來填充這些值。

通常CAPS中的變量是常量,但可以用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}語法看起來像它作爲字符串或數字的佔位符(最可能的字符串)