Objetos e interfaces
7 min
objetos brightscript aunque brightscript funciona independientemente de su arquitectura de objetos y biblioteca, ambas son necesarias para programar aplicaciones brightscript la api de una plataforma brightsign se expone a brightscript como objetos de biblioteca las plataformas deben registrar un nuevo objeto brightscript para exponer alguna parte de su api los objetos brightscript están escritos en c (o un lenguaje compatible como c++) y son resistentes a los cambios de versión los scripts generalmente son compatibles con versiones anteriores de objetos que han sido revisados los objetos brightscript mantienen un recuento de referencias; se eliminan cuando el recuento de referencias llega a cero objetos wrapper todos los tipos intrínsecos de brightscript (boolean, integer, float, double, string e invalid) tienen equivalentes de objeto si uno de estos tipos intrínsecos se pasa a una función que espera un objeto, se creará el objeto wrapper apropiado, se le asignará el valor correcto y se pasará a la función (esto a veces se denomina "autoboxing") esto permite, por ejemplo, que los objetos roarray almacenen valores (por ejemplo, enteros y cadenas) además de objetos cualquier expresión que espere uno de los tipos anteriores también funcionará con el objeto wrapper correspondiente roboolean , roint , rofloat , rodouble , rostring los siguientes ejemplos ilustran cómo funcionan los objetos wrapper print 5 tostr()+"th" print "5" toint()+5 5 tostr() 'this will cause an error instead, use the following ( 5) tostr() if type(5 tostr())<> "string" then stop if ( 5) tostr()<>" 5" then stop if (1+2) tostr()<>"3" then stop i= 55 if i tostr()<>" 55" then stop if 100% tostr()<>"100" then stop if ( 100%) tostr()<>" 100" then stop y%=10 if y% tostr()<>"10" then stop if "5" toint()<>5 or type("5" toint())<>"integer" then stop if "5" tofloat()<>5 0 or type("5" tofloat())<>"float" then stop fs=" 1 1" if fs tofloat()<> 1 1 or fs toint()<> 1 then stop if "01234567" left(3)<>"012" then stop if "01234567" right(4)<>"4567" then stop if "01234567" mid(3)<>"34567" then stop if "01234567" mid(3,1)<>"3" then stop if "01234567" instr("56")<>5 then stop if "01234567" instr(6,"56")<> 1 then stop if "01234567" instr(0,"0")<>0 then stop interfaces las interfaces en brightscript funcionan de manera similar a java o microsoft com una interfaz es un conjunto conocido de funciones miembro que implementan un conjunto de lógica en algunos aspectos, una interfaz es similar a una clase base virtual en c++; cualquier script o programa compatible con c puede usar una interfaz de objeto sin importar el tipo de objeto al que pertenece por ejemplo, el objeto roserialport , que controla la interfaz serial estándar, implementa tres interfaces ifserialcontrol , ifstreamreceive , e ifstreamsend dado que la instrucción print envía su salida a cualquier objeto que tenga una interfaz ifstreamsend , funciona con el objeto roserialport , así como con cualquier otro objeto con la interfaz ifstreamsend integración de instrucciones e interfaces algunas instrucciones brightscript tienen funcionalidad integrada con interfaces esta sección describe cómo usar instrucciones con interfaces print usar la instrucción imprimir en el siguiente formato imprimirá en un objeto que tenga una interfaz ifstreamsend , incluidos los objetos rotextfield y roserialport port = createobject("roserialport",0,115200) print port, "string" si la expresión que se imprime se evalúa como un objeto con una interfaz ifenum , la instrucción imprimir imprimirá cada elemento que pueda enumerarse además de imprimir los valores de tipos intrínsecos, la instrucción imprimir también puede usarse para imprimir cualquier objeto que exponga una de las siguientes interfaces ifstring , ifint , iffloat wait la instrucción espera puede funcionar junto con cualquier objeto que tenga una interfaz ifmessageport análisis de expresiones cualquier expresión que espere un determinado tipo de variable —incluyendo integer, float, double, boolean o string— puede aceptar un objeto con una interfaz equivalente de ese tipo ifint , iffloat , ifdouble , ifboolean , ifstring operador de array el operador de array \[ ] funciona con cualquier objeto que tenga una interfaz ifarray o ifassociativearray , incluidos arrays, arrays asociativos y listas operador de acceso a miembros el operador de acceso a miembros (es decir, operador de punto docid\ x0lwrddqbct3aztlesb1 ) funciona con cualquier objeto que tenga una interfaz ifassociativearray también funciona con cualquier objeto cuando se usa para llamar a una función miembro (es decir, un método) también tiene un significado especial cuando se usa en un objeto roxmlelement o roxmllist