2014-05-19 128 views
0

我有这个散列:我怎样才能把一个长长的红宝石哈希分成多行?

arr={ [0,1]=>[0,0,1,1], [0,2]=>[0,1,0,1], [0,3]=>[0,1,1,0], [1,2]=>[1,0,0,1], [1,3] =>[1,0,1,0], [2,3] => [1,1,0,0] } 

,我希望把它分解为两行,因为它是很长,在121个字符。我不是对线路长度的标签,但我的指导线为80,这个时间比我更喜欢

所以我试图

arr={ [0,1] => [0,0,1,1], [0,2] => [0,1,0,1], [0,3] => [0,1,1,0] } 
    arr.merge({[1,2] => [1,0,0,1], [1,3] => [1,0,1,0], [2,3] => [1,1,0,0]}) 

,但我的测试失败,并有错误,如

undefined method `[]' for nil:NilClass 

我该如何更好地解决这个问题?一个选项是续行\,但看起来并不特别整齐。

arr={ [0,1]=>[0,0,1,1], [0,2]=>[0,1,0,1], [0,3]=>[0,1,1,0], \ 
[1,2]=>[1,0,0,1], [1,3] =>[1,0,1,0], [2,3] => [1,1,0,0] } 

但我想我能做到

arr={ [0,1]=>[0,0,1,1], [0,2]=>[0,1,0,1], [0,3]=>[0,1,1,0], \ 
     [1,2]=>[1,0,0,1], [1,3] =>[1,0,1,0], [2,3] => [1,1,0,0] } 

,但看起来像W¯¯空白维护气味缩进。

有没有更好的选择?

+1

...您不需要在这里继续行,只需用逗号结束行。 –

回答

4
arr = { 
    [0,1] => [0,0,1,1], [0,2] => [0,1,0,1], [0,3] => [0,1,1,0], 
    [1,2] => [1,0,0,1], [1,3] => [1,0,1,0], [2,3] => [1,1,0,0] 
} 
1

我宁愿把它写这样的:

arr = { 
    [0,1] => [0,0,1,1], 
    [0,2] => [0,1,0,1], 
    [0,3] => [0,1,1,0], 
    [1,2] => [1,0,0,1], 
    [1,3] => [1,0,1,0], 
    [2,3] => [1,1,0,0] 
} 

这是更可读。另外我假设你知道使用数组作为键的后果?

2

您尝试merge失败,因为#merge不会更改您调用的对象,但它会返回一个新的合并对象。它的工作,你需要使用#merge!

arr={ [0,1] => [0,0,1,1], [0,2] => [0,1,0,1], [0,3] => [0,1,1,0] } 
arr.merge!([1,2] => [1,0,0,1], [1,3] => [1,0,1,0], [2,3] => [1,1,0,0]) 

这是很矫枉过正,但是,作为多衬哈希是很容易的,因为在其他的答案说。