F# の型F# Types

このトピックでは、F # で使用される型と、F # の型の名前と説明について説明します。This topic describes the types that are used in F# and how F# types are named and described.

F # の型の概要Summary of F# Types

型によっては、ブール型、整数型、浮動小数点型など、さまざまなサイズの プリミティブ型と見なされるものがあり bool ます。これには、バイトと文字の型が含まれます。Some types are considered primitive types, such as the Boolean type bool and integral and floating point types of various sizes, which include types for bytes and characters. これらの型については、「 プリミティブ型」を参照してください。These types are described in Primitive Types.

言語に組み込まれているその他の型には、組、リスト、配列、シーケンス、レコード、および判別共用体が含まれます。Other types that are built into the language include tuples, lists, arrays, sequences, records, and discriminated unions. 他の .NET 言語の経験があり、F # について学習している場合は、これらの各型についてのトピックを読む必要があります。If you have experience with other .NET languages and are learning F#, you should read the topics for each of these types. これらの F # 固有の型は、関数型プログラミング言語に共通のプログラミングスタイルをサポートしています。These F#-specific types support styles of programming that are common to functional programming languages. これらの型の多くは、これらの型に対する一般的な操作をサポートする F # ライブラリ内のモジュールに関連付けられています。Many of these types have associated modules in the F# library that support common operations on these types.

関数の型には、パラメーターの型と戻り値の型に関する情報が含まれています。The type of a function includes information about the parameter types and return type.

.NET Framework は、オブジェクト型、インターフェイス型、デリゲート型などのソースです。The .NET Framework is the source of object types, interface types, delegate types, and others. 他の .NET 言語の場合と同様に、独自のオブジェクトの種類を定義できます。You can define your own object types just as you can in any other .NET language.

また、F # コードでは、型の別名と いう名前のエイリアスを定義できます。エイリアスは、型の代替名です。Also, F# code can define aliases, which are named type abbreviations, that are alternative names for types. 型が将来変更される可能性があり、型に依存するコードを変更しないようにする場合は、型の省略形を使用できます。You might use type abbreviations when the type might change in the future and you want to avoid changing the code that depends on the type. または、コードを読みやすく理解しやすい型のフレンドリ名として、型略称を使用することもできます。Or, you might use a type abbreviation as a friendly name for a type that can make code easier to read and understand.

F # は、関数型プログラミングを念頭に置いて設計された有用なコレクション型を提供します。F# provides useful collection types that are designed with functional programming in mind. これらのコレクション型を使用すると、スタイルでより機能的に機能するコードを記述するのに役立ちます。Using these collection types helps you write code that is more functional in style. 詳細については、「 F # コレクション型」を参照してください。For more information, see F# Collection Types.

型の構文Syntax for Types

F # コードでは、多くの場合、型の名前を記述する必要があります。In F# code, you often have to write out the names of types. すべての型には構文形式があり、型の注釈、抽象メソッドの宣言、デリゲート宣言、シグネチャ、およびその他の構成体でこれらの構文形式を使用します。Every type has a syntactic form, and you use these syntactic forms in type annotations, abstract method declarations, delegate declarations, signatures, and other constructs. インタープリターで新しいプログラムコンストラクトを宣言するたびに、インタープリターはコンストラクトの名前とその型の構文を出力します。Whenever you declare a new program construct in the interpreter, the interpreter prints the name of the construct and the syntax for its type. この構文は、ユーザー定義型の識別子、またはやのような組み込み識別子である場合も int あり string ますが、より複雑な型の場合は、構文がより複雑になります。This syntax might be just an identifier for a user-defined type or a built-in identifier such as for int or string, but for more complex types, the syntax is more complex.

次の表は、F # 型の型構文の側面を示しています。The following table shows aspects of the type syntax for F# types.

TypeType 型の構文Type syntax Examples
プリミティブ型primitive type 型名type-name int

float

string
集計の種類 (クラス、構造体、共用体、レコード、列挙型など)aggregate type (class, structure, union, record, enum, and so on) 型名type-name System.DateTime

Color
型略称type abbreviation 型略称-名前type-abbreviation-name bigint
完全修飾型fully qualified type 名前空間。型名namespaces.type-name

またはor

modules. type-namemodules.type-name

またはor

名前空間. modules. タイプ名namespaces.modules.type-name
System.IO.StreamWriter
arrayarray 型名[] またはtype-name[] or

型名の 配列type-name array
int[]

array<int>

int array
2次元配列two-dimensional array 型名[,]type-name[,] int[,]

float[,]
3次元配列three-dimensional array 型名[,,]type-name[,,] float[,,]
tupletuple 「-name1 * タイプ-name2 ...」と入力します。type-name1 * type-name2 ... たとえば、次の (1,'b',3) 型があるとします。 int * char * intFor example, (1,'b',3) has type int * char * int
ジェネリック型generic type 型パラメーター汎用型名type-parameter generic-type-name

またはor

汎用型名 <型パラメーターリスト>generic-type-name<type-parameter-list>
'a list

list<'a>

Dictionary<'key, 'value>
構築された型 (特定の型引数が指定されたジェネリック型)constructed type (a generic type that has a specific type argument supplied) 型引数汎用型名type-argument generic-type-name

またはor

汎用型名 <型引数リスト>generic-type-name<type-argument-list>
int option

string list

int ref

option<int>

list<string>

ref<int>

Dictionary<int, string>
1つのパラメーターを持つ関数型function type that has a single parameter パラメーター-type1 - >戻り値の型parameter-type1 -> return-type を受け取り、 int 型のを返す関数 string``int -> stringA function that takes an int and returns a string has type int -> string
複数のパラメーターを持つ関数の型function type that has multiple parameters パラメーター-type1 - >パラメーター-'-' - >...- > 戻り値の型parameter-type1 -> parameter-type2 -> ... -> return-type intおよびを受け取り、 float 型のを返す関数 string``int -> float -> stringA function that takes an int and a float and returns a string has type int -> float -> string
パラメーターとしての高階関数higher order function as a parameter (関数型)(function-type) List.map 存在する型 ('a -> 'b) -> 'a list -> 'b listList.map has type ('a -> 'b) -> 'a list -> 'b list
delegatedelegate 関数型のデリゲートdelegate of function-type delegate of unit -> int
柔軟な型flexible type #型名#type-name #System.Windows.Forms.Control

#seq<int>
トピックTopic 説明Description
プリミティブ型Primitive Types 整数型、ブール型、および文字型など、組み込みの単純型について説明します。Describes built-in simple types such as integral types, the Boolean type, and character types.
Unit 型Unit Type 型について説明します。この型は、 unit 1 つの値を持ち、() によって示されます。これは、 void C# では、Visual Basic ではに相当し Nothing ます。Describes the unit type, a type that has one value and that is indicated by (); equivalent to void in C# and Nothing in Visual Basic.
タプルTuples 組の型 (ペア、3要素、となどでグループ化された任意の型の関連する値で構成される型) について説明します。Describes the tuple type, a type that consists of associated values of any type grouped in pairs, triples, quadruples, and so on.
OptionsOptions オプションの種類について説明します。この型は、値を持つか空にすることができます。Describes the option type, a type that may either have a value or be empty.
リストLists 順序付けられ、変更できない一連の要素をすべて同じ型のリストについて説明します。Describes lists, which are ordered, immutable series of elements all of the same type.
配列Arrays 配列について説明します。配列は、連続したメモリブロックを占有し、固定サイズの、同じ型の変更可能な要素の順序付きセットです。Describes arrays, which are ordered sets of mutable elements of the same type that occupy a contiguous block of memory and are of fixed size.
シーケンスSequences 一連の値を表すシーケンス型について説明します。個々の値は、必要な場合にのみ計算されます。Describes the sequence type, which represents a logical series of values; individual values are computed only as necessary.
レコードRecords レコードの種類 (名前付きの値の小さな集計) について説明します。Describes the record type, a small aggregate of named values.
判別共用体Discriminated Unions 判別共用体型を記述します。この型は、値が一連の可能な型のいずれかになることができます。Describes the discriminated union type, a type whose values can be any one of a set of possible types.
関数Functions 関数の値について説明します。Describes function values.
クラスClasses .NET 参照型に対応するオブジェクト型であるクラス型について説明します。Describes the class type, an object type that corresponds to a .NET reference type. クラス型には、メンバー、プロパティ、実装されたインターフェイス、および基本型を含めることができます。Class types can contain members, properties, implemented interfaces, and a base type.
構造体Structures struct.Net 値型に対応するオブジェクト型である型について説明します。Describes the struct type, an object type that corresponds to a .NET value type. 通常、この struct 型はデータの小さな集計を表します。The struct type usually represents a small aggregate of data.
インターフェイスInterfaces インターフェイス型について説明します。これは、特定の機能を提供し、データを含まないメンバーのセットを表す型です。Describes interface types, which are types that represent a set of members that provide certain functionality but that contain no data. インターフェイス型は、役に立つオブジェクト型によって実装される必要があります。An interface type must be implemented by an object type to be useful.
デリゲートDelegates 関数をオブジェクトとして表すデリゲート型について説明します。Describes the delegate type, which represents a function as an object.
列挙型Enumerations 名前付きの値のセットに値が属する列挙型について説明します。Describes enumeration types, whose values belong to a set of named values.
属性Attributes 別の型のメタデータを指定するために使用される属性について説明します。Describes attributes, which are used to specify metadata for another type.
例外の種類Exception Types エラー情報を指定する例外について説明します。Describes exceptions, which specify error information.