-1

我想创建像 a1, a2.. 这样的变量名

 n.times { |n|
  puts "enter number of rows and columns for #{n} array"
  rows = gets.to_i
  cols = gets.to_i
  a+"#{n}" = Array.new(rows,'w') {Array.new(cols,'w')}
 }

错误:

语法错误,意外 '=',期待 '}' "a#{n}" = Array.new(rows,'w') {Array.new(cols,'w')}

4

1 回答 1

2

虽然通常可以在 Ruby 中创建动态命名的局部变量,但这通常不是必需的,并且通常是软件设计不佳的标志。

相反,您应该使用正常的数据限制来保存您的数据。在您的情况下,您可以使用哈希,例如

arrays = {}
n.times do |n|
  puts "enter number of rows and columns for #{n} array"
  rows = gets.to_i
  cols = gets.to_i
  arrays["a#{n}"] = Array.new(rows,'w') {Array.new(cols,'w')}
end

然后,您可以访问定义的数组 asarrays["a1"]或嵌套数组中的特定单元格 as arrays["a1"][1][3]

于 2018-07-10T18:19:07.607 回答