Referencia del lenguaje F#F# Language Reference

En esta sección es una referencia del lenguaje F #, un lenguaje de programación multiparadigma destinadas a .NET.This section is a reference to the F# language, a multi-paradigm programming language targeting .NET. El lenguaje F# admite los modelos de programación funcional, orientada a objetos e imperativa.The F# language supports functional, object-oriented and imperative programming models.

Tokens de F#F# Tokens

En la tabla siguiente se muestran temas de referencia que proporcionan tablas de palabras clave, símbolos y literales que se usan como tokens en F#.The following table shows reference topics that provide tables of keywords, symbols and literals used as tokens in F#.

TitleTitle DescripciónDescription
Referencia de palabras claveKeyword Reference Contiene vínculos a información sobre todas las palabras clave del lenguaje F#.Contains links to information about all F# language keywords.
Referencia de símbolos y operadoresSymbol and Operator Reference Contiene una tabla de símbolos y operadores que se usan en el lenguaje F#.Contains a table of symbols and operators that are used in the F# language.
LiteralesLiterals Describe la sintaxis de los valores literales en F# y cómo especificar la información de tipos para los literales de F#.Describes the syntax for literal values in F# and how to specify type information for F# literals.

Conceptos del lenguaje F#F# Language Concepts

En la tabla siguiente se muestran los temas de referencia disponibles que describen los conceptos del lenguaje.The following table shows reference topics available that describe language concepts.

