Llamar a funciones integradas
- Los argumentos son posicionales y todos son obligatorios. Ninguna función integrada acepta argumentos opcionales, con nombre o de longitud variable. Los nombres de parámetro de la referencia son solo etiquetas.
- El número de argumentos se comprueba al compilar el script, así que un número incorrecto detiene el script antes de que se ejecute nada.
- Los tipos de los argumentos se comprueban al ejecutarse la llamada y deben coincidir exactamente,
con una sola ampliación. Un Integer donde se declara un Real se convierte en ese Real
(
MathSqrt(16)funciona), igual que en la aritmética. Un Real donde se declara un Integer, o un número donde se declara Text (UtilityPrint(42)), detiene la acción con Nombre: el argumento N tiene un tipo incorrecto. Los parámetros que se muestran como Any aceptan cualquier tipo. - Toda función integrada devuelve un valor. La mayoría de las acciones devuelven un Bool que significa “funcionó”, que puede ignorar o comprobar.
- Que algo falte es un resultado normal, no un error. Una ventana que no se encuentra es una
ventana nula. Pasar una ventana nula, o una ventana que se cerró, a una función integrada
Window*no hace nada y devuelvefalse,0o"", así que una cadena de llamadas de ventana sobre un identificador que no se encontró es segura. Las funciones integradas de contexto fuera de su disparador devuelven"",0,-1o una ventana nula. - Los resultados múltiples se enumeran y luego se leen por índice. Una llamada como
WindowGetAllTopLevel(),FolderEnumerateAll(…),StringSplit(…)oDisplayMonitorEnumeratedAll()devuelve un recuento, y la correspondiente…EnumeratedAt(i)/…PartAt(i)lee el elementoi, de0a recuento − 1. Cada familia tiene una caché por ejecución del script, y la siguiente llamada de enumeración de esa familia la reemplaza. - Un complemento puede aportar funciones integradas propias. Sus llamadas tienen el mismo aspecto. Si el complemento no está conectado cuando se compila el script, el script no se ejecuta y una notificación indica el motivo.
n = WindowGetAllTopLevel(); // recuento; también llena la caché de ventanas
for (i = 0; i < n; i = i + 1) {
w = WindowGetEnumeratedAt(i); // elemento i de esa caché
if (WindowGetVisible(w) && WindowGetTitle(w)) {
UtilityPrint(WindowGetExecutableName(w) + " - " + WindowGetTitle(w));
}
}