数组是一个列表的项目(如维生素、矿物质,还有巧克力)。

那些在家里记分的人可能有兴趣知道栏杆网站框架对Array进行771次调用。558调用Array.map,1,521个电话Array.empty吗?,更不用说,103次里面访问一个元素数组。

但这些只是数字。如何使用数组在Ruby中??

创建数组

大多数时候,您将处理数据库对象数组。其他时间,您将需要自己创建一个简单的数组。

如果使用过Perl,PHP,Python,或其他脚本语言,Ruby的语法看起来至少有点熟悉。如果你在你的电脑上已经安装了Ruby,您还可以使用“irb”命令行程序,它以交互方式运行代码行。

可以使用以下方括号来创建数组:

#列出一串玩字谜游戏的线索=['vitamins',“矿物”,'chocolates']# Create the same array by splitting on whitespaceclues = %w(vitamins minerals chocolates)# Create the same array in stepsclues = Array.newclues << 'vitamins'clues << 'minerals'clues << 'chocolates'

可以通过数字从数组检索值,从零开始。在这些示例中,我将使用= >显示每一行的结果。

a_clue =线索[0]= > '维生素'another_clue =线索[1]= > '矿物质的

Ruby对于数组的常用访问属性也有一些快捷方式:

a_clue=clues.first=>'vitamins'._clue=clues.last=>'chocol.'clues..=>3

好……基本知识够了。使用数组可以做什么??

each和._with_index

许多语言迫使你与神秘的分号序列处理数组,圆括号,以及占位符。不是红宝石!!

my_vitamins=['b-12',“c”,“核黄素”]我的维生素,每种都含有维生素#{维生素}是美味的!“b-12很好吃!= > c是好吃!= >核黄素是美味的!!

你可能会猜到,这打印出每种维生素的信息。这里有一些事情要记住:

  • 变量“维生素在“门柱”指的是数组中的每一项,因为它经过循环。你可以给这个任意的名字,但要让人难忘。
  • “做“和““结束”标识将为每个项目执行的代码块。块在Ruby中得到了广泛应用。
  • “{维他命}双引号内是如何在字符串内插入变量的。还有其他方法可以做到,但是“# {}”是最简单的。

如果我们想要打印的名字维生素和数组中也做一些它的位置吗??

我的维生素。指数|把”#{索引}为#{维生素}欢呼!“为b-12干杯!为c干杯!为核黄素干杯!!

再一次,名字“维生素和“指数”在垂直酒吧是您选择的名称。然而,“each_with_index”方法使用两个值调用块,因此需要提供两个变量名。在RUBY-DOC.ORG.

如果这是生产代码,我们可以编写一个额外的方法应用适当的英语语法基于干杯(Rails的数量这样的一个方法我们可以使用)。我们也许想使用一个更权威的来源来确定每种维生素应该得到多少欢呼!!

地图

Ruby的能力处理数组并不止于此。map为每个项调用一个块,并基于块的结果返回一个新数组。

名词=['truffle',“吻”,'rabbit']array_of_chocolates = nouns.map do |noun|"巧克力#{名词}”end#._of_chocolates现在具有以下值=>['chocolate truffle',“巧克力吻”,“巧克力兔”]

您可能注意到,我们不需要使用“回报”关键字...Ruby自动返回块中的最后一个值。在这种情况下,块每次迭代的返回值都是新的巧克力字符串。然而,我们可以返回一个数字或任何其他类型的对象。

我的博客我在写一篇文章Rails插件把数据从我薄荷统计安装和显示欢迎页面的列表。我用“地图“把数字加在一起。

#从数据库querystats=Mint.._pages#获取行数组#汇编eachstats_.=stats.map do|stat|的摘要#{stat.._title}被访问#{stat.._count}多次end#stats_report现在是一个具有以下值的数组:=>['Home被访问1200次',“搜索被访问了900次”,……

这个资源标题visit_count方法实际上是数据库中的字段。ActiveRecord查看数据库模式并自动创建这些方法。我使用这些构建字符串为每一行作为一个新的数组返回。

注入

注入方法是我最喜欢的一个,尽管它有点复杂(Ruby借来的Smalltalk语言)。让我们看一个例子,然后我将解释它是如何工作的:

#从数据库querystats=Mint.._pages#获取行数组#Add statistics以获得.stotal_.s=stats..(0)do|sum,stat |金额= stat.visit_countend = > 8800

几件事情发生了:

  • 我们开始与一个数据库行对象数组,如前所述。
  • 注入取一个论点,在本例中是一个号码。这个起始值将在块的每次迭代期间进行操作,并在最后返回。我们可以从一个空白数组()开始。[]”)空白散列(“{})甚至现有对象。
  • 块的参数是我们刚刚初始化的变量,和数组的一个元素。

仍然困惑吗?没关系,我们慢慢来。

首先,““和”因为我们发送了,所以是零0“作为初始化值注入.

““统计”将从“第一项统计数据”数组。我们将该页面的访问次数添加到当前”“和”.

如此循环往复的所有元素的数组,逐渐增加的整体”“和”.

最后,最终价值“和”返回(8),在这种情况下,800)。

这是很多功能在少量的代码。事实上,你可以适应这一切在一行和可选的花括号语法:

._.s=stats..(0){|sum,stat |金额= stat.visit_count}

运营商,

数组能够更多,但是这里有一个最终的特性:加法和减法。添加数组只是将它们组合在一起,即使有重复。数组减法是足够聪明取出重复。

一个= 1,2,3)B=1,4,5)A—B=>〔2〕;3)a=>〔1〕;2,三,1,4,(a b)-a=>[4,5]

这些方法中有许多可用于具有自己的任何对象”每一个“方法!看到红宝石博士或者年长的在线版本的Ruby编程的细节。

在下次和优化Ruby散列的基础!!