File: BlockArgs2.rb

package info (click to toggle)
dlr-languages 20090805%2Bgit.e6b28d27%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 51,484 kB
  • ctags: 59,257
  • sloc: cs: 298,829; ruby: 159,643; xml: 19,872; python: 2,820; yacc: 1,960; makefile: 96; sh: 65
file content (66 lines) | stat: -rw-r--r-- 1,097 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
def i *a
  puts '---'
  a.each { |x| print x.inspect, ',' }
  puts
end

x1,(*x2),(x3,*x4) = 1,2,[1,2],[3,4]
i x1,x2,x3,x4

puts '***'

def bar
  yield [1,2,3],[4,5], [6]
end

bar { |(a,*b),*y| i a,b,y }  # 1, [2,3], [[4,5],[6]]
bar { |(*a),(*b),(*c)| i a,b,c } # [[1,2,3]], [[4,5,]], [[6]]

puts '*** baz ***'

def baz
  yield [1,2,3]
end

baz { |a| i a }              # [1,2,3]
baz { |a,b| i a,b }          # 1,2
baz { |a,b,c| i a,b,c }      # 1,2,3
baz { |*a| i a }             # [[1,2,3]]  (!)
baz { |a,*b| i a,b }         # 1, [2,3]

puts '*** foo ***'

def foo
  yield 1,2,3
end

foo { |a| i a }              # [1,2,3] W
foo { |a,b| i a,b }          # 1,2
foo { |a,b,c| i a,b,c }      # 1,2,3
foo { |*a| i a }             # [1,2,3]
foo { |a,*b| i a,b }         # 1, [2,3]


puts '*** goo ***'

def goo
  yield *[1,2,3]             
end

goo { |a| i a }              # [1,2,3] W
goo { |a,b| i a,b }          # 1,2
goo { |a,b,c| i a,b,c }      # 1,2,3
goo { |*a| i a }             # [1,2,3]   (!)
goo { |a,*b| i a,b }         # 1, [2,3]

puts '********'

x = [1,2,3]
*z = x
i z
*z = *x
i z