我想知道 Ruby 或 RnR 中是否有类似的功能?
这篇帖子:Why no tail() or head() method in List to get last or first element? 是关于 Java 的,但我也想知道在 Ruby 或 RnR 中是否有同样的功能。
感谢您的时间!
我想知道 Ruby 或 RnR 中是否有类似的功能?
这篇帖子:Why no tail() or head() method in List to get last or first element? 是关于 Java 的,但我也想知道在 Ruby 或 RnR 中是否有同样的功能。
感谢您的时间!
这里有一个可能性:
head, *tail = args
它使用了Ruby的展开运算符。
示例:
args = [1, 2, 3, 4, 5, 6, 7, 8]
# => [1, 2, 3, 4, 5, 6, 7, 8]
head, *tail = args
head
# => 1
tail
# => [2, 3, 4, 5, 6, 7, 8]
args
使用splat操作符,因为它已经是一个数组了,head, *tail = args
将会达到你期望的效果。 - toro2k我认为在 ruby
的核心库或标准库中没有这样的东西。但是如果你喜欢函数式风格,你可以自己实现一个并避免像这样进行猴子补丁:
def head(n)
n.to_a[0]
end
def tail(n)
n.to_a[1..-1]
end
to_a
是必需的,如果您想支持数组和可枚举对象。因此,您可以像这样调用它:
>> head [1, 2, 3, 4, 5]
=> 1
>> tail [1, 2, 3, 4, 5]
=> [2, 3, 4, 5]
>> head 1..10
=> 1
>> tail 1..10
=> [2, 3, 4, 5, 6, 7, 8, 9, 10]
Unit.first(5)
-> Unit Load (5.3ms) SELECT `units`.* FROM `units` LIMIT 5
Unit.last(5)
-> Unit Load (1.7ms) SELECT `units`.* FROM `units` ORDER BY id DESC LIMIT 5
或者,一个数组(列表):
units.first(5) # first 5
units[0,5] # first 5
units[0..4] # first 5
units.last(5) # last 5
units[-5,5] # last 5
units[-5..-1] # last 5
tail
方法会返回什么?集合的最后一个元素还是除了头部以外的整个集合? - toro2ktail
通常是除了head
之外的所有内容。如果你想要最后一个元素,你应该调用/定义last
方法。然而,那个链接的 Java 问题很令人困惑,因为那里的tail
方法只返回最后一个元素。 - tolgap