TitleTitle DescripciónDescription
FuncionesFunctions Las funciones son la unidad fundamental de la ejecución del programa en cualquier lenguaje de programación.Functions are the fundamental unit of program execution in any programming language. Al igual que en otros lenguajes, una función de F# tiene un nombre, puede tener parámetros y tomar argumentos, y tiene un cuerpo.As in other languages, an F# function has a name, can have parameters and take arguments, and has a body. F# también admite construcciones de programación funcional como el tratamiento de las funciones como valores, el uso de funciones sin nombre en expresiones, la composición de funciones para crear nuevas funciones, funciones currificadas y la definición implícita de funciones mediante la aplicación parcial de argumentos de función.F# also supports functional programming constructs such as treating functions as values, using unnamed functions in expressions, composition of functions to form new functions, curried functions, and the implicit definition of functions by way of the partial application of function arguments.
Tipos en F#F# Types Describe los tipos que se usan en F#, cómo se les asigna un nombre y se describen.Describes the types that are used in F# and how F# types are named and described.
Inferencia de tiposType Inference Describe cómo el compilador de F# realiza la inferencia de los tipos de valor, variables, parámetros y valores devueltos.Describes how the F# compiler infers the types of values, variables, parameters and return values.
Generalización automáticaAutomatic Generalization Describe las construcciones genéricas en F#.Describes generic constructs in F#.
HerenciaInheritance Describe la herencia, que se usa para modelar la relación de identidad o los subtipos en la programación orientada a objetos.Describes inheritance, which is used to model the "is-a" relationship, or subtyping, in object-oriented programming.
MiembrosMembers Describe los miembros de los tipos de objeto de F#.Describes members of F# object types.
Parámetros y argumentosParameters and Arguments Describe la compatibilidad con lenguajes para definir parámetros y pasar argumentos a las funciones, los métodos y las propiedades.Describes language support for defining parameters and passing arguments to functions, methods, and properties. Incluye información sobre cómo pasar por referencia.It includes information about how to pass by reference.
Sobrecarga de operadoresOperator Overloading Describe cómo sobrecargar los operadores aritméticos de un tipo de clase o registro, así como en el nivel global.Describes how to overload arithmetic operators in a class or record type, and at the global level.
ConversionesCasting and Conversions Describe la compatibilidad con las conversiones de tipos en F#.Describes support for type conversions in F#.
Control de accesoAccess Control Describe el control de acceso en F#.Describes access control in F#. El control de acceso se refiere a declarar qué clientes podrán usar determinados elementos de programa, tales como tipos, métodos, funciones, etc.Access control means declaring what clients are able to use certain program elements, such as types, methods, functions and so on.
Coincidencia de patronesPattern Matching Describe los patrones, que son las reglas para transformar los datos de entrada que se usan en todo el lenguaje F# para extraer datos de comparación con un patrón, descomponer datos en sus partes constituyentes o extraer información de los datos de varias maneras.Describes patterns, which are rules for transforming input data that are used throughout the F# language to extract compare data with a pattern, decompose data into constituent parts, or extract information from data in various ways.
Patrones activosActive Patterns Describe los patrones activos.Describes active patterns. Los patrones activos permiten definir particiones con nombre que subdividen los datos de entrada.Active patterns enable you to define named partitions that subdivide input data. Se pueden usar patrones activos para descomponer los datos de manera personalizada para cada partición.You can use active patterns to decompose data in a customized manner for each partition.
AsercionesAssertions Describe la expresión assert, que es una característica de depuración que se puede usar para probar una expresión.Describes the assert expression, which is a debugging feature that you can use to test an expression. En caso de error en modo de depuración, una aserción genera un cuadro de diálogo de error del sistema.Upon failure in Debug mode, an assertion generates a system error dialog box.
Control de excepcionesException Handling Contiene información sobre la compatibilidad con el control de excepciones del lenguaje F#.Contains information about exception handling support in the F# language.
Atributosattributes Describe los atributos, que permiten aplicar metadatos a una construcción de programación.Describes attributes, which enable metadata to be applied to a programming construct.
Resource Management: The use Keyword (Administración de recursos: la palabra clave use)Resource Management: The use Keyword Describe las palabras clave use y using, que permiten controlar la inicialización y la liberación de los recursos.Describes the keywords use and using, which can control the initialization and release of resources
Espacios de nombresnamespaces Describe la compatibilidad con los espacios de nombres en F#.Describes namespace support in F#. Un espacio de nombres permite organizar el código en áreas de funcionalidad relacionada, lo que permite adjuntar un nombre a una agrupación de elementos de programa.A namespace lets you organize code into areas of related functionality by enabling you to attach a name to a grouping of program elements.
MódulosModules Describe los módulos.Describes modules. Un módulo de F# es una agrupación de código de F#, como valores, tipos y valores de función, en un programa de F#.An F# module is a grouping of F# code, such as values, types, and function values, in an F# program. Agrupar el código en módulos ayuda a mantener junto el código relacionado y a evitar conflictos de nombres en los programas.Grouping code in modules helps keep related code together and helps avoid name conflicts in your program.
Declaraciones de importación: la palabra clave openImport Declarations: The open Keyword Describe cómo funciona open.Describes how open works. Una declaración de importación especifica un módulo o un espacio de nombres a cuyos elementos se puede hacer referencia sin usar un nombre completo.An import declaration specifies a module or namespace whose elements you can reference without using a fully qualified name.
FirmasSignatures Describe las firmas y los archivos de firma.Describes signatures and signature files. Un archivo de signatura contiene información sobre las signaturas públicas de un conjunto de elementos de programa F# como, por ejemplo, tipos, espacios de nombres y módulos.A signature file contains information about the public signatures of a set of F# program elements, such as types, namespaces, and modules. Puede usarse para especificar la accesibilidad de estos elementos de programa.It can be used to specify the accessibility of these program elements.
Documentación de XMLXML Documentation Describe la compatibilidad con la generación de archivos de documentación para comentarios de documentación XML, también denominados comentarios de barra diagonal triple.Describes support for generating documentation files for XML doc comments, also known as triple slash comments. Se puede generar documentación a partir de los comentarios de código en F# exactamente igual que en los demás lenguajes .NET.You can produce documentation from code comments in F# just as in other .NET languages.
Sintaxis detalladaVerbose Syntax Describe la sintaxis para las construcciones de F# cuando no está habilitada la sintaxis ligera.Describes the syntax for F# constructs when lightweight syntax is not enabled. La directiva #light "off" en la parte superior del archivo de código indica que se trata de la sintaxis detallada.Verbose syntax is indicated by the #light "off" directive at the top of the code file.

Tipos en F#F# Types

