Could someone please explain the process of double dispatch in Pharo 4.0 with Smalltalk? I am new to Smalltalk and am having difficulty grasping the concept, since it is implemented very differently in Java as compared to Smalltalk. It will be very helpful if some one could explain it with an example.
1
There are 1 answers
Related Questions in SMALLTALK
- Problem Working with Arrays in Pharo 11.0
- On Pharo 11, is it possible to programatically change the traits of a defined class?
- Smalltalk self issue
- How to define a variable in Strongtalk (Smalltalk) and print it
- Understanding Smalltalk Method Invocation with Multiple Colons
- Convert DateTime to formated String on Pharo 11
- Is there a function to check intersection of two timespans in smalltalk?
- smalltalk difference new & initialise
- Sort array that has different types in smalltalk
- Singleton pattern for multi-processing on Pharo 10.0 ( Smalltalk )
- Which methods must I override to enable drag&drop in Squeak?
- Refreshing a Morph without any user interaction
- Why can't methods have the same name in the same class?
- How is ordered a Dictionary in Pharo?
- Smalltalk Prime Generator with a connected list not working
Related Questions in PHARO
- Problem Working with Arrays in Pharo 11.0
- On Pharo 11, is it possible to programatically change the traits of a defined class?
- how to open a file in windows, from Pharo environment?
- Pharo or Squeak: How to get a list of directories and files in a recursive way
- Convert DateTime to formated String on Pharo 11
- Read nested Json Mapping with NeoJSON
- Overriding and extending trait methods in Pharo
- Singleton pattern for multi-processing on Pharo 10.0 ( Smalltalk )
- How to use commandline tools from within pharo
- How to show test results in the console?
- How to log stack traces from seaside in deployed application
- How is ordered a Dictionary in Pharo?
- Can a child component use updateRoot: to add javascript
- Stream assigment in pharo
- Generateing a method via source code in pharo
Related Questions in DOUBLE-DISPATCH
- call non-virtual method of derived class in polymorphic hierarchy of library that can't be modified without down-casting
- Visitor Pattern and Double Dispatch
- How to get concrete type from mapping variable?
- Double dispatch using visitor pattern in Java
- `vec_arith` double dispatch error with packages
- How to use a Double Dispatch with compareTo in JAVA?
- Wrong double dispatch method when putting a vctrs-built class in a package
- Double dispatch in R: S4 vs vctrs library
- How is an "isa?" based multimethod more than syntax sugar for instanceof?
- What exactly happened that we need double dispatch/visitor in c++
- Forward declaring class with templated code
- Overloading method without modifying classes
- Passing shared_ptr<Base> as shared_ptr<Derived>
- C++ Double dispatch with runtime polymorphism?
- C++ double dispatch example
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Essentially the idea is that you have method:
#addInteger:which knows how to add integers,#addFloat:which knows how to add floats,Now in
Integerclass you define+as:in
Floatyou define it like:This way you only need to send
+to an object and then it will ask the receiver to add it with the required method.Another strategy is to use
#adaptTo:andSend:methods. For example+inPointclass is defined as:Which first checks if the argument is a Point, and if it's not, asks the argument to adapt to Point and send some symbol (operation), this saves some duplication of the methods that have to perform a slightly different operation.
Collectionimplements the method like this:and
Numberimplements it like that:Note, that to avoid explicit type checking, we could define that method in the
Pointitself this way:You can see more examples in this presentation: http://www.slideshare.net/SmalltalkWorld/stoop-302double-dispatch