1
我只是做了下面的代码。我在语法和模式中看到很多重复(比如一次又一次使用临时变量r,并且在不为零时追加字符串)。我怎样才能让这更干?我在C背景,只是想学习Ruby的方式来抽象和简化,以获得优雅的代码...如何让这个红宝石代码更干DRY
# Traverse a matrix spirally
def subm(m)
result=[]
if m.length>1
m[1..-2].each {|a| result << a[1..-2]}
end
result
end
def trav_sp(m)
result=[]
if not m.empty?
result += m[0] if m[0]
r=[]
m[1..-1].each {|a| r << a[-1]} if m[1..-1]
result += r
r=[]
if m[-1]
m[-1].each_with_index{|a,i| (r<< m[-1][-2-i] if m[-1][-2-i])}
result += r
end
r=[]
m.each_with_index {|a,i| (r<< m[0][-2-i] if m[0][-2-i])}
result += r
return result = result + trav_sp(subm(m))
else
return result
end
end