En la tabla siguiente se muestran los temas de referencia disponibles que describen los tipos admitidos por el lenguaje F#.The following table shows reference topics available that describe types supported by the F# language.

TitleTitle DescripciónDescription
Valoresvalues Describe los valores, que son cantidades inmutables que tienen un tipo específico. Los valores pueden ser números enteros o de punto flotante, caracteres o texto, listas, secuencias, matrices, tuplas, uniones discriminadas, registros, tipos de clase o valores de función.Describes values, which are immutable quantities that have a specific type; values can be integral or floating point numbers, characters or text, lists, sequences, arrays, tuples, discriminated unions, records, class types, or function values.
Tipos básicosBasic Types Describe los tipos básicos fundamentales que se usan en el lenguaje F #.Describes the fundamental basic types that are used in the F# language. También se proporcionan los tipos de .NET correspondientes y los valores máximos y mínimos para cada tipo.It also provides the corresponding .NET types and the minimum and maximum values for each type.
Tipo unitUnit Type Describe el tipo unit, que indica la ausencia de un valor concreto. El tipo unit tiene solo un valor, que actúa como marcador de posición cuando no existe o no se necesita ningún otro valor.Describes the unit type, which is a type that indicates the absence of a specific value; the unit type has only a single value, which acts as a placeholder when no other value exists or is needed.
CadenasStrings Describe las cadenas en F#.Describes strings in F#. El tipo string representa texto inmutable como una secuencia de caracteres Unicode.The string type represents immutable text, as a sequence of Unicode characters. string es un alias de System.String en .NET Framework.string is an alias for System.String in the .NET Framework.
TuplasTuples Describe las tuplas, que son agrupaciones de valores sin nombre pero ordenados cuyos tipos pueden ser diferentes.Describes tuples, which are groupings of unnamed but ordered values of possibly different types.
Tipos de colección F#F# Collection Types Información general de los tipos de colección funcionales de F#, incluidos los tipos de matrices, listas, secuencias (seq), asignaciones y conjuntos.An overview of the F# functional collection types, including types for arrays, lists, sequences (seq), maps, and sets.
ListasLists Describe las listas.Describes lists. En F#, una lista es una serie ordenada e inmutable de elementos del mismo tipo.A list in F# is an ordered, immutable series of elements all of the same type.
OpcionesOptions Describe el tipo de opción.Describes the option type. En F#, se usa una opción cuando un valor puede o no existir.An option in F# is used when a value may or may not exist. Una opción tiene un tipo subyacente y puede contener un valor de ese tipo o no tener ningún valor.An option has an underlying type and may either hold a value of that type or it may not have a value.
SecuenciasSequences Describe las secuencias.Describes sequences. Una secuencia es una serie lógica de elementos del mismo tipo.A sequence is a logical series of elements all of one type. Los elementos individuales de la secuencia únicamente se calculan si es necesario, de modo que la representación pueda ser menor que lo que indica el recuento literal de elementos.Individual sequence elements are only computed if required, so the representation may be smaller than a literal element count indicates.
MatricesArrays Describe las matrices.Describes arrays. Las matrices son secuencias mutables de tamaño fijo y basadas en cero de elementos de datos consecutivos, todos del mismo tipo.Arrays are fixed-size, zero-based, mutable sequences of consecutive data elements, all of the same type.
RegistrosRecords Describe los registros.Describes records. Los registros representan agregados simples de valores con nombre, opcionalmente con miembros.Records represent simple aggregates of named values, optionally with members.
Uniones discriminadasDiscriminated Unions Describe las uniones discriminadas, que proporcionan compatibilidad con valores que pueden ser uno de los diversos casos con nombre, cada uno con valores y tipos posiblemente diferentes.Describes discriminated unions, which provides support for values which may be one of a variety of named cases, each with possibly different values and types.
EnumeracionesEnumerations Describe las enumeraciones, que son tipos que tienen un conjunto definido de valores con nombre.Describes enumerations are types that have a defined set of named values. Se pueden usar en lugar de los literales para que el código sea más fácil de leer y mantener.You can use them in place of literals to make code more readable and maintainable.
Celdas de referenciaReference Cells Describe las celdas de referencia, que son ubicaciones de almacenamiento que permiten crear variables mutables con semántica de referencias.Describes reference cells, which are storage locations that enable you to create mutable variables with reference semantics.
Abreviaturas de tipoType Abbreviations Describe las abreviaturas de tipo, que son nombres alternativos para los tipos.Describes type abbreviations, which are alternate names for types.
ClasesClasses Describe las clases, que son tipos que representan objetos que pueden tener propiedades, métodos y eventos.Describes classes, which are types that represent objects that can have properties, methods, and events.
EstructurasStructures Describe las estructuras, que son tipos de objeto compactos que pueden ser más eficaces que una clase para los tipos que tienen una pequeña cantidad de datos y un comportamiento simple.Describes structures, which are compact object types that can be more efficient than a class for types that have a small amount of data and simple behavior.
InterfacesInterfaces Describe las interfaces, que especifican conjuntos de miembros relacionados que otras clases implementan.Describes interfaces, which specify sets of related members that other classes implement.
Clases abstractasAbstract Classes Describe las clases abstractas, que son clases que dejan algunos o todos los miembros sin implementar para que las clases derivadas puedan proporcionar las implementaciones.Describes abstract classes, which are classes that leave some or all members unimplemented, so that implementations can be provided by derived classes.
Extensiones de tipoType Extensions Describe las extensiones de tipo, que permiten agregar nuevos miembros a un tipo de objeto definido previamente.Describes type extensions, which let you add new members to a previously defined object type.
Tipos flexiblesFlexible Types Describe los tipos flexibles.Describes flexible types. Una anotación de tipo flexible es una indicación de que un parámetro, una variable o un valor tiene un tipo que es compatible con el tipo especificado, de tal forma que la compatibilidad viene determinada por la posición en una jerarquía orientada a objetos de clases o interfaces.A flexible type annotation is an indication that a parameter, variable or value has a type that is compatible with type specified, where compatibility is determined by position in an object-oriented hierarchy of classes or interfaces.
DelegadosDelegates Describe los delegados, que representan una llamada de función como un objeto.Describes delegates, which represent a function call as an object.
Unidades de medidaUnits of Measure Describe las unidades de medida.Describes units of measure. En F#, los valores de punto flotante pueden tener unidades de medida asociadas, que se suelen usar para indicar la longitud, el volumen, la masa, etc.Floating point values in F# can have associated units of measure, which are typically used to indicate length, volume, mass, and so on.
Proveedores de tiposType Providers Describe los proveedores de tipos y proporciona vínculos a tutoriales sobre el uso de los proveedores de tipos integrados para tener acceso a bases de datos y servicios web.Describes type provides and provides links to walkthroughs on using the built-in type providers to access databases and web services.

