次の方法で共有


シンボルと演算子のリファレンス

この記事には、F# で使用されるシンボルと演算子について説明する表が含まれており、それぞれの簡単な説明が記載されています。 一部のシンボルと演算子は、複数のロールで使用される場合、2 つ以上のエントリを持ちます。

コメント、コンパイラ ディレクティブ、属性シンボル

次の表では、コメント、コンパイラ ディレクティブ、属性に関連するシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
(*...*) 複数行にまたがるコメントを区切ります。
// 1 行のコメントの先頭を示します。
/// XML ドキュメント XML コメントを示します。
# コンパイラ ディレクティブ プリプロセッサまたはコンパイラ ディレクティブのプレフィックスを付けます。
[<...>] 属性 属性を区切ります。

文字列と識別子のシンボル

次の表では、文字列に関連するシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
" 文字列 テキスト文字列を区切ります。
@" 文字列 円記号やその他の文字を含む、逐語的なテキスト文字列を開始します。
""" 文字列 円記号、二重引用符、その他の文字を含む、三重引用符で囲まれたテキスト文字列を区切ります。
$" 挿入文字列 挿入文字列を開始します。
' リテラル 1 文字のリテラルを区切ります。
``...`` 言語キーワードなど、有効な識別子ではない識別子を区切ります。
\ 文字列 次の文字をエスケープします。文字リテラルと文字列リテラルで使用されます。

算術演算子

次の表では、算術演算子について説明します。

シンボルまたは演算子 リンクス 説明
+ 算術演算子
  • 二項演算子として使用する場合は、左右の辺を追加します。
  • 単項演算子として使用する場合は、正の数量を示します。 (正式には、符号が変更されていない同じ値が生成されます)。
- 算術演算子
  • 二項演算子として使用する場合は、左側から右側を減算します。
  • 単項演算子として使用する場合は、否定演算を実行します。
* 算術演算子

タプル

測定単位
  • 二項演算子として使用する場合は、左右の辺を乗算します。
  • 型では、タプル内のペアリングを示します。
  • メジャーの種類の単位で使用されます。
/ 算術演算子

測定単位
  • 左側 (分子) を右側 (分母) で除算します。
  • メジャーの種類の単位で使用されます。
% 算術演算子 剰余整数を計算します。
** 算術演算子 指数演算を計算します (x ** yは、yの累乗にxを意味します)。

比較演算子

次の表では、比較演算子について説明します。

シンボルまたは演算子 リンクス 説明
< 算術演算子 より小さい操作を計算します。
<> 算術演算子 左側が右辺と等しくない場合は true を返します。それ以外の場合は false を返します。
<= 算術演算子 左側が右辺以下の場合は true を返します。それ以外の場合は、 falseを返します。
= 算術演算子 左側が右辺と等しい場合は true を返します。それ以外の場合は、 falseを返します。
> 算術演算子 左側が右辺より大きい場合は true を返します。それ以外の場合は、 falseを返します。
>= 算術演算子 左側が右辺以上の場合は true を返します。それ以外の場合は、 falseを返します。

ブール演算子

次の表では、算術演算子とブール演算子の記号について説明します。

シンボルまたは演算子 リンクス 説明
&& ブール演算子 ブール値 AND 演算を計算します。
|| ブール演算子 ブール型 OR 演算を計算します。

ビットごとの演算子

次の表では、ビット演算子について説明します。

シンボルまたは演算子 リンクス 説明
&&& ビット演算子 ビットごとの AND 演算を計算します。
<<< ビット演算子 左側の数量のビットを、右側に指定されたビット数だけ左にシフトします。
>>> ビット演算子 左側の数量のビットを、右側に指定された位置の数だけ右にシフトします。
^^^ ビット演算子 ビットごとの排他的 OR 演算を計算します。
||| ビット演算子 ビットごとの OR 演算を計算します。
~~~ ビット演算子 ビットごとの NOT 演算を計算します。

関数のシンボルと演算子

次の表では、関数に関連する演算子とシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
-> 関数 関数式では、入力パターンを出力式から分離します。
|> 関数 左側の結果を右側の関数に渡します (前方パイプ演算子)。
||> ( ||> )<'T1,'T2,'U> 関数 左側の 2 つの引数のタプルを右側の関数に渡します。
|||> ( |||> )<'T1,'T2,'T3,'U> 関数 左側の 3 つの引数のタプルを右側の関数に渡します。
>> 関数 2 つの関数 (前方コンポジション演算子) を作成します。
<< 関数 2 つの関数を逆の順序で作成します。2 つ目は最初に実行されます (下位コンポジション演算子)。
<| 関数 右側の式の結果を左側の関数に渡します (後方パイプ演算子)。
<|| ( <|| )<'T1,'T2,'U> 関数 右側の 2 つの引数のタプルを左側の関数に渡します。
<||| ( <||| )<'T1,'T2,'T3,'U> 関数 右側の 3 つの引数のタプルを左側の関数に渡します。

型の記号と演算子

次の表では、型注釈と型テストに関連するシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
-> 関数 関数型では、引数と戻り値を区切り、シーケンス式の結果も生成します。
: 関数 型注釈では、パラメーターまたはメンバー名を型から分離します。
:> キャストと変換 型を階層内の上位の型に変換します。
:? match 式 値が指定した型 (サブタイプの場合を含む) と一致する場合は true を返します。それ以外の場合は、 false (型テスト演算子) を返します。
:?> キャストと変換 型を階層内の下位の型に変換します。
# 柔軟な型 型と共に使用する場合は、型またはその派生型のいずれかを参照する 柔軟な型を示します。
' 自動一般化 ジェネリック型パラメーターを示します。
<...> 自動一般化 型パラメーターを区切ります。
^ 静的に解決された型パラメーター

文字列
  • 実行時ではなくコンパイル時に解決する必要がある型パラメーターを指定します。
  • 文字列を連結します。
{} クラス または レコード type キーワードと共に使用する場合は、クラスまたはレコードを区切ります。 型は、メンバーが宣言されている場合、または class キーワードが使用されている場合のクラスです。 それ以外の場合はレコードです。
{||} 匿名レコード 匿名レコードを示します

メンバー参照およびスライス式で使用されるシンボル

次の表では、メンバー参照式とスライス式で使用される追加のシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
. メンバー メンバーにアクセスし、個々の名前を完全修飾名で区切ります。
[...] または .[...] 配列

インデックス付きプロパティ

スライス式
配列、文字列、またはコレクションにインデックスを作成するか、コレクションのスライスを取得します。

タプル、リスト、配列、ユニット式、およびパターンで使用されるシンボル

次の表では、タプル、リスト、単位値、配列に関連するシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
( ) ユニットの種類 単位型の単一の値を表します。
, タプル タプルまたは型パラメーターの要素を区切ります。
:: リスト

match 式
  • リストを作成します。 左側の要素は、右側のリストの先頭に追加されます。
  • リストの部分を区切るためにパターン マッチングで使用されます。
@ リスト 2 つのリストを連結します。
[...] リスト リストの要素を区切ります。
[|...|] 配列 配列の要素を区切ります。

命令式で使用されるシンボル

次の表では、式で使用されるその他のシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
<- 変数に値を割り当てます。
; 詳細構文

式を区切ります (主に詳細構文で使用されます)。 レコードのリストまたはフィールドの要素も区切ります。

シーケンスとコンピュテーション式で使用される追加のシンボル

次の表では、シーケンスとコンピュテーション式で使用されるその他シンボルについて説明します。

シンボルまたは演算子 リンクス 説明
-> シーケンス 式 (シーケンス式内) を生成します。は、 do yield キーワードに相当します。
! コンピュテーション式 キーワードの後に、計算式によって制御されるキーワードの動作の変更されたバージョンを示します。

一致パターンで使用される追加のシンボル

次の表では、パターン マッチングに関連するシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
-> match 式 一致式で使用されます。
& パターン マッチング
  • 他の言語と相互運用するときに使用するために、変更可能な値のアドレスを計算します。
  • AND パターンで使用されます。
_ match 式

ジェネリック
  • ワイルドカード パターンを示します。
  • 匿名ジェネリック パラメーターを指定します。
| match 式 個々の一致ケース、個々の判別共用体ケース、および列挙値を区切ります。

宣言で使用される追加のシンボル

次の表では、宣言に関連するシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
(|...|) アクティブ パターン アクティブなパターン名を区切ります。 バナナ クリップとも呼ばれます。
? パラメーターと引数 省略可能な引数を指定します。
~~ 演算子のオーバーロード 単項否定演算子のオーバーロードを宣言するために使用されます。
~- 演算子のオーバーロード 単項マイナス演算子のオーバーロードを宣言するために使用されます。
~+ 演算子のオーバーロード 単項プラス演算子のオーバーロードを宣言するために使用されます。

引用符で使用される追加の記号

次の表では、 コードクォートに関連するシンボルについて説明します。

シンボルまたは演算子 リンクス 説明
<@...@> コード引用符 型指定されたコード引用符を区切ります。
<@@...@@> コード引用符 型指定されていないコード引用符を区切ります。
% コード引用符 式を型指定されたコード引用符にスプライシングするために使用されます。
%% コード引用符 型指定されていないコード引用符に式をスプライシングするために使用されます。

動的検索演算子

次の表では、動的参照式で使用されるその他のシンボルについて説明します。 これらは通常、F# のルーチン プログラミングでは使用されず、F# コア ライブラリではこれらの演算子の実装は提供されません。

シンボルまたは演算子 リンクス 説明
? 動的メソッドとプロパティ呼び出しの演算子として使用されます。
? ... <- ... 動的プロパティを設定するための演算子として使用されます。

クエリの Null 許容演算子

Null 許容演算子 は、 クエリ式で使用するために定義されます。 次の表に、これらの演算子を示します。

シンボルまたは演算子 リンクス 説明
%? Null 許容演算子 右側が null 許容型の場合、整数剰余を計算します。
*? Null 許容演算子 右側が null 許容型の場合、左右の辺を乗算します。
+? Null 許容演算子 右側が null 許容型の場合に、左右の辺を追加します。
-? Null 許容演算子 右側が null 許容型の場合、左側から右辺を減算します。
/? Null 許容演算子 右側が null 許容型の場合、左側を右辺で除算します。
<? Null 許容演算子 右側が null 許容型の場合、より小さい演算を計算します。
<>? Null 許容演算子 右側が null 許容型の場合、"等しくない" 操作を計算します。
<=? Null 許容演算子 右側が null 許容型の場合、"以下" 演算を計算します。
=? Null 許容演算子 右側が null 許容型の場合、"等しい" 演算を計算します。
>? Null 許容演算子 右側が null 許容型の場合、"より大きい" 演算を計算します。
>=? Null 許容演算子 右側が null 許容型の場合、"より大きいか等しい" 演算を計算します。
?>=?>?<=?<?=?<>?+?-?*?/ Null 許容演算子 を指定しない対応する演算子に相当します。 プレフィックス。null 許容型が左側にあります。
>=?>?<=?<?=?<>?+?-?*?/? Null 許容演算子 を指定しない対応する演算子に相当します。 サフィックス。null 許容型が右側にあります。
?>=??>??<=??<??=??<>??+??-??*??/? Null 許容演算子 両側が null 許容型である、周囲の疑問符のない対応する演算子に相当します。

セル演算子の参照 (非推奨)

次の表では、 参照セルに関連するシンボルについて説明します。 これらの演算子を使用すると、F# 6 の時点でアドバイザリ メッセージが生成されます。 詳細については、 セル操作アドバイザリ メッセージの参照を参照してください。

シンボルまたは演算子 リンクス 説明
! セルの参照 参照セルを逆参照します。
:= セルの参照 参照セルに値を割り当てます。

演算子の優先順位

次の表は、F# での演算子とその他の式キーワードの優先順位を、優先順位が最も低いものから最も高いものまで順に示しています。 該当する場合は、結合規則も一覧表示されます。

オペレーター 結合規則
as はい
when はい
| (パイプ)
; はい
let 非関連付け
functionfunmatchtry 非関連付け
if 非関連付け
not はい
-> はい
:= はい
, 非関連付け
or||
&&&
:>:?> はい
< op>op=|op&op&$

( <<<>>>|||&&&を含む)
^ op

( ^^^を含む)
はい
:: はい
:? 連想ではない
- op+op これらのシンボルのインフィックスの使用に適用されます
* op/op%op
** op はい
f x (関数アプリケーション)

( lazy xassert xを含む)
| (パターンの一致) はい
プレフィックス演算子 (+op-op%%%&&&!op~op)
.
f(x)
f< 種類>

F# では、カスタム演算子のオーバーロードがサポートされています。 つまり、独自の演算子を定義できます。 前の表では、 op には、組み込みまたはユーザー定義の任意の有効な (空の可能性がある) 演算子文字シーケンスを指定できます。 したがって、このテーブルを使用して、カスタム演算子で目的の優先順位を実現するために使用する文字のシーケンスを決定できます。 コンパイラが優先順位を判断すると、先頭 . 文字は無視されます。

こちらも参照ください