Пример #1
0
        internal static object rb_yield(Proc block, Frame caller, ArgList args)
        {
            if (block == null)
            {
                throw new LocalJumpError("no block given").raise(caller);
            }

            return block.yield(caller, args);
        }
Пример #2
0
            public override object Call1(Class last_class, object recv, Frame caller, Proc block, object val)
            {
                Array tmp;
                int i;

                tmp = new Array();
                tmp.Add(val);

                for (i = 0; i < memo.args.Count; i++)
                {
                    if (memo.args[i].Count > memo.index)
                        tmp.Add(memo.args[i][memo.index]);
                    else
                        tmp.Add(null);
                }

                if (block != null)
                {
                    block.yield(caller, tmp);
                }
                else
                {
                    result.Add(tmp);
                }

                memo.index++;

                return null;
            }
Пример #3
0
        internal static object rb_yield(Proc block, Frame caller, params object[] args)
        {
            //this test is performed in 'rb_yield_0' in c ruby.             
            if (block == null)
            {
                throw new LocalJumpError("no block given").raise(caller);
            }

            return block.yield(caller, args);
        }