三维数组

时间:2015-01-18 21:46:39

标签: ruby arrays

我有这段代码:

require 'chunky_png'

time1 = Time.now
image = ChunkyPNG::Image::from_file("logo10.png")
height = image.height
width = image.width
nouvelle = Array.new

height.times do |x|
  nouvelle[x] = Array.new
  width.times do |y|
    nouvelle[x][y] = Array.new
    nouvelle[x][y][0] = ChunkyPNG::Color.b(image[x,y])
    nouvelle[x][y][1] = ChunkyPNG::Color.g(image[x,y])
    nouvelle[x][y][2] = ChunkyPNG::Color.r(image[x,y])
  end
end 

time2 = Time.now
puts "temps = " + ((time2 - time1)*1000).to_s + " ms"

我有这个问题:

syntax error, unexpected tIDENTIFIER, expecting keyword_end
        nouvelle[x][y] = Array.new
                        ^
syntax error, unexpected tIDENTIFIER, expecting keyword_end
        nouvelle[x][y][2] = ChunkyPNG::Color.r(image[x,y])
                           ^

我看不出问题出在哪里。你能救我吗?

2 个答案:

答案 0 :(得分:0)

http://repl.it/8Tl

事实上,如果你能看到这个链接,那么我的代码就是红点。

nouvelle [x] [y] = - >在[和]之间存在一个未知的字符

答案 1 :(得分:0)

以下是你如何解决这类问题:

# encoding: UTF-8

str = '] = A'
str.chars.map(&:ord).join(', ')
# => "93, 160, 61, 32, 65"

注意第二个值是160,它位于第二个字符处。 160十进制是0xA0十六进制或Unicode中的NBSP。

然后我输入了字符串:

str = '] = A'
str.chars.map(&:ord).join(', ')
# => "93, 32, 61, 32, 65"

再次注意,第二个字符现在是32,即AKA 0x20,AKA“SPACE”。