概要
プログラミングにおいて、voidとは値を返さないキーワードとして使われます。ただ、このvoidの扱いが言語によって異なるので今回はそのメモ書きです。
C#の場合
以下のようなコードを用意します。
var isHello = true;
var temp = isHello ? Console.WriteLine("Hello World!") : Console.WriteLine("Not Hello World!");
Console.WriteLine(temp);
これはビルドエラー「S0815: void を暗黙的に型指定された変数に割り当てることはできません」となります。Console.WriteLineはvoidの関数ですが、voidは型として扱うことができません。
JavaScriptの場合
以下のようなコードを用意します。
const isHello = true;
const temp = isHello ? console.log("Hello World!") : console.log("Not Hello World!");
console.log(temp);
これは実行され最後に「undefined」が出力されます。console.logはvoidの関数です。
違いなど
C#ではvoid (C# リファレンス)に書いてある通り、voidは型として使えないことが記載されています。静的型付け言語では基本、voidキーワードは特別な扱いとなります。なお、Kotlinのように、値を返さない関数型のUnitが用意されている言語もあります(Kotlin Unit の特徴をまとめてみた)。
JavaScriptではvoid 演算子にある通り、voidはundefinedを返します。他にPythonなど動的型付け言語では、同様の動作となっていると思われます。動的型付けのスクリプト言語は実行時にコードが評価されることから、ビルドでエラーとして落とすことができず、このような動作にしていると思われます。