0

好的,所以我试图尽可能地压缩这个系统,这就是我把它压缩到

def process(data)
    data = data.split("\r\n\x00").map{|x| x.split(":")}
    data.each do |a|
        event,data = a[0],a[1..-1]
        print event
    end

end

当你把一个字节放进去时它会做什么(在我的情况下来自一个套接字)它会搜索类似“event:eventdata\r\n\x00”之类的东西,然后它会分离并摆脱"终结者"("\r\n\x00") 并留下事件和数据列表

有没有可能把它压得更紧?提前致谢。

4

3 回答 3

2

如果您害怕用完 LOC,那么请使用此单线。

def process(data)
  data.split("\r\n\x00").map{|x| x.split(":")}.each {|a| event,data = a[0],a[1..-1]; print event}
end

希望您会看到最简洁的代码并不总是最好的。

我认为“整理”一段代码没有实际意义。仅供娱乐,也许吧​​。生产代码应该是可读的,这是最重要的。

于 2013-09-20T23:49:09.060 回答
2

您永远不会对dataafter做任何事情data.each do |a|,因此循环中的分配是无关紧要的。你可以简单地做:

 data.split("\r\n\x00").map {|x| x.split(':')[0]}.each {|x| print x}
于 2013-09-20T23:53:38.527 回答
2
def process(data)
  data.split("\r\n\x00").each{|x| print x[/[^:]*/]}
end

或与split

def process(data)
  data.split("\r\n\x00").map{|x| x.split(":", 2)}.each{|event, _| print event}
end
于 2013-09-21T03:25:51.300 回答