gpt4 book ai didi

用于单个对象的 Ruby map()

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:20 24 4
gpt4 key购买 nike

我正在寻找一种在 Ruby 中“映射”单个项目的方法。

我想调用这个函数并传递一个block,对象会被yield给block,然后block的结果会返回给调用者。正是 map 的作用,但针对单个元素。

这样做的动机是,有时您生成的对象只是用来构造其他东西。然后不再需要原始对象。最好将转换放入一个 block 中并消除临时的。

作为一个人为的例子,假设我想创建一个代表月/年组合的整数。对于今天的日期,代码看起来像这样:

day = Date.today
month_number = day.year * 100 + day.month

如果我能做这样的事情,我真的很喜欢:

month_number = Date.today.some_function { |d| d.year * 100 + d.month }

但我不知道“some_function”是什么(或者它是否存在)。

如果有更多的 Ruby 方式来处理这样的事情,我会洗耳恭听。我知道猴子补丁类,但我希望处理那些更短暂的情况。

最佳答案

instance_eval 正是您要找的。

month_number = Date.today.instance_eval { |d| d.year * 100 + d.month }

|d|也是可选的,self默认为对象上下文。

这可能会以更紧凑的方式满足您的需求。

month_number = Date.today.instance_eval { year * 100 + month }

关于用于单个对象的 Ruby map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780783/

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