Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20 R7
Value type

Value type 


 

Value type ( expresion ) -> Resultado 
Parámetro Tipo   Descripción
expresion  Expresión in Expresión cuyo valor resultante debe ser probado
Resultado  Entero largo in Número de tipo de dato

El comando Value type devuelve el tipo del valor resultante de la evaluación de la expresion que pasó como parámetro.

El comando devuelve un valor numérico que se puede comparar con una de las siguientes constantes del tema Tipos de campos y variables:

Constante Tipo Valor
_o_Is float Entero largo 35
Is BLOB Entero largo 30
Is Boolean Entero largo 6
Is collection Entero largo 42
Is date Entero largo 4
Is longint Entero largo 9
Is null Entero largo 255
Is object Entero largo 38
Is picture Entero largo 3
Is pointer Entero largo 23
Is real Entero largo 1
Is text Entero largo 2
Is time Entero largo 11
Is undefined Entero largo 5
Is variant Entero largo 12
Object array Entero largo 39

Este comando está designado para devolver el tipo de una expresión escalar, por ejemplo el valor almacenado o devuelto por el parámetro expresion. En particular, se puede aplicar a las siguientes expresiones 4D:

  • Propiedades del objetos (emp.name),
  • Elementos de la colección (myCol[5]).

Nota: las propiedades numéricas de los objetos siempre se consideran valores reales:

 C_OBJECT($o)
 $o:=New object("value";42)
 $vType:=Value type($o.value) //$vType=Is real

Value type se puede aplicar a cualquier expresión 4D válida, incluyendo campos, variables y parámetros. En este caso, a diferencia del comando Type, Value type devuelve el tipo internal del valor resultante de la evaluación de la expresion y no su tipo declarado. Dado que el lenguaje 4D convierte algunos tipos de valores internamente, el resultado de Value type puede diferir del tipo declarado. Por ejemplo, 4D convierte internamente los valores de campo de tipo "Entero 64 bits". Esto da los siguientes resultados:

 $vType1:=Type([myTable]Long64field) //$vType=Is integer 64 bits
 $vType2:=Value type([myTable]Long64field) //$vType=Is real (en modo interpretado)

Otras diferencias están relacionadas con arrays (la evaluación de una array devuelve el índice de elementos actual) y el modo compilado. En la tabla siguiente se enumeran estas diferencias:

Tipo declaradoType resultadoValue type resultado (interpretado)Value type resultado (compilado)Comentario
ARRAY TEXT($t;1)Text arrayIs realIs longint$t contiene el índice del elemento actual, que es un número
Campo AlfaIs alpha fieldIs textIs text4D maneja internamente todas las cadenas como textos
Campo EnteroIs integerIs realIs longintPor motivos de optimización, en modo interpretado todos los valores numéricos se consideran reales y...
Campo Entero largoIs longintIs realIs longint... en modo compilado, todos los valores enteros se consideran enteros largos (*)
Campo Entero 64 bitsIs integer 64 bitsIs realIs longint

(*) Si desea escribir una prueba para un valor de tipo numérico válido para los modos compilado e interpretado, puede considerar el uso de un código como:

 If(Value type($myValue)=Is longint)|(Value type($myValue)=Is real)

Nota de compatibilidad: a partir de 4D v16 R6, las fechas se almacenan en las propiedades objeto, ya sea con el tipo fecha o como texto en formato de fecha ISO. Para más información, consulte el selector Dates inside objects del comando SET DATABASE PARAMETER.

Usted desea manejar los varios tipos posibles de un valor propiedad objeto:

 Case of
    :(Value type($o.value)=Is real)
  //handle a numeric value
    :(Value type($o.value)=Is text)
  //handle a text
    :(Value type($o.value)=Is object)
  //handle a sub-object
       ...
 End case

Desea obtener la suma de todos los valores numéricos en una colección:

 C_COLLECTION($col)
 C_REAL($sum)
 $col:=New collection("Hello";20;"World2";15;50;Current date;True;10)
 For($i;0;$col.length-1) //-1 since collections start at 0
    If(Value type($col[$i])=Is real)
       $sum:=$sum+$col[$i]
    End if
 End for
 ALERT(String($sum)) //95



Ver también 

OB Get type
Type

 
PROPIEDADES 

Producto: 4D
Tema: Lenguaje
Número 1509

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v16 R4

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v20 R7)