Oops, that should be..
| array lookupClosure performClosure |
lookupClosure := [].
lookupClosure := [:cls :selector |
(cls == nil)
ifTrue: [Warning signal: ('method lookup failure: ',
selector)].
cls methodDictionary
at: selector
and a little block cleanup:
| array lookupClosure performClosure |
lookupClosure := [].
lookupClosure := [:cls :selector |
(cls == nil)
ifTrue: [Warning signal: ('method lookup failure: ',
selector)].
cls methodDictionary
at: selector
Here's a little change to get your #perform:withArguments: implemented.
| array lookupClosure method |
array := { 1 }.
lookupClosure := [].
lookupClosure := [:cls :selector |
(cls == nil)
ifTrue: [Warning signal: ('method lookup failure: ', selector)].
cls methodDictionary
On Sun, Oct 16, 2016 at 9:11 PM, Charlie Robbats
wrote:
> Here, Dmitry, try this code in playground...maybe helps you understand
>
> | lookupClosure |
> lookupClosure := [].
> lookupClosure := [:cls :selector |
> (cls == nil)
> ifTrue: [Warning signal:
Here, Dmitry, try this code in playground...maybe helps you understand
| lookupClosure |
lookupClosure := [].
lookupClosure := [:cls :selector |
(cls == nil)
ifTrue: [Warning signal: ('selector lookup failure: ', selector)].
(cls methodDictionary
at: selector
On Sun, Oct 16, 2016 at 8:38 PM, Nicolai Hess wrote:
> Am 16.10.2016 14:35 schrieb "CodeDmitry" :
>>
>> I define Magic as "An opaque abstraction or an abstraction you think is
>> opaque until you learn better.", to a beginner, everything is deeply
>>
On Sun, Oct 16, 2016 at 12:44 PM, CodeDmitry wrote:
> I understand that it is a single message send, but to know how to handle the
> message at runtime, the parser needs to somehow determine where the
> implementation of that message is. It must do a lookup based on
I define Magic as "An opaque abstraction or an abstraction you think is
opaque until you learn better.", to a beginner, everything is deeply
Magical.
That said, much of Smalltalk's opaqueness is not due to the language, but
due to me being a beginner. I'm sure there's a way to actually force
Hi,
> On Oct 16, 2016, at 10:41 AM, CodeDmitry wrote:
>
> I was actually curious about this in Ruby as well, since Ruby also doesn't
> have the Smalltalk message syntax.
>
> I figure that the magic behind it is that Smalltalk takes strings like "dict
> at: 'foo' put:
"Messages are very hard to implement if not impossible because they required
that calls don't exist or be disabled, otherwise the existence of message is
pointless. And since no language I am aware of allow you to disable calls
and replace them with messages , what you trying to do is pointless ."
Still you don't understand how Ruby syntax works. Every method call every
function you see is basically a masquerade message sent. Those calls are
just syntactic sugar, they don't exist, they are there to make people to
feel more comfortable giving them the illusion that is a call because it
looks
I tried so hard to find an example of Ruby using smalltalk message syntax.
You can do something like:
class Dictionary
attr_accessor :dict
def initialize()
@dict = {}
end
def at(*args)
if (args.length == 1) then
return @dict[args[0]]
"I was actually curious about this in Ruby as well, since Ruby also doesn't
have the Smalltalk message syntax. "
Actually, it does
when i said in my reply
"The only other languages that have such an implementation are ObjC and
Ruby which borrow this directly from Smalltalk."
What I mean is
So "at: x put: y" translates to a method named #at:put:(or "at:put:")?
|dict|
dict := Dictionary new.
dict at: 'foo' put: 'bar'.
So javascript equivalent would be(assuming the Dictionary object existed).
var dict;
dict = new Dictionary;
dict['at:put:']('foo', 'bar');
--
View this message in
I think the nub of your confusion is twofold. The method #at:put: is a
keyword method and it isn't right to think o them as two keys. It is one
compound key and unlike most every other system, Smalltalk keyword
message sends allow the programmer to name each argument. This is very
fine indeed.
I understand that it is a single message send, but to know how to handle the
message at runtime, the parser needs to somehow determine where the
implementation of that message is. It must do a lookup based on multiple
keys(at, and put), which is really confusing. "methods" are easy to look up
The message is "at:put:". It's a single message send. I encourage you to
try the ProfStef tutorial to understand the basis.
On Oct 16, 2016 01:17, "CodeDmitry" wrote:
> I am trying to do a JavaScript experiment to make Objects behave like
> Smalltalk objects.
>
>
17 matches
Mail list logo