Ruby 为什么我不能在数组中放入我需要的所有字符?

Ruby 为什么我不能在数组中放入我需要的所有字符?,ruby,Ruby,我做了一个程序,我需要把所有可能的字符放在一个数组中。 在这里,我创建变量只是为了读取名称 print "write your name: " name1 = gets.chomp 然后我尝试将所有字符放入数组中,例如,如果您的名字是John,那么数组将是:J,Jo,Joh,John arrayNames = [] number = name1.length number.times {|i| arrayNames[i] = name1.slice(0,i) } arrayNames

我做了一个程序,我需要把所有可能的字符放在一个数组中。 在这里,我创建变量只是为了读取名称

print "write your name: "
name1 = gets.chomp
然后我尝试将所有字符放入数组中,例如,如果您的名字是John,那么数组将是:J,Jo,Joh,John

arrayNames = []
number = name1.length
number.times {|i| 
    arrayNames[i] = name1.slice(0,i)
}
arrayNames << name1
当然,我制作了file1,第二个数组的代码与
arrayNames
的代码完全相同,但不起作用。它甚至没有显示错误。我会把所有的代码放在下面

class Data
    def initialize
    end
    def dataIn
        print "write your name: "
        $name = gets.chomp
        print "write your surname: "
        $surname = gets.chomp
    end
    def dataName
        $passwordName = []
        numb =  $name.length
        numb.times {|i|
            $passwordName[i] = $name.slice(0,i)
        $passwordName << $name
    end
    def dataSurn
        $passwordSur = []
        numb = $surname.length
        numb.times {|i|
            $passwordSur[i] = $surname.slice(0,i)
        }
        $passwordSur << $surname
    end 
    def alg1
        numb = $name.length + 1
        numb2 = $surname.length + 1
        numb.times {|i|
            numb2.times {|j|
                perm = [$passwordName[i], $passwordSur[j]].permutation.map {|k| 
                k.join} 
                p perm
                $archivos.puts perm                 
            }
        }
    end
end

我不确定您到底想做什么,但Ruby内置的数组方法将使您的生活更加轻松:

>> name1 = 'John'
=> "John"
>> names = (0...name1.length).map { |i| name1[0..i] }
=> ["J", "Jo", "Joh", "John"]
>> other = ['dog', 'wolf', 'sheep']
=> ["dog", "wolf", "sheep"]
>> result = names.product(other)
=> [["J", "dog"],
 ["J", "wolf"],
 ["J", "sheep"],
 ["Jo", "dog"],
 ["Jo", "wolf"],
 ["Jo", "sheep"],
 ["Joh", "dog"],
 ["Joh", "wolf"],
 ["Joh", "sheep"],
 ["John", "dog"],
 ["John", "wolf"],
 ["John", "sheep"]]

您是否在ruby shell中逐行运行命令?在这个过程中,您认为arrayNames(或numb)的价值是什么?另外,slice(0,i)的值的术语是'prefix',是的,我做了。切片(0,i)在我单独放置时起作用,数组名称显示了我之前所说的内容,最后一部分的示例是不起作用的部分,第三部分您可以在块内使用不同的j和k值运行代码以查看发生了什么。鉴于“theSecondArray”未定义,这可能是问题的一部分。您好,您能添加更多代码吗?不清楚什么是
theSecondArray
另一个变量
。您确定它应该是
arrayNumber吗
data = Data.new()
datos.dataIn
$archivos = File.new("passwords",'w+')
File.open("passwords")
data.datosName
data.datosSurn
data.alg1
gets()
>> name1 = 'John'
=> "John"
>> names = (0...name1.length).map { |i| name1[0..i] }
=> ["J", "Jo", "Joh", "John"]
>> other = ['dog', 'wolf', 'sheep']
=> ["dog", "wolf", "sheep"]
>> result = names.product(other)
=> [["J", "dog"],
 ["J", "wolf"],
 ["J", "sheep"],
 ["Jo", "dog"],
 ["Jo", "wolf"],
 ["Jo", "sheep"],
 ["Joh", "dog"],
 ["Joh", "wolf"],
 ["Joh", "sheep"],
 ["John", "dog"],
 ["John", "wolf"],
 ["John", "sheep"]]