使用pp()实现Ruby输出二维数组

开发 开发工具
Ruby输出二维数组可以通过pp()函数来实现。虽然方式比较简单,但是缺陷还是有的,就是二维数组只能显示在一行中。

Ruby语言中对于数组的处理方式较之其他编程语言来说还是比较简便的。那么,我们就先来一起了解一下Ruby输出二维数组的相关技巧。#t#

用Ruby的pp()函数可以以很漂亮的方式输出数组。不过美中不足的是会将二维数组显示在一行上。我们希望它能够以每行一个子数组的方式进行输出。

其实PP是一个挺不错的用于输出对象的框架(虽说好像是小日本写的)。要想实现上面Ruby输出二维数组的效果,只需要在Array#pretty_print()函数的默认实现中添加一行代码就可以实现!代码如下(文件名“pp_extension.rb”):

  1. # Outputs two-dimension 
    array like matrix  
  2. class Array  
  3. def pretty_print(q)  
  4. q.group(1, '[', ']') {  
  5. q.seplist(self) {|v|  
  6. q.current_group.break if v.is
    _a?(Array) && !q.current_
    group.first? # added by me  
  7. 7q.pp v  
  8. }  
  9. }  
  10. end  
  11. end 

您一定以为我很了解PrettyPrint和PP的实现原理吧?其实不是的。我只是粗略的看了一下这两个类的源代码(它们在C:\ruby\lib\ruby\1.8\),然后猜测它的实现方法是用group()函数对对象中的信息进行分组,然后递归调用pp()函数输出每组信息。

之后我Copy了Array#pretty_print()函数的默认实现,尝试着稍作修改而已。所以我也没有办法为您详细剖析PP的Ruby输出二维数组实现方法了,希望这篇文章能够给您带来一些灵感,起到抛砖引玉的作用。也许以后有时间我会仔细的看一下它们的源代码的。

PS:用修改后的pp()输出三维数组也可以的,您可以试一下。

责任编辑:曹凯 来源: 博客园
相关推荐

2009-11-16 17:41:41

PHP二维数组

2009-11-17 16:09:04

PHP二维数组排序

2021-01-15 08:19:26

二维数组LeetCode

2009-11-16 17:07:58

PHP二维数组

2010-07-19 13:06:13

Perl二维数组

2009-09-16 17:29:10

Linq查询二维数组

2010-07-13 15:15:49

Perl二维数组

2009-08-07 10:12:09

C#二维数组

2009-11-17 09:46:31

PHP二维数组赋值

2021-02-20 20:27:44

数组前缀性能

2010-01-14 17:58:41

C++语言

2022-01-19 11:34:01

语言malloc()二维数组

2010-03-05 14:05:02

Python二维数组

2009-11-25 11:14:12

PHP二维数组赋值

2009-09-02 10:23:52

C#动态二维数组

2009-09-18 11:33:37

C#二维数组初始化

2010-07-19 13:17:12

Perl二维数组

2009-08-20 11:38:15

C#二维数组

2009-11-24 17:25:00

PHP二维数组排序

2010-02-04 16:26:54

C++二维数组new
点赞
收藏

51CTO技术栈公众号