Number of operands of the internal representation a domain element
This functionality does not run in MATLAB.
extnops(object) returns the number of operands of the object's internal representation.
For objects of a basic data type such as expressions, sets, lists, tables, arrays, hfarrays etc., extnops yields the same result as the function nops. The only difference to the function nops is that extnops cannot be overloaded by domains implemented in the MuPAD® language.
Internally, a domain element may consist of an arbitrary number of data objects; extnops returns the actual number of internal operands. Since every domain should provide interface methods, extnops should only be used from inside these methods. "From the outside", the function nops should be used.
extnops returns the number of entries of a domain element:
d := newDomain("demo"): e := new(d, 1, 2, 3, 4): extnops(e)
delete d, e:
For kernel domains, extnops is equivalent to nops:
extnops([1, 2, 3, 4]), nops([1, 2, 3, 4])
We define a domain of lists. Its internal representation is a single object (a list of kernel type DOM_LIST):
myList := newDomain("lists"): myList::new := proc(l : DOM_LIST) begin new(myList, l) end_proc:
myList::nops := l -> nops(extop(l, 1)):
We create an element of this domain:
mylist := myList([1, 2, 3])
Since nops was overloaded, extnops provides the only way of determining the number of operands of the internal representation of mylist. In contrast to nops, extnops always returns 1, because the internal representation consists of exactly one list:
delete myList, mylist: