将java 2d数组转换为ruby

时间:2015-11-24 18:09:52

标签: ruby

我如何将这个java代码写入ruby:

index()

我认为这很简单:

String[] [] Score = new String [row] [col];
Score[rCount][cCount] = num;

但是我继续为nil获取“undefined method` [] =':NilClass(NoMethodError)”

2 个答案:

答案 0 :(得分:3)

抱歉,我不懂java,但看一下类方法Array#newArray::[],以及实例方法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] = []