Null
条件演算子とは、プログラミング言語において、ある値がnull(ヌルポインタまたはヌル参照)でない場合にのみ、後続の処理を実行する演算子です。もし値がnullである場合は、その時点で処理を中断し、結果としてnullを返します。
この演算子の主な目的は、nullチェックの記述を省略し、より安全にメソッドチェーンやプロパティチェーンを行うことです。通常のメンバーアクセス演算子(例:`.`)では、対象がnullの場合にエラーが発生しますが、Null
条件演算子を使用すると、このエラーを回避できます。
様々な名称
Null
条件演算子は、言語によって異なる名称で呼ばれることがあります。例えば、
safe navigation operator
optional chaining operator
safe call operator
といった名称が用いられます。ただし、英語圏では `safe navigation operator` が広く使われています。
Null条件演算子の最大の利点は、nullチェックの記述を簡略化し、コードの可読性を向上させることです。従来のnullチェックでは、ネストが深くなりやすい(いわゆる「ピラミッド・オブ・ドゥーム」)という問題がありましたが、Null条件演算子を使うことで、これを回避できます。
各言語での実装例
以下に、いくつかのプログラミング言語におけるNull条件演算子の実装例を示します。
C#
C#では、バージョン6.0以降で `?.` および `?[]` という記法でNull条件演算子がサポートされています。
csharp
articles?.FirstOrDefault()?.Author?.Name
VB.NET
VB.NETでは、バージョン14以降で `?.` および `?()` という記法でNull条件演算子がサポートされています。
vb.net
articles?.FirstOrDefault()?.Author?.Name
Groovy
Groovyでは、safe navigation operatorとして `?.` が利用できます。
groovy
articles?.find { it.author }?.author?.name
Objective-C
Objective-Cでは、通常の`.`演算子をnullを考慮せずに使用できる場合があります。
Swift
Swiftでは、optional chaining operatorとして `?.` が、optional subscript operatorとして `?[]` が利用できます。
swift
articles?.first?.author?.name
Rubyでは、バージョン2.3.0以降でsafe navigation operatorとして `&.` が利用できます。この演算子は「ぼっち演算子」とも呼ばれます。
ruby
articles&.first&.author&.name
Kotlinでは、safe call operatorとして `?.` が利用できます。
kotlin
articles?.firstOrNull()?.author?.name
Perl 6
Perl 6では、safe method callとして `?.` が利用できます。
JavaScriptでは、ECMAScript 2020以降でoptional chaining operatorとして `?.` がサポートされています。
javascript
articles?.at(0)?.author?.name
コード例の前提条件
上記のコード例では、以下の変数を前提としています。
`articles`: `Article` クラス型の配列
`Article` クラス: `Person` クラス型のプロパティまたはフィールドとして `Author` または `author` を持つ
`Person` クラス: 文字列型のプロパティまたはフィールドとして `Name` または `name` を持つ
関連項目
条件演算子 (`? :`)
Null合体演算子 (`??` など)
* エルビス演算子 (`?:`)
Null
条件演算子は、安全なプログラミングを行う上で非常に重要なツールです。適切に活用することで、より堅牢で可読性の高いコードを書くことができるでしょう。