Expresiones de F#F# Expressions

En la tabla siguiente se muestran los temas que describen las expresiones de F#.The following table lists topics that describe F# expressions.

TitleTitle DescripciónDescription
Expresiones condicionales: if...then...elseConditional Expressions: if...then...else Describe la expresión if...then...else, que ejecuta diferentes ramas de código y también se evalúa como un valor distinto según la expresión booleana especificada.Describes the if...then...else expression, which runs different branches of code and also evaluates to a different value depending on the Boolean expression given.
Expresiones de coincidenciaMatch Expressions Describe la expresión match, que proporciona control de rama basado en la comparación de una expresión con un conjunto de patrones.Describes the match expression, which provides branching control that is based on the comparison of an expression with a set of patterns.
Bucles: expresión for...toLoops: for...to Expression Describe la expresión for...to, que se usa para recorrer en iteración un bucle sobre un intervalo de valores de una variable de bucle.Describes the for...to expression, which is used to iterate in a loop over a range of values of a loop variable.
Bucles: expresión for...inLoops: for...in Expression Describe la expresión for...in, una construcción de bucle que se usa para recorrer en iteración las coincidencias de un patrón en una colección enumerable como una expresión de intervalo, una secuencia, una lista, una matriz u otra construcción que admita la enumeración.Describes the for...in expression, a looping construct that is used to iterate over the matches of a pattern in an enumerable collection such as a range expression, sequence, list, array, or other construct that supports enumeration.
Bucles: expresión while...doLoops: while...do Expression Describe la expresión while...do, que se usa para realizar la ejecución iterativa (en bucle) mientras se cumple una condición de prueba especificada.Describes the while...do expression, which is used to perform iterative execution (looping) while a specified test condition is true.
Expresiones de objetoObject Expressions Describe las expresiones de objeto, que son las que crean nuevas instancias de un tipo de objeto anónimo creado dinámicamente que se basa en un tipo base, una interfaz o un conjunto de interfaces existente.Describes object expressions, which are expressions that create new instances of a dynamically created, anonymous object type that is based on an existing base type, interface, or set of interfaces.
Expresiones con procesamiento diferidoLazy Computations Describe los cálculos diferidos, que son cálculos que no se evalúan de inmediato sino cuando realmente se necesita el resultado.Describes lazy computations, which are computations that are not evaluated immediately, but are instead evaluated when the result is actually needed.
Expresiones de cálculoComputation Expressions Describe las expresiones de cálculo en F#, que proporcionan una sintaxis adecuada para escribir cálculos que se pueden secuenciar y combinar mediante enlaces y construcciones de flujo de control.Describes computation expressions in F#, which provide a convenient syntax for writing computations that can be sequenced and combined using control flow constructs and bindings. Se pueden usar para proporcionar una sintaxis apropiada para los monads, una característica de programación funcional que se puede usar para administrar datos, controles y efectos secundarios en programas funcionales.They can be used to provide a convenient syntax for monads, a functional programming feature that can be used to manage data, control and side effects in functional programs. Uno de los tipos de expresión de cálculo, el flujo de trabajo asincrónico, proporciona compatibilidad con los cálculos asincrónicos y en paralelo.One type of computation expression, the asynchronous workflow, provides support for asynchronous and parallel computations. Para más información, vea Flujos de trabajo asincrónicos.For more information, see Asynchronous Workflows.
Flujos de trabajo asincrónicosAsynchronous Workflows Describe los flujos de trabajo asincrónicos, una característica del lenguaje que permite escribir código asincrónico de manera muy similar a cómo se escribe código sincrónico.Describes asynchronous workflows, a language feature that lets you write asynchronous code in a way that is very close to the way you would naturally write synchronous code.
Expresiones de código delimitadasCode Quotations Describe las expresiones de código delimitadas, una característica del lenguaje que permite generar expresiones de código de F# y trabajar con ellas mediante programación.Describes code quotations, a language feature that enables you to generate and work with F# code expressions programmatically.
Expresiones de consultaQuery Expressions Describe las expresiones de consulta, una característica del lenguaje que implementa LINQ para F# y permite escribir consultas para un origen de datos o una colección enumerable.Describes query expressions, a language feature that implements LINQ for F# and enables you to write queries against a data source or enumerable collection.

Construcciones admitidas por el compiladorCompiler-supported Constructs

En la tabla siguiente se muestran los temas que describen las construcciones especiales admitidas por el compilador.The following table lists topics that describe special compiler-supported constructs.

TemaTopic DescripciónDescription
Opciones del compiladorCompiler Options Describe las opciones de línea de comandos para el compilador de F#.Describes the command-line options for the F# compiler.
Directivas de compiladorCompiler Directives Describe las directivas de procesador y las directivas de compilador.Describes processor directives and compiler directives.
Identificadores de línea, archivo y ruta de acceso de origenSource Line, File, and Path Identifiers Describe los identificadores __LINE__, __SOURCE_DIRECTORY__ y __SOURCE_FILE__, que son valores integrados que permiten obtener acceso al número de línea y al nombre de directorio y archivo de origen en el código.Describes the identifiers __LINE__, __SOURCE_DIRECTORY__ and __SOURCE_FILE__, which are built-in values that enable you to access the source line number, directory and file name in your code.

Vea tambiénSee also