java.util.concurrent.Callable
, clojure.lang.IFn
, java.lang.Runnable
MultiFnWithHierarchy
, MultiFnWoutHierarchy
public interface MultiFn
extends clojure.lang.IFn
clojure.lang.IFn.D, clojure.lang.IFn.DD, clojure.lang.IFn.DDD, clojure.lang.IFn.DDDD, clojure.lang.IFn.DDDDD, clojure.lang.IFn.DDDDL, clojure.lang.IFn.DDDDO, clojure.lang.IFn.DDDL, clojure.lang.IFn.DDDLD, clojure.lang.IFn.DDDLL, clojure.lang.IFn.DDDLO, clojure.lang.IFn.DDDO, clojure.lang.IFn.DDDOD, clojure.lang.IFn.DDDOL, clojure.lang.IFn.DDDOO, clojure.lang.IFn.DDL, clojure.lang.IFn.DDLD, clojure.lang.IFn.DDLDD, clojure.lang.IFn.DDLDL, clojure.lang.IFn.DDLDO, clojure.lang.IFn.DDLL, clojure.lang.IFn.DDLLD, clojure.lang.IFn.DDLLL, clojure.lang.IFn.DDLLO, clojure.lang.IFn.DDLO, clojure.lang.IFn.DDLOD, clojure.lang.IFn.DDLOL, clojure.lang.IFn.DDLOO, clojure.lang.IFn.DDO, clojure.lang.IFn.DDOD, clojure.lang.IFn.DDODD, clojure.lang.IFn.DDODL, clojure.lang.IFn.DDODO, clojure.lang.IFn.DDOL, clojure.lang.IFn.DDOLD, clojure.lang.IFn.DDOLL, clojure.lang.IFn.DDOLO, clojure.lang.IFn.DDOO, clojure.lang.IFn.DDOOD, clojure.lang.IFn.DDOOL, clojure.lang.IFn.DDOOO, clojure.lang.IFn.DL, clojure.lang.IFn.DLD, clojure.lang.IFn.DLDD, clojure.lang.IFn.DLDDD, clojure.lang.IFn.DLDDL, clojure.lang.IFn.DLDDO, clojure.lang.IFn.DLDL, clojure.lang.IFn.DLDLD, clojure.lang.IFn.DLDLL, clojure.lang.IFn.DLDLO, clojure.lang.IFn.DLDO, clojure.lang.IFn.DLDOD, clojure.lang.IFn.DLDOL, clojure.lang.IFn.DLDOO, clojure.lang.IFn.DLL, clojure.lang.IFn.DLLD, clojure.lang.IFn.DLLDD, clojure.lang.IFn.DLLDL, clojure.lang.IFn.DLLDO, clojure.lang.IFn.DLLL, clojure.lang.IFn.DLLLD, clojure.lang.IFn.DLLLL, clojure.lang.IFn.DLLLO, clojure.lang.IFn.DLLO, clojure.lang.IFn.DLLOD, clojure.lang.IFn.DLLOL, clojure.lang.IFn.DLLOO, clojure.lang.IFn.DLO, clojure.lang.IFn.DLOD, clojure.lang.IFn.DLODD, clojure.lang.IFn.DLODL, clojure.lang.IFn.DLODO, clojure.lang.IFn.DLOL, clojure.lang.IFn.DLOLD, clojure.lang.IFn.DLOLL, clojure.lang.IFn.DLOLO, clojure.lang.IFn.DLOO, clojure.lang.IFn.DLOOD, clojure.lang.IFn.DLOOL, clojure.lang.IFn.DLOOO, clojure.lang.IFn.DO, clojure.lang.IFn.DOD, clojure.lang.IFn.DODD, clojure.lang.IFn.DODDD, clojure.lang.IFn.DODDL, clojure.lang.IFn.DODDO, clojure.lang.IFn.DODL, clojure.lang.IFn.DODLD, clojure.lang.IFn.DODLL, clojure.lang.IFn.DODLO, clojure.lang.IFn.DODO, clojure.lang.IFn.DODOD, clojure.lang.IFn.DODOL, clojure.lang.IFn.DODOO, clojure.lang.IFn.DOL, clojure.lang.IFn.DOLD, clojure.lang.IFn.DOLDD, clojure.lang.IFn.DOLDL, clojure.lang.IFn.DOLDO, clojure.lang.IFn.DOLL, clojure.lang.IFn.DOLLD, clojure.lang.IFn.DOLLL, clojure.lang.IFn.DOLLO, clojure.lang.IFn.DOLO, clojure.lang.IFn.DOLOD, clojure.lang.IFn.DOLOL, clojure.lang.IFn.DOLOO, clojure.lang.IFn.DOO, clojure.lang.IFn.DOOD, clojure.lang.IFn.DOODD, clojure.lang.IFn.DOODL, clojure.lang.IFn.DOODO, clojure.lang.IFn.DOOL, clojure.lang.IFn.DOOLD, clojure.lang.IFn.DOOLL, clojure.lang.IFn.DOOLO, clojure.lang.IFn.DOOO, clojure.lang.IFn.DOOOD, clojure.lang.IFn.DOOOL, clojure.lang.IFn.DOOOO, clojure.lang.IFn.L, clojure.lang.IFn.LD, clojure.lang.IFn.LDD, clojure.lang.IFn.LDDD, clojure.lang.IFn.LDDDD, clojure.lang.IFn.LDDDL, clojure.lang.IFn.LDDDO, clojure.lang.IFn.LDDL, clojure.lang.IFn.LDDLD, clojure.lang.IFn.LDDLL, clojure.lang.IFn.LDDLO, clojure.lang.IFn.LDDO, clojure.lang.IFn.LDDOD, clojure.lang.IFn.LDDOL, clojure.lang.IFn.LDDOO, clojure.lang.IFn.LDL, clojure.lang.IFn.LDLD, clojure.lang.IFn.LDLDD, clojure.lang.IFn.LDLDL, clojure.lang.IFn.LDLDO, clojure.lang.IFn.LDLL, clojure.lang.IFn.LDLLD, clojure.lang.IFn.LDLLL, clojure.lang.IFn.LDLLO, clojure.lang.IFn.LDLO, clojure.lang.IFn.LDLOD, clojure.lang.IFn.LDLOL, clojure.lang.IFn.LDLOO, clojure.lang.IFn.LDO, clojure.lang.IFn.LDOD, clojure.lang.IFn.LDODD, clojure.lang.IFn.LDODL, clojure.lang.IFn.LDODO, clojure.lang.IFn.LDOL, clojure.lang.IFn.LDOLD, clojure.lang.IFn.LDOLL, clojure.lang.IFn.LDOLO, clojure.lang.IFn.LDOO, clojure.lang.IFn.LDOOD, clojure.lang.IFn.LDOOL, clojure.lang.IFn.LDOOO, clojure.lang.IFn.LL, clojure.lang.IFn.LLD, clojure.lang.IFn.LLDD, clojure.lang.IFn.LLDDD, clojure.lang.IFn.LLDDL, clojure.lang.IFn.LLDDO, clojure.lang.IFn.LLDL, clojure.lang.IFn.LLDLD, clojure.lang.IFn.LLDLL, clojure.lang.IFn.LLDLO, clojure.lang.IFn.LLDO, clojure.lang.IFn.LLDOD, clojure.lang.IFn.LLDOL, clojure.lang.IFn.LLDOO, clojure.lang.IFn.LLL, clojure.lang.IFn.LLLD, clojure.lang.IFn.LLLDD, clojure.lang.IFn.LLLDL, clojure.lang.IFn.LLLDO, clojure.lang.IFn.LLLL, clojure.lang.IFn.LLLLD, clojure.lang.IFn.LLLLL, clojure.lang.IFn.LLLLO, clojure.lang.IFn.LLLO, clojure.lang.IFn.LLLOD, clojure.lang.IFn.LLLOL, clojure.lang.IFn.LLLOO, clojure.lang.IFn.LLO, clojure.lang.IFn.LLOD, clojure.lang.IFn.LLODD, clojure.lang.IFn.LLODL, clojure.lang.IFn.LLODO, clojure.lang.IFn.LLOL, clojure.lang.IFn.LLOLD, clojure.lang.IFn.LLOLL, clojure.lang.IFn.LLOLO, clojure.lang.IFn.LLOO, clojure.lang.IFn.LLOOD, clojure.lang.IFn.LLOOL, clojure.lang.IFn.LLOOO, clojure.lang.IFn.LO, clojure.lang.IFn.LOD, clojure.lang.IFn.LODD, clojure.lang.IFn.LODDD, clojure.lang.IFn.LODDL, clojure.lang.IFn.LODDO, clojure.lang.IFn.LODL, clojure.lang.IFn.LODLD, clojure.lang.IFn.LODLL, clojure.lang.IFn.LODLO, clojure.lang.IFn.LODO, clojure.lang.IFn.LODOD, clojure.lang.IFn.LODOL, clojure.lang.IFn.LODOO, clojure.lang.IFn.LOL, clojure.lang.IFn.LOLD, clojure.lang.IFn.LOLDD, clojure.lang.IFn.LOLDL, clojure.lang.IFn.LOLDO, clojure.lang.IFn.LOLL, clojure.lang.IFn.LOLLD, clojure.lang.IFn.LOLLL, clojure.lang.IFn.LOLLO, clojure.lang.IFn.LOLO, clojure.lang.IFn.LOLOD, clojure.lang.IFn.LOLOL, clojure.lang.IFn.LOLOO, clojure.lang.IFn.LOO, clojure.lang.IFn.LOOD, clojure.lang.IFn.LOODD, clojure.lang.IFn.LOODL, clojure.lang.IFn.LOODO, clojure.lang.IFn.LOOL, clojure.lang.IFn.LOOLD, clojure.lang.IFn.LOOLL, clojure.lang.IFn.LOOLO, clojure.lang.IFn.LOOO, clojure.lang.IFn.LOOOD, clojure.lang.IFn.LOOOL, clojure.lang.IFn.LOOOO, clojure.lang.IFn.OD, clojure.lang.IFn.ODD, clojure.lang.IFn.ODDD, clojure.lang.IFn.ODDDD, clojure.lang.IFn.ODDDL, clojure.lang.IFn.ODDDO, clojure.lang.IFn.ODDL, clojure.lang.IFn.ODDLD, clojure.lang.IFn.ODDLL, clojure.lang.IFn.ODDLO, clojure.lang.IFn.ODDO, clojure.lang.IFn.ODDOD, clojure.lang.IFn.ODDOL, clojure.lang.IFn.ODDOO, clojure.lang.IFn.ODL, clojure.lang.IFn.ODLD, clojure.lang.IFn.ODLDD, clojure.lang.IFn.ODLDL, clojure.lang.IFn.ODLDO, clojure.lang.IFn.ODLL, clojure.lang.IFn.ODLLD, clojure.lang.IFn.ODLLL, clojure.lang.IFn.ODLLO, clojure.lang.IFn.ODLO, clojure.lang.IFn.ODLOD, clojure.lang.IFn.ODLOL, clojure.lang.IFn.ODLOO, clojure.lang.IFn.ODO, clojure.lang.IFn.ODOD, clojure.lang.IFn.ODODD, clojure.lang.IFn.ODODL, clojure.lang.IFn.ODODO, clojure.lang.IFn.ODOL, clojure.lang.IFn.ODOLD, clojure.lang.IFn.ODOLL, clojure.lang.IFn.ODOLO, clojure.lang.IFn.ODOO, clojure.lang.IFn.ODOOD, clojure.lang.IFn.ODOOL, clojure.lang.IFn.ODOOO, clojure.lang.IFn.OL, clojure.lang.IFn.OLD, clojure.lang.IFn.OLDD, clojure.lang.IFn.OLDDD, clojure.lang.IFn.OLDDL, clojure.lang.IFn.OLDDO, clojure.lang.IFn.OLDL, clojure.lang.IFn.OLDLD, clojure.lang.IFn.OLDLL, clojure.lang.IFn.OLDLO, clojure.lang.IFn.OLDO, clojure.lang.IFn.OLDOD, clojure.lang.IFn.OLDOL, clojure.lang.IFn.OLDOO, clojure.lang.IFn.OLL, clojure.lang.IFn.OLLD, clojure.lang.IFn.OLLDD, clojure.lang.IFn.OLLDL, clojure.lang.IFn.OLLDO, clojure.lang.IFn.OLLL, clojure.lang.IFn.OLLLD, clojure.lang.IFn.OLLLL, clojure.lang.IFn.OLLLO, clojure.lang.IFn.OLLO, clojure.lang.IFn.OLLOD, clojure.lang.IFn.OLLOL, clojure.lang.IFn.OLLOO, clojure.lang.IFn.OLO, clojure.lang.IFn.OLOD, clojure.lang.IFn.OLODD, clojure.lang.IFn.OLODL, clojure.lang.IFn.OLODO, clojure.lang.IFn.OLOL, clojure.lang.IFn.OLOLD, clojure.lang.IFn.OLOLL, clojure.lang.IFn.OLOLO, clojure.lang.IFn.OLOO, clojure.lang.IFn.OLOOD, clojure.lang.IFn.OLOOL, clojure.lang.IFn.OLOOO, clojure.lang.IFn.OOD, clojure.lang.IFn.OODD, clojure.lang.IFn.OODDD, clojure.lang.IFn.OODDL, clojure.lang.IFn.OODDO, clojure.lang.IFn.OODL, clojure.lang.IFn.OODLD, clojure.lang.IFn.OODLL, clojure.lang.IFn.OODLO, clojure.lang.IFn.OODO, clojure.lang.IFn.OODOD, clojure.lang.IFn.OODOL, clojure.lang.IFn.OODOO, clojure.lang.IFn.OOL, clojure.lang.IFn.OOLD, clojure.lang.IFn.OOLDD, clojure.lang.IFn.OOLDL, clojure.lang.IFn.OOLDO, clojure.lang.IFn.OOLL, clojure.lang.IFn.OOLLD, clojure.lang.IFn.OOLLL, clojure.lang.IFn.OOLLO, clojure.lang.IFn.OOLO, clojure.lang.IFn.OOLOD, clojure.lang.IFn.OOLOL, clojure.lang.IFn.OOLOO, clojure.lang.IFn.OOOD, clojure.lang.IFn.OOODD, clojure.lang.IFn.OOODL, clojure.lang.IFn.OOODO, clojure.lang.IFn.OOOL, clojure.lang.IFn.OOOLD, clojure.lang.IFn.OOOLL, clojure.lang.IFn.OOOLO, clojure.lang.IFn.OOOOD, clojure.lang.IFn.OOOOL
Modifier and Type | Method | Description |
---|---|---|
MultiFn |
addMethod(java.lang.Object x,
clojure.lang.IFn f) |
Make
f the defined method for dispatch value
x . |
default void |
checkLegalDispatchValue(java.lang.Object x) |
Throw an exception if
x is not supported by
this MultiFn . |
boolean |
dominates(java.lang.Object x,
java.lang.Object y) |
Is a method defined for
x preferred to a
method defined for y ? |
clojure.lang.IFn |
getMethod(java.lang.Object x) |
Look up the most preferred method for
dispatch value
x , if any applicable methods are
defined. |
clojure.lang.IPersistentMap |
getMethodTable() |
Return the table of defined methods,
a map from dispatch values to functions.
|
clojure.lang.IPersistentMap |
getPreferTable() |
Return the table of explicit method preferences,
a map from dispatch value to set of dispatch values,
with the interpretation a method defined for the key dispatch
value is preferred to methods defined for any of the dispatch
values in the set.
|
boolean |
isA(java.lang.Object x,
java.lang.Object y) |
Are methods defined for
y applicable to
x ? |
boolean |
isLegalDispatchValue(java.lang.Object x) |
Is
x a legal dispatch value for this
MultiFn ? |
MultiFn |
preferMethod(java.lang.Object x,
java.lang.Object y) |
Prefer a method defined for dispatch value
x
to one defined for y . |
MultiFn |
removeMethod(java.lang.Object x) |
Removes the defined method for dispatch value
x , if there is one. |
MultiFn |
reset() |
Clear the
MultiFn , removing all defined
methods and preferences, and emptying the cache. |
boolean isLegalDispatchValue(java.lang.Object x)
x
a legal dispatch value for this
MultiFn
?
For performance reasons, some implementations of
MultiFn
may restrict kinds of dispatch values
they support.
Note: 'Legal' means it is possible to define methods for
x
, not that one has already been defined.
default void checkLegalDispatchValue(java.lang.Object x)
x
is not supported by
this MultiFn
.java.lang.IllegalArgumentException
- if not isLegalDisptachValue(x)
.boolean isA(java.lang.Object x, java.lang.Object y)
y
applicable to
x
?boolean dominates(java.lang.Object x, java.lang.Object y)
x
preferred to a
method defined for y
?MultiFn reset()
MultiFn
, removing all defined
methods and preferences, and emptying the cache.MultiFn
.MultiFn addMethod(java.lang.Object x, clojure.lang.IFn f)
f
the defined method for dispatch value
x
.MultiFn
.java.lang.IllegalArgumentException
- if x
is not a legal dispatch value for this
MultiFn
.MultiFn removeMethod(java.lang.Object x)
x
, if there is one. If not, does nothing.MultiFn
.java.lang.IllegalArgumentException
- if x
is not a legal dispatch value for this
MultiFn
.MultiFn preferMethod(java.lang.Object x, java.lang.Object y)
x
to one defined for y
.MultiFn
.java.lang.IllegalArgumentException
- if x
or
y
are not legal dispatch values for this
MultiFn
.clojure.lang.IFn getMethod(java.lang.Object x)
x
, if any applicable methods are
defined.
To keep method lookup fast, does NOT check that dispatch
value is legal,
just returning null
in that case.null
if no applicable method is defined.clojure.lang.IPersistentMap getMethodTable()
clojure.lang.IPersistentMap
clojure.lang.IPersistentMap getPreferTable()
clojure.lang.IPersistentMap
Copyright © 2017. All rights reserved.