コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

出力引数というフレーズに関して2022年時点の意味をざっくり調べ、解釈を整理した

人によって解釈が違うので改めて調べてみた

出典

良いコード/悪いコードで学ぶ設計入門にて紹介されているフレーズ、出典元の書籍を引用させてもらうと以下の通り

出力として用いる引数を出力引数と呼びます。 - 良いコード/悪いコードで学ぶ設計入門69ページより 

出力引数の源流を調べる

出力引数というフレーズが多く見られるのはC#の記述。C#ではいわゆる参照渡しの一つのパターンとして out 修飾子を使って参照渡しを実現する方法を「出力引数」と呼ばれるケースがある。

C#では参照渡しの方法がいくつかあり、 ref修飾子を使うもの「参照引数」、in修飾子を使うものを「入力参照引数」と呼ばれるケースがあるため、参照渡しというフレーズだけだとどのパターンがあるかわからないので細分化されているものと思われる。

ただこの「出力引数」はインターネット上だと未確認飛行Cさんでの説明がベースになっているようで、Microsoftの和訳ドキュメントなどには登場しない。

出力引数とはどういうものなのか

C#における出力引数配下のようなもの(マイクロソフトのドキュメントより)

int initializeInMethod;
OutArgExample(out initializeInMethod);
Console.WriteLine(initializeInMethod);     // value is now 44

void OutArgExample(out int number)
{
    number = 44;
}

上記のように OutArgExampleのメソッドのなかで変数代入されたないようが、メソッドにセットした引数に影響を及ぼすことができる仕組み。

広義の出力引数を考える

C#においける出力引数とはout修飾子を利用した参照渡しのことであるが、他の言語には ref out inに相当する使い分けはないため「呼び出し元に干渉させる目的の関数の引数」と解釈すると他言語の場合もすんなり理解できると思われる。

関連リンク