我提示用戶使用get給我peg1,peg2或peg3,每個引用提示前已經創建的數組。但是,來自用戶的輸入是一個字符串,即「peg1」,「peg2」或「peg3」。我如何讓用戶的輸入實際參考/附加到已經創建的3個數組?Ruby「gets」提示用戶輸入。如何獲得輸入(字符串)以引用現有對象?
回答
如果您將所有可能的數組分配給由數組名稱鍵入的哈希,您可以直接詢問用戶名稱,然後從哈希中選擇數組。使用這種技術,您不需要將您的值硬編碼爲長的case
聲明或(更糟糕的)eval
任何東西。
def ask_for_peg(pegs)
peg = nil
while peg.nil?
print("Which peg do you want? ")
id = gets.strip
peg = pegs[id]
end
peg
end
available_pegs = {
"peg1" => array_for_peg1,
"peg2" => array_for_peg2,
"peg3" => array_for_peg3
}
selected_peg = ask_for_peg(available_pegs)
# results in one of the arrays assigned in the available_pegs array above
該數組的名稱是爲了您的利益,但不能在實際的程序中使用。所以你不能檢查輸入是否等於變量的名字。但是,您可以使用if語句if input = peg1
輕鬆檢查輸入是否等於「peg1」,「peg2」或「peg3」,並在每種情況下返回適當的數組。
很難理解你在問什麼,但你的意思採取一些猜測,我覺得這樣的事情說明你如何做你想要什麼:
$peg1 = [:peg, :one]
$peg2 = [:peg, :two]
$peg3 = [:peg, :three]
def ask_which_peg
print "Please choose peg1, peg2, or peg3: "
case gets.chomp
when "peg1"
$peg1
when "peg2"
$peg2
when "peg3"
$peg3
else
nil
end
end
peg = nil
until(peg)
peg = ask_which_peg()
end
print peg, "\n"
這也許做什麼你在問。
peg1 = ['yellow']
peg2 = ['blue']
peg3 = ['green']
input = gets.chomp
input =~ /peg\d/ and
puts eval("#{input}")
這是充分編輯(從以前的答案),以避免評估用戶輸入爲Ruby命令。會在peg4或其他不存在的掛鉤上產生錯誤。
流量控制and
有助於檢查輸入。
'「#{input}」'是多餘的。你已經有一個字符串。此外,您絕不應建議人們盲目評估用戶輸入(或自己動手),因爲它會繞過您可能具有的任何安全措施。告訴人們即使是玩遊戲的例子也會使用'eval',這導致他們在後期的生產中使用它,導致代碼沒有任何安全性。 – 2013-05-13 07:07:57
我知道#{}會出現。 :)我不會說它建議人們盲目評估用戶輸入時指出「我會強烈警告這一點」。但教育有其地位。知道它是可用的。這與告訴他們使用它相反。但它在那裏。 – vgoff 2013-05-13 07:32:13
被評估錯誤咬得相當糟糕,我個人認爲除非沒有其他解決手頭問題的機會,否則不應該提及基於字符串的評估。如果您無法完全理解eval的含義(並且大多數人對ruby不熟悉),那麼最好避免使用它。另外,人們不會閱讀。和[StackSort](http://gkoberger.github.io/stacksort/)都不是:) – 2013-05-13 08:14:49
- 1. 提示用戶輸入字符串
- 2. Ruby「gets」不會等待用戶輸入
- 3. 如何重新提示用戶輸入有效的字符串?
- 4. 如何從用戶獲取字符串輸入並輸入字符串輸入的總字符值?
- 5. 我如何測試ruby中gets方法的用戶輸入?
- 6. 使用用戶輸入中的字符串分配user_str,並提示:'輸入字符串:\ n'user_str = int(輸入('輸入字符串:\ n')print(user_str)
- 7. 如何獲得提示用戶輸入(套/ P)下FOR/F環
- 8. 如何插入用戶輸入的字符串來指引引用?
- 9. 如何提示用戶輸入字符或數字?
- 10. 如何獲得用戶輸入爲只有零的字符串?在JAVA
- 11. 從sshj輸入流讀取時,如何獲得'輸入提示'?
- 12. 讓用戶輸入字符串並使用該字符串創建對象
- 13. 提示用戶輸入
- 14. Node.Js提示用戶輸入
- 15. 如何從用戶輸入中提取字符串?
- 16. 表單輸入構建對象調用字符串提交
- 17. 用字符串迴應用戶輸入
- 18. 如何獲得NASM的用戶輸入?
- 19. 如何提示用戶輸入值
- 20. 你如何提示用戶輸入java
- 21. 如何獲得使用jQuery的輸入值的HTML字符串?
- 22. 如何從輸入對話框中引用字符串?
- 23. 如何獲得用戶輸入的輸入
- 24. 如何在用戶輸入中獲得一些價值輸入
- 25. 如何獲得字符串用戶輸入並使用Java ArrayList增加值+1?
- 26. 如何在提示中使用現有變量提示輸入
- 27. 多次提示用戶輸入數字
- 28. 基本Android:如何顯示用戶輸入字符串?
- 29. Perl重新提示用戶輸入,直到獲得準確的預期輸入
- 30. 用戶輸入以創建對象
顯示您的代碼,您使用。並提供更多信息,如樣本輸入和預期輸出等。 – 2013-05-13 05:27:36