Send an unknown method call: Difference between revisions
Content added Content deleted
(added objective-c) |
(→Tcl: Added implementation) |
||
Line 99: | Line 99: | ||
Example.new.send symbol # => 42 |
Example.new.send symbol # => 42 |
||
Example.new.send( :bar, 1, 2 ) { |x,y| x+y } # => 3</lang> |
Example.new.send( :bar, 1, 2 ) { |x,y| x+y } # => 3</lang> |
||
=={{header|Tcl}}== |
|||
Method names are really just strings, i.e., ordinary values that can be produced by any mechanism: |
|||
<lang tcl>package require Tcl 8.6 |
|||
oo::class create Example { |
|||
method foo {} {return 42} |
|||
method 1 {s} {puts "fee$s"} |
|||
method 2 {s} {puts "fie$s"} |
|||
method 3 {s} {puts "foe$s"} |
|||
method 4 {s} {puts "fum$s"} |
|||
} |
|||
set eg [Example new] |
|||
set mthd [format "%c%c%c" 102 111 111]; # A "foo" by any other means would smell as sweet |
|||
puts [$eg $mthd] |
|||
for {set i 1} {$i <= 4} {incr i} { |
|||
$eg $i ... |
|||
}</lang> |
|||
The above produces this output: |
|||
<pre> |
|||
42 |
|||
fee... |
|||
fie... |
|||
foe... |
|||
fum... |
|||
</pre> |