As Henrik pointed out, "foo at 1" won't even compile, let alone return anything, because "1" isn't a valid name for a method, and "at" (without the ":") doesn't take any arguments.
To get the first object in an indexable collection, be it String, Array or whatever, you use "foo at: 1". To get the third object, you use "foo at: 3". It really is as simple as that. I usually say that with Smalltalk, if what you're doing feels complicated or hard, then you're doing it wrong. Here, you were simply missing the ":". -- Cheers, Peter. On 16 dec 2010, at 23:22, flebber <[email protected]> wrote: > > > Henrik Sperre Johansen wrote: >> >> >> >> Den 16.12.2010 14:48, skrev flebber: >>> HI >>> >>> doing the pharo tutorial and I wanted to know how pharo viewed the >>> dynamic >>> array at index 3(seems smalltalk starts at 1 not 0) >>> >>>> From the xample simple enough >>> { (2+3) . (6*6) . 'hello', ' Stef'} size. 3 >>> >>> from the strings example we found index by >>> >>> 'ProfStef' at: 1. $P >>> >>> so I thought { (2+3) . (6*6) . 'hello', ' Stef'} at 3. would let me know >>> what the array was evaluated to after execution but it doesn't. Is it >>> confused because it doesn't know whether I want the third array element >>> or >>> the third character? >>> >>> Led me to wonder the correct way if doing this, so that I could evaluate >>> array 1 * 2. >>> >>> { (2+3) . (6*6) . 'hello', ' Stef'} at 1 * at 2. 180 >>> >>> >>> Cheers >> >> What do you mean? >> The dynamic array is created with three elements, >> 5 (2+3) at index 1, >> 36 (6*6) at index 2, and >> 'hello Stef' ('hello', ' Stef') at index 3. >> >> at: 3 thus returns the string. >> at 3 is invalid, as it is basically 2 method calls, array does not >> understand a message called #at, and #3 is an invalid selector anyways. >> >> For your second expression, writing >> ({ (2+3) . (6*6) . 'hello', ' Stef'} at: 1) * (at: 2) would not work, >> as you're missing the receiver for the second at: call. >> you'd need to do something like: >> array := { (2+3) . (6*6) . 'hello', ' Stef'}. >> (array at: 1) * (array at: 2). 180 >> >> Cheers, >> Henry >> >> >> >> >> > Yes so simply if at 1 returns the first element of a string, what returns > the third element of dynamic array, do you have to assign a varaible for the > array to be able to retrieve elements? > -- > View this message in context: > http://forum.world.st/Dynamic-Arrays-view-index-at-execution-tp3090891p3091774.html > Sent from the Pharo Smalltalk mailing list archive at Nabble.com. >
