簡體   English   中英

將數組的值分配給 ruby 中的變量

[英]assigning values of array into variables in ruby

我試圖將數組的每個值分配給不同的變量。 但我收到“期待結束”的錯誤。

strs = ["flower","flow","flight"]
strs.each_with_index do |x, i|
"b#{i}" = x
end

這里出了什么問題?

你所做的就像在說

"howdy" = 1

你不能這么說。 該表達式嘗試分配給字符串文字。 你不能那樣做。 字符串文字不是左值(等號左側可以是 go 的東西)。

如果你想說“創建一個名為howdy的變量並將這個值賦給它”,你不能這樣做,因為局部變量不能即時創建。 請參閱如何動態創建局部變量? .

然而,你問題的真正核心是你甚至不應該想做你正在做的事情。 您已經有了一個數組,這是一件很棒的事情,它允許您按編號引用每個條目。 您代碼中的"flower"已經是strs[0] ,依此類推。 陣列的全部意義在於它可以讓你做到這一點。 因此不需要帶有數字名稱的單個變量; 該數組具有數字名稱的變量。

我不確定你為什么在已經擁有局部變量的情況下嘗試創建局部變量。 考慮以下內容,我們只需將您建議的b0替換為b[0]

strs = ["flower","flow","flight"]
b = strs
b[0]  #=>  "flower" 

您可以選擇使用類似於您已經嘗試過的方法將數組轉換為 hash 並將b0替換為b[0]

b = {}
strs.each_with_index do |x, i|
  b[i] = x
end

b[0]  #=>  "flower"

甚至是這樣的:

my_variables = {}
strs.each_with_index do |x, i|
  my_variables[:"b#{i}"] = x
end

my_variables[:b0] #=>  "flower"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM