gpt4 book ai didi

ruby - 有没有一种简单的方法可以在 Ruby 中生成有序对

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:17 26 4
gpt4 key购买 nike

我想知道是否有类似于 Range 的东西,但不是整数而是有序对 (x, y)。我想知道是否有一种简单的方法可以做这样的事情:

((1,2)..(5,6)).each {|tmp| puts tmp} #=> (1,2) (3,4) (5,6)

编辑:也许我的问题不是 100% 清楚 :) 我会尝试以不同的方式提问。

如果我有这些对:(3,4) 和 (5,6) 我正在寻找一种方法来帮助我生成:

(3,4), (4,5), (5,6)

如果我必须更好地解释它:如果这对夫妇是 (x,y)->

(x0,y0), ((x0+1),(y0+1)), ((x0+2), (y0+2))  and so on .

最佳答案

您可以使用数组作为 Range 元素,例如:

> t = [1, 2]..[3, 4]
=> [1, 2]..[3, 4]

但是,它不能迭代,因为Array 类缺少succ 方法。

> t.each {|tmp| puts tmp}
TypeError: can't iterate from Array
from (irb):5:in `each'
from (irb):5
from D:/Programmes/Ruby/bin/irb:12:in `<main>'

因此,如果您想允许使用数组进行迭代,请定义一个Array#succ 方法来执行您想要的操作:

class Array
def succ
self.map {|elem| elem + 1 }
end
end

它给你:

> t = [1, 2]..[3, 4]
=> [1, 2]..[3, 4]
> t.each {|tmp| p tmp}
[1, 2]
[2, 3]
[3, 4]
=> [1, 2]..[3, 4]

关于ruby - 有没有一种简单的方法可以在 Ruby 中生成有序对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20608048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com