我如何将这个java代码写入ruby:
index()
我认为这很简单:
String[] [] Score = new String [row] [col];
Score[rCount][cCount] = num;
但是我继续为nil获取“undefined method` [] =':NilClass(NoMethodError)”
答案 0 :(得分:3)
抱歉,我不懂java,但看一下类方法Array#new和Array::[],以及实例方法Array#[]=和Array#[]。以下是一些应该回答您的问题的例子(以及可能引发的其他问题,希望如此):
Array.new #=> []
[] #=> [] # shorthand for above
a = Array.new(5) { [] } #=> [[], [], [], [], []]
a[0][0] = 2
a #=> [[2], [], [], [], []]
a[3][2] = 4
a #=> [[2], [], [], [nil, nil, 4], []]
a[1] << 1
a #=> [[2], [1], [], [nil, nil, 4], []]
a[1] << 2
a #=> [[2], [1, 2], [], [nil, nil, 4], []]
a[1] << 3 << 4
a #=> [[2], [1, 2, 3, 4], [], [nil, nil, 4], []]
a[2] << [4,5]
a #=> [[2], [1, 2, 3, 4], [[4, 5]], [nil, nil, 4], []]
a[4].concat([4,5])
a #=> [[2], [1, 2, 3, 4], [[4, 5]], [nil, nil, 4], [4, 5]]
a = Array.new(3) { Array.new(3) }
#=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
a[1][2] = 4
a #=> [[nil, nil, nil], [nil, nil, 4], [nil, nil, nil]]
我们也可以将默认值写为第二个参数:
a = Array.new(3,[]) #=> [[], [], []]
但这可能会有问题:
a[0][0] = 'cat'
a #=> [["cat"], ["cat"], ["cat"]]
原样:
a = Array.new(3,Array.new(2)) #=> [[], [], []]
#=> [[nil, nil], [nil, nil], [nil, nil]]
a[0][0] = 'cat'
a #=> [["cat", nil], ["cat", nil], ["cat", nil]]
因为a
的每个元素都是相同的数组。
请注意,Ruby为编写某些通常称为“syntactic sugar”的方法提供了便利。例如,如果您编写a = [1,2,3]
,Ruby会将其解释为a = Array.[](1,2,3)
(您可以这样写),类方法为Array::[]。同样,如果a
等于[1,2,3]
,a[1] = 'cat'
将被解码为a.[]=(1, 'cat')
而a[1] #=> 'cat'
则为a.[](1)
。同样,h = {}
会转换为h = Hash.new
,依此类推。
请注意,Ruby没有“多维数组”的概念。有关详情,您可能希望在this question上看到评论。
答案 1 :(得分:1)
首先,红宝石程序员使用蛇案。大写字母用于类名。
其次,你的问题只是因为
而发生var target = document.getElementById("deviceFilesDropZone");
var deviceFiles = new Array();
var totalDeviceFileSize = 0;
var totalDeviceBytesUploaded = 0;
var deviceUploadStartTime = Math.round(new Date().getTime()/1000);
var currentTempStatusIndex = 0;
target.enctype = "multipart/form-data";
如果您想要访问第二维元素,则需要将行初始化为数组:
score[rcount] == nil # true
现在您可以设置第二个维度元素
score[rcount] = []