gpt4 book ai didi

ruby - 将 java 二维数组转换为 ruby

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:10 26 4
gpt4 key购买 nike

我如何将此 java 代码写入 ruby​​:

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

我认为这会很简单:

score=[]
score[rcount][ccount]=num

但我不断收到“undefined method `[]=' for nil:NilClass (NoMethodError)”

最佳答案

抱歉,我不懂 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 上留下评论.

关于ruby - 将 java 二维数组转换为 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33900836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com