我刚刚开始学习Ruby和Ruby on Rails,并遇到了使用范围的验证代码:
validates_inclusion_of :age, :in => 21..99
validates_exclusion_of :age, :in => 0...21, :message => "Sorry, you must be over 21"
Run Code Online (Sandbox Code Playgroud)
起初我以为差异的包容端点,但在API文档我进去看了看,它并似乎并不重要,是否是..或...:它总是包括端点.
但是,我在irb中进行了一些测试,它似乎表明..包括两个端点,而...只包括下限但不包括上限.它是否正确?
Ruby/Rails在谈到基本用品的糖时会做很多很酷的事情,我认为有一种非常常见的情况,我想知道是否有人做过帮手或类似的东西.
a = Array.new(5, 1)
a.each_with_index do |x, i|
if i == 0
print x+1
elsif i == (a.length - 1)
print x*10
else
print x
end
end
Run Code Online (Sandbox Code Playgroud)
原谅丑陋,但这可以达到人们想要的......是否有一种红宝石的方式来对循环的第一个和最后一个做一些事情?
[编辑]我认为理想情况下这将是带有参数的数组的扩展(数组实例,所有元素函数,第一个元素函数,最后元素函数)......但我对其他想法持开放态度.
可能重复:
告诉ruby中.each循环的结束
我有一个哈希:
=> {"foo"=>1, "bar"=>2, "abc"=>3}
Run Code Online (Sandbox Code Playgroud)
和代码:
foo.each do |elem|
# smth
end
Run Code Online (Sandbox Code Playgroud)
如何识别循环中的元素是最后一个?就像是
if elem == foo.last
puts 'this is a last element!'
end
Run Code Online (Sandbox Code Playgroud) 说我有这样一个块:
<% @help_sections.each do |section| %>
<li><%= section.name %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是在返回的最后一条记录中,我想做其他事情,例如在li那里应用一个类:
<li class="last"><%= section.name %></li>
我怎么用最干的方式做到这一点?
谢谢.
EDIT1:
我想我会简单地使用一个if语句和lastruby方法,但不知道如何在块中做到这一点?我知道,如果我只想要该数组中的最后一个元素,我可以这样做@help_sections.last,但这在Ruby块的范围内没有意义.