Return array from function
David McFarlane
mcfarla9 at msu.edu
Mon Dec 12 14:44:35 UTC 2011
Eline,
Glad that liw solved it for you. I just want to add a few more details
in case anyone else stumbles on this thread.
By *default*, array indexes in E-Prime/E-Basic start at 0. But you may
change that to start instead at 1 using the "Option Base 1" statement in
the global User script area -- see the Option Base topic in the E-Basic
Help facility.
You may also override the default on any array by explicitly declaring
its bounds in the Dim statement -- see the Dim topic in the E-Basic
Help. E.g., if you were to say
Dim U(1 to 3, 1 to 3) As Variant
in your original code, then the array initialization loop should work
just fine.
Exactly because this array index issue can get so confusing, I have
taken to always explicitly declaring the index bounds when I declare
arrays, that way there is no question. I would advise you and everyone
else to do the same.
-- David McFarlane
liwenna wrote:
> Must admit that I do not understand the code but I do happen to know
> that array's start counting levels at 0, so the "top left" cell in a
> 3*3 array is U(0,0) and the bottom right U(2,2). => if you let i and j
> run from 0 to 2 rather than 1 to 3, that may help?
>
> best,
>
> liw
>
>
> On Dec 12, 11:48 am, ELine <elin... at hotmail.com> wrote:
>> Hello again
>>
>> I have problems returning a 3x3 array from a function. I have an
>> experiment with 9 conditions and to keep things simple I organized
>> them in a 3x3 array. I want to keep track on the number of trials pr
>> condition by updating this array in the end of each trial using a user-
>> specified function that returns a 3x3 array containing one 1 (rest is
>> 0s) specifying which trial has been run.
>>
>> my problem is not with the function itself, but with returning a 3x3
>> array. I've tried something like this (but of course more
>> complicated):
>>
>> Function UpdateArray(A As Integer, B As Integer) As Variant
>> Dim U(3,3) As Variant
>>
>> for i= 1 to 3
>> for j= 1 to 3
>> U(i,j)=0
>> next j
>> next i
>> U(A,B)=1
>>
>> UpdateArray=U
>>
>> End Function
>>
>> When compiling E-Prime returns the error: Cannot assign whole array. I
>> also tried with integer instead of variant, but it still doesn't work.
>> And I've tried including ReDim, but without any luck.
>>
>> Can anyone help me?
>>
>> ELine
--
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.
More information about the Eprime
mailing list