[英]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.