VN
подскажите пожалуйста, конструкция
for x in do
....
end
не меняет же начального значения? но и не предпочтительна к использованию так как не является блоком?
Size: a a a
VN
VN
VN
VV
for a in a
звучит как бесмыслеца.for x in a
, где x
— переменная, в которую по очереди будут закинуты каждый элемент массива a
.VN
for a in a
звучит как бесмыслеца.for x in a
, где x
— переменная, в которую по очереди будут закинуты каждый элемент массива a
.Э
for
is the syntax sugar for:
(expr).each `{' `|' lhs..`|' expr.. `}'
E
for
is the syntax sugar for:
(expr).each `{' `|' lhs..`|' expr.. `}'
Э
[1] pry(main)> def for_loop; for i in [1, 2]; end; end
=> :for_loop
[2] pry(main)> puts RubyVM::InstructionSequence.disasm(method(:for_loop))
== disasm: #<ISeq:for_loop@(pry):1 (1,0)-(1,39)> (catch: FALSE)
== catch table
| catch type: break st: 0000 ed: 0006 sp: 0000 cont: 0006
| == disasm: #<ISeq:block in for_loop@(pry):1 (1,14)-(1,34)> (catch: FALSE)
| == catch table
| | catch type: redo st: 0005 ed: 0006 sp: 0000 cont: 0005
| | catch type: next st: 0005 ed: 0006 sp: 0000 cont: 0006
| |------------------------------------------------------------------------
| local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] ?@0<Arg>
| 0000 getlocal_WC_0 ?@0 ( 1)
| 0002 setlocal_WC_1 i@0
| 0004 nop [Bc]
| 0005 putnil
| 0006 nop
| 0007 leave ( 1)[Br]
|------------------------------------------------------------------------
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] i@0
0000 duparray [1, 2] ( 1)[LiCa]
0002 send <callinfo!mid:each, argc:0>, <callcache>, block in for_loop
0006 nop
0007 leave ( 1)[Re]