From 9bc67e1efad5ec6c54d34d290057268a89886a4c Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 20 Sep 2015 01:07:40 +0000 Subject: [PATCH] cont.c: append to continuations doc [ci skip] * cont.c (rb_callcc): [DOC] append continuations example accros methods. [Fix GH-1026] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ cont.c | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/ChangeLog b/ChangeLog index e7efff7837..4c436cc287 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Sep 20 10:07:35 2015 Anton Davydov + + * cont.c (rb_callcc): [DOC] append continuations example accros + methods. [Fix GH-1026] + Sun Sep 20 03:20:21 2015 Koichi Sasada * iseq.c (rb_iseq_free): free rb_iseq_t::body::cc_entries. diff --git a/cont.c b/cont.c index 774a026bd5..ba72fd5990 100644 --- a/cont.c +++ b/cont.c @@ -893,6 +893,24 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame) * Ron * Max * + * Also you can call callcc in other methods: + * + * require "continuation" + * + * def g + * arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ] + * cc = callcc { |cc| cc } + * puts arr.shift + * return cc, arr.size + * end + * + * def f + * c, size = g + * c.call(c) if size > 1 + * end + * + * f + * * This (somewhat contrived) example allows the inner loop to abandon * processing early: *