File: example3.e

package info (click to toggle)
smarteiffel 1.1-11
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 12,288 kB
  • ctags: 40,785
  • sloc: ansic: 35,791; lisp: 4,036; sh: 1,783; java: 895; ruby: 613; python: 209; makefile: 115; csh: 78; cpp: 50
file content (55 lines) | stat: -rw-r--r-- 1,086 bytes parent folder | download | duplicates (2)
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
class EXAMPLE3
--
-- In the DICTIONARY class, the `do_all' feature has an agent argument wich is
-- a routine with two arguments, one for the value (type `V') and one for
-- the key (type `K').
--

creation make

feature

   make is
      local
         my_array: ARRAY[STRING]
      do
	 my_array := <<"Benedicte","Lucien","Marie">>

	 create my_dictionary.make

	 -- Using an agent to fill `my_dictionary' with `my_array':
	 my_array.do_all(agent fill_it(?))

	 -- Using another agent to print `my_dictionary':
	 my_dictionary.do_all(agent print_key_value(?,?))
      end

feature {NONE}

   my_dictionary: DICTIONARY[INTEGER,STRING]

   fill_it(value: STRING) is
      do
	 my_dictionary.put(next_key,value)
      end

   next_key: INTEGER is
      do
	 counter.increment
	 Result := counter.value
      end

   counter: COUNTER is
      once
	 create Result
      end

   print_key_value(key: INTEGER; value: STRING) is
      do
	 std_output.put_integer(key)
	 std_output.put_character(' ')
	 std_output.put_string(value)
	 std_output.put_character('%N')
      end

end -- EXAMPLE3