Operadores
10 min
las operaciones en el nivel más interno de los paréntesis se realizan primero la evaluación luego continúa según la precedencia de la siguiente tabla las operaciones con la misma precedencia son asociativas por la izquierda, excepto la exponenciación, que es asociativa por la derecha descripción símbolo(s) llamadas a funciones o paréntesis () operadores de arreglos , \[] exponenciación ^ negación –, + multiplicación, división, módulo , /, mod suma, resta +, comparación <, >, = , <>, <=, >= negación lógica not conjunción lógica and or lógico or operadores de cadenas los siguientes operadores funcionan con cadenas <, >, =, <>, <=, >=, + referencias a funciones los operadores = y <> funcionan sobre variables que contienen referencias a funciones y literales de función operadores lógicos y bit a bit los operadores y , or , y no se utilizan para comparaciones lógicas (boolean) si los argumentos de estos operadores son boolean a = 20 b = 20 c = 20 if a = c and not(b > 40) then print "success" por otro lado, si los argumentos de estos operadores son numéricos, realizarán operaciones bit a bit x = 1 and 2 ' x is zero y = true and false ' y is false cuando el operador y u or se usa para una operación lógica, solo se ejecuta la cantidad necesaria de la expresión por ejemplo, la primera instrucción a continuación imprimirá "true", mientras que la segunda instrucción provocará un error de ejecución (porque "invalid" no es un operando válido para or ) print true or invalid print false or invalid operador de punto el operador de punto " " se puede usar en cualquier objeto brightscript también tiene un significado especial cuando se usa en un objeto roassociativearray , así como en objetos roxmlelement y roxmllist cuando se usa en un objeto brightscript, hace referencia a una interfaz o método asociado con ese objeto en el siguiente ejemplo, ifint hace referencia a la interfaz y setint() hace referencia a un método que forma parte de esa interfaz i = createobject("roint") i ifint setint(5) i setint(5) cada método de objeto forma parte de una interfaz sin embargo, especificar la interfaz con el operador de punto " " es opcional si se omite la interfaz, como en la tercera línea del ejemplo anterior, se buscará el miembro especificado en cada interfaz que forme parte del objeto si existe un conflicto de nombres (es decir, un método con el mismo nombre aparece en dos interfaces), entonces se debe especificar la interfaz matrices asociativas cuando el operador de punto " " se usa en una matriz asociativa, es lo mismo que llamar a los métodos lookup() o addreplace() , que son funciones miembro del objeto roassociativearray docid 0ywikktpzfyswssiohdef aa = {} aa newkey = "the value" print aa newkey tenga en cuenta que los parámetros del operador de punto " " se establecen en tiempo de compilación; a diferencia de los métodos lookup() y addreplace() , no son dinámicos el operador de punto " " siempre distingue mayúsculas y minúsculas de forma no sensible por ejemplo, la instrucción aa newkey=55 creará la entrada "newkey" en la matriz asociativa para generar claves que distingan mayúsculas y minúsculas, instancie un objeto roassociativearray y use el método setmodecasesensitive() operadores de matriz y llamada a función el operador \[ ] se usa para acceder a una matriz (es decir, cualquier objeto brightscript que tenga una interfaz ifarray , como objetos roarray y rolist ) también se puede usar para acceder a una matriz asociativa el operador \[ ] acepta expresiones que se evalúan en tiempo de ejecución, mientras que el operador de punto " " acepta identificadores en tiempo de compilación el operador ( ) se puede usar para llamar a una función cuando se usa en un literal de función (o variable que contiene una referencia a una función), esa función será llamada el siguiente fragmento de código demuestra el uso de los operadores de matriz y de llamada a función aa = createobject("roassociativearray") aa\["newkey"] = "the value" print aa\["newkey"] array = createobject("roarray", 10, true) array\[2] = "two" print array\[2] fivevar = five print fivevar() array\[1] = fivevar print array\[1]\() ' print 5 function five() as integer return 5 end function dimensiones de matriz las matrices en brightscript son unidimensionales las matrices multidimensionales se implementan como matrices de matrices el operador \[ ] asignará automáticamente la multidimensionalidad por ejemplo, las siguientes dos expresiones de obtención son iguales dim array\[5,5,5] item = array\[1]\[2]\[3] item = array\[1,2,3] si una matriz multidimensional crece más allá de su tamaño sugerido, las nuevas entradas no se establecen automáticamente en roarray operador equals el operador = se usa tanto para asignación como para comparación a = 5 if a = 5 then print "a is 5" a diferencia del lenguaje c, brightscript no admite el uso del operador de asignación = dentro de una expresión esto tiene como objetivo eliminar una clase común de errores causados por la confusión entre asignación y comparación cuando ocurre una asignación, los tipos intrínsecos se copian, mientras que los objetos brightscript usan recuento de referencias