Please explain the difference between using ~> and -> ?? When do you use ~> or ->?
I looked at some Skill codes and I see both are used
Thanks for your explanation..
The basic answer is that "~>" should be used for database objects (and CDF, techfiles, constraints...) whereas the "->" operator is for "everything else" such as windows, menu structures, form structures, disembodied property lists, tables etc. Often they can be used interchangeably but with one big difference: the ~> operator can handle a list on its left hand side (input) and expand the query for each of the elements on the left. Here's a brief example:
cv = geGetEditCellView()
=> (db:0x16fcba12 db:0x16fcba13 db:0x16fcba14 db:0x16fcba15 ...)
=> ("Out" "net9" "A" "vss!" "B" ...)
In the example the second ~> (in red) has a list as its input and it queries the "name" attribute for each of the members and returns the list of results. If you tried "->" for the second query ("name") it will return nil, but if you used it for the "cv~>nets" query it would work since there is only one thing in its input on the left.
Hopefully this clarifies the main differences. Generally speaking you should use the "~>" for database objects, techfile access, constraint object access and so on, and use "->" for everything else.
In reply to skillUser:
What Lawrence says is not strictly correct. Actually you can use the -> and ~> interchangeably except on lists, where they behave differently. With a list, if you use -> then you are treating the list as a disembodied property list where you have a list with a dummy value first (often nil) followed by key/value pairs where the key is a symbol. So for example:
> dpl(nil shape "circle" colour "red")> dpl->shape"circle"> dpl->shape="square""square"> dpl->shape"square"> dpl(nil shape "square" colour "red")
If you use ~> on a list, then it effectively does a foreach mapcar over the list, applying the ~> operator on each member of the list and returning a list of the results. This is as Lawrence mentioned above. So doing:
is like doing:
foreach(mapcar net cv~>nets net~>name)
but obviously shorter and more to the point.
So ~> can be used for windows, menu structures, form structures, tables and so on - just not disembodied property lists.
Regards (and sorry to be pedantic!),