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 <flebber.crue@gmail.com> 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-tp3090891p30917... Sent from the Pharo Smalltalk mailing list archive at Nabble.com.