This is all very clever (seriously!), but I think this thread is simply talking about two different things. It is one thing to maintain your own sorting information in arrays. It's another to pull the data out of arrays, then sort it. But it's another entirely to have sortable array. When your data gets really large, you don't want to have to maintain your own indices for sorting. You can, but it would be way more efficient to keep it in the engine.

The latter is what, I think, some would like to see. The workarounds are great, and if they work for your needs, then you probably don't need native support. I love resourceful solutions =). But I have to agree -- native support would be a nice addition.

One point of speculation which would make a huge difference is how Rev is actually implementing the arrays. If it is truly a hash table, providing any sort of in-order traversal of the array elements won't be happening any time soon. A hash table is an unordered piece of data, and so to provide any sort of built-in sorting, RunRev would have to implement workarounds under the hood similar to what people are already scripting. On the other hand, if they are using something more like red-black trees, it is trivial to walk the tree in order and return the elements. Or backwards. Or "next" and "prev" functionality. But... I have no idea what data structure they are using.

FWIW.

- Brian

You enter the keys into the list while you enter real data stored behind these keys that are the individual containers. It was in my previous post, kind of. I just left out the process.

Let's assume that there is no sort function for keys added or order of entry
set controls.

put chars 4000 to 5000 of zigzag into myArray[4]["4000to5000"]
-- this is the data being stored
-- It received the key "4000to5000"

-- I then created a layer/zone - whatever, (a list) that is appended as I add more and more data with keys added to the layer myArray[4]. Now that I think of it, and keeping with the illusion that I'm always going to keep any dimensional layer's (key registry) in ["keyReg"]. There might be a time when I want to use layer [9].

put "4000to5000," after myArray[4]["keyReg"]["sorted"] -- sort this
put "4000to5000," after myArray[4]["keyReg"]["notSorted"]
put "4000to5000," after myArray[4]["keyReg"]["entryOrder"]
put "4000to5000," after myArray[4]["keyReg"]["globalEntryOrder"]


Later you can sort the list of keys in myArray[4]["keyReg"]["sorted"]

Do you see it yet. "4000to5000" is the key to those 1000 characters that were stored in the dimensional array.

You want at it in the order that it was entered:
put myArray[4][ item 2 of myArray[4]["keyReg"]["entryOrder"] ] into hThis

You want at it in the order that it was sorted:
put myArray[4][ item 1 of myArray[4]["keyReg"]["Sorted"] ] into hThis

You want at it in the order that it was entered anywhere in the array, any layer: put the number of items in myArray[4]["keyReg"]["globalEntryOrder"] into tNum put myArray[4][ item tNum of myArray[4]["keyReg"] ["globalEntryOrder"] ] into hThis

I don't see the need for the engine to physically move the data if the keys are sorted or custom arranged.

Does that help?

P.S. Those calls to the array within the calls to the array are untested.


Mark



_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to