ToArray()
BlitzMax Forums/BlitzMax Programming/ToArray()
| ||
| Can someone explain how converting from a type list to an array works? I am trying to convert my list to array, so that I can access the club objects via the element number. If I do this... Local ClubArray:Object[] = TClub.List.ToArray() How then do i access the fields of my object. Object[n].m_Name does not work. |
| ||
| Well, try this: Local ClubArray:TClub[] = TClub[] (TClub.List.ToArray()) You can convert an object array to an sub type array. |
| ||
| It comiles but when I try to access ClubArray[0] I get: "Attempt to index array element beyond array length" |
| ||
| Oops, i was being a bit stupid. Object[n].m_Name doesn't work but TClub(ClubArray[n]).m_Name does. :) |
| ||
| What you would do is TClub(Object[n]).m_name Casting arrays does not work from what I know. alternative would be a temporary array of object which you cast manually element by element to the final TClub array ... |
| ||
Sorry if the array casting information was wrong, but I used this example to test it:Strict
Local ObjectArray:Object [] = [ New T , New T , New T ] 'create an object array with lots of objects of the same type
'now think of this array as the returned value of ToArray()
Local TypeArray:T [] = T [] ( ObjectArray )'array casting
TypeArray [ 0 ].Do'access objects
TypeArray [ 1 ].Do
TypeArray [ 2 ].Do
Type T
Method Do ( )
Print "Object's method"
EndMethod
EndTypeAnd I didn't got any runtime errors; that's why I thought array casting is allowed. |