tap方法如何以并发方式工作?如果我这样做,我是否必须担心:
some_object.tap { |o|
# time-consuming operation 1
}.tap { |o|
# time-consuming operation 2
}
Run Code Online (Sandbox Code Playgroud)
那么,在现在还是将来,Ruby会尝试同时进行这些操作?你知道,#tap听起来很危险.
是否保证#tap块按顺序执行(当然,除非在块内部执行某些异常操作)?
Cas*_*per 11
Tap不会同时执行块,而是按顺序执行.因此,您不必担心并发问题,因为没有并发问题.
这是以下来源tap:
VALUE
rb_obj_tap(VALUE obj)
{
rb_yield(obj);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
所以你可以看到它首先调用了block(yield),然后才返回原始对象.没有并发存在.
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |