「Null条件演算子」の版間の差分
Semi-Brace (会話 | 投稿記録) m Category:プログラミング言語の演算子を追加 (HotCat使用) |
|||
13行目: | 13行目: | ||
[[C Sharp|C#]]は6.0以降でnull条件演算子<code>?.</code>、<code>?[]</code>をサポートする:<ref>{{cite web |url=https://msdn.microsoft.com/en-us/library/dn986595.aspx |title=Null-conditional Operators (C# and Visual Basic) |accessdate=2016-01-28}}</ref> |
[[C Sharp|C#]]は6.0以降でnull条件演算子<code>?.</code>、<code>?[]</code>をサポートする:<ref>{{cite web |url=https://msdn.microsoft.com/en-us/library/dn986595.aspx |title=Null-conditional Operators (C# and Visual Basic) |accessdate=2016-01-28}}</ref> |
||
< |
<syntaxhighlight lang="csharp"> |
||
string name = articles?[0].author?.name; |
string name = articles?[0].author?.name; |
||
</syntaxhighlight> |
|||
</source> |
|||
===Groovy=== |
===Groovy=== |
||
safe navigation operator:<ref>{{cite web |url=http://www.groovy-lang.org/operators.html#_safe_navigation_operator |title=6.1. Safe navigation operator |accessdate=2016-01-28}}</ref> |
safe navigation operator:<ref>{{cite web |url=http://www.groovy-lang.org/operators.html#_safe_navigation_operator |title=6.1. Safe navigation operator |accessdate=2016-01-28}}</ref> |
||
< |
<syntaxhighlight lang=Groovy> |
||
def name = article?.author?.name |
def name = article?.author?.name |
||
</syntaxhighlight> |
|||
</source> |
|||
===Objective-C=== |
===Objective-C=== |
||
多くの場合で通常の<code>.</code>演算子をnullを考慮しないで表記することができる。 |
多くの場合で通常の<code>.</code>演算子をnullを考慮しないで表記することができる。 |
||
< |
<syntaxhighlight lang=objc> |
||
NSString *name = article.author[0].name; |
NSString *name = article.author[0].name; |
||
</syntaxhighlight> |
|||
</source> |
|||
===Swift=== |
===Swift=== |
||
optional chaining operator:<ref>{{cite web |url=https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html |title=Optional Chaining|accessdate=2016-01-28}}</ref> |
optional chaining operator:<ref>{{cite web |url=https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html |title=Optional Chaining|accessdate=2016-01-28}}</ref> |
||
< |
<syntaxhighlight lang=Swift> |
||
let name = article?.author?.name |
let name = article?.author?.name |
||
</syntaxhighlight> |
|||
</source> |
|||
optional subscript operator: |
optional subscript operator: |
||
< |
<syntaxhighlight lang=Swift> |
||
let author = articles?[0].author |
let author = articles?[0].author |
||
</syntaxhighlight> |
|||
</source> |
|||
===Ruby=== |
===Ruby=== |
||
Rubyは2.3.0よりsafe navigation operatorをサポートし、<code>&.</code>と表記する。'''ぼっち演算子'''<ref>{{Cite web|url=https://docs.ruby-lang.org/ja/latest/doc/news=2f2_3_0.html|title=NEWS for Ruby 2.3.0|accessdate=2017-02-26|language=日本語}}</ref> ('''lonely operator'''<ref>{{cite web |url=https://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/ |title=Ruby 2.3.0 Released |accessdate=2016-01-28|language=英語}}</ref>)という名称も与えられている。 |
Rubyは2.3.0よりsafe navigation operatorをサポートし、<code>&.</code>と表記する。'''ぼっち演算子'''<ref>{{Cite web|url=https://docs.ruby-lang.org/ja/latest/doc/news=2f2_3_0.html|title=NEWS for Ruby 2.3.0|accessdate=2017-02-26|language=日本語}}</ref> ('''lonely operator'''<ref>{{cite web |url=https://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/ |title=Ruby 2.3.0 Released |accessdate=2016-01-28|language=英語}}</ref>)という名称も与えられている。 |
||
< |
<syntaxhighlight lang=Ruby> |
||
name = article&.author&.name |
name = article&.author&.name |
||
</syntaxhighlight> |
|||
</source> |
|||
===Kotlin=== |
===Kotlin=== |
||
safe call operator:<ref>{{cite web |url=https://kotlinlang.org/docs/reference/null-safety.html |title=Null Safety |accessdate=2016-01-28}}</ref> |
safe call operator:<ref>{{cite web |url=https://kotlinlang.org/docs/reference/null-safety.html |title=Null Safety |accessdate=2016-01-28}}</ref> |
||
< |
<syntaxhighlight lang=Kotlin> |
||
val name = article?.author?.name |
val name = article?.author?.name |
||
</syntaxhighlight> |
|||
</source> |
|||
===Perl 6=== |
===Perl 6=== |
||
safe method call:<ref>{{cite web |url=https://docs.perl6.org/language/operators#postfix_.%3F |title=Perl 6 Operators |accessdate=2016-06-28}}</ref> |
safe method call:<ref>{{cite web |url=https://docs.perl6.org/language/operators#postfix_.%3F |title=Perl 6 Operators |accessdate=2016-06-28}}</ref> |
||
< |
<syntaxhighlight lang="perl6"> |
||
my $name = $article.?author.?name; |
my $name = $article.?author.?name; |
||
</syntaxhighlight> |
|||
</source> |
|||
== 関連項目 == |
== 関連項目 == |
2020年7月5日 (日) 23:08時点における版
Null条件演算子とは、第一項がヌルポインタ (null pointer)でない場合に第二項の結果を返し、そうでない場合にnullを返す演算子である。nullでないことのチェックを回避し、メソッドチェーンやプロパティチェーンを行うために用いられる。.
オペレータは第一項がnullの場合エラー(特にJavaの場合NullPointerException)が発生するが、Null条件演算子の場合はnullが検出されて以降のメソッドやフィールドの評価を行わずにnullをその結果として返す。Null条件演算子はGroovy,[1] Swift,[2] Ruby,[3] C#,[4] Kotlin,[5] CoffeeScriptなどで実装されている。Null条件演算子は言語によってsafe navigation operator、optional chaining operator、safe call operator、null-conditional operatorなど様々な名称で呼ばれ共通した名称はないが、英語圏においてはsafe navigation operatorが広く用いられる。
Null条件演算子を使用する主な利点はnullチェック時に過剰にネストが深くなる問題(pyramid of doom)を回避できることである。
例
C#
C#は6.0以降でnull条件演算子?.
、?[]
をサポートする:[6]
string name = articles?[0].author?.name;
Groovy
safe navigation operator:[7]
def name = article?.author?.name
Objective-C
多くの場合で通常の.
演算子をnullを考慮しないで表記することができる。
NSString *name = article.author[0].name;
Swift
optional chaining operator:[8]
let name = article?.author?.name
optional subscript operator:
let author = articles?[0].author
Ruby
Rubyは2.3.0よりsafe navigation operatorをサポートし、&.
と表記する。ぼっち演算子[9] (lonely operator[10])という名称も与えられている。
name = article&.author&.name
Kotlin
safe call operator:[11]
val name = article?.author?.name
Perl 6
safe method call:[12]
my $name = $article.?author.?name;
関連項目
参考
- ^ “6.1. Safe navigation operator”. 2016年1月28日閲覧。
- ^ “Optional Chaining”. 2016年1月28日閲覧。
- ^ “Ruby 2.3.0 Released”. 2016年1月28日閲覧。
- ^ “Null-conditional Operators (C# and Visual Basic)”. 2016年1月28日閲覧。
- ^ “Null Safety”. 2016年1月28日閲覧。
- ^ “Null-conditional Operators (C# and Visual Basic)”. 2016年1月28日閲覧。
- ^ “6.1. Safe navigation operator”. 2016年1月28日閲覧。
- ^ “Optional Chaining”. 2016年1月28日閲覧。
- ^ “NEWS for Ruby 2.3.0”. 2017年2月26日閲覧。
- ^ “Ruby 2.3.0 Released” (英語). 2016年1月28日閲覧。
- ^ “Null Safety”. 2016年1月28日閲覧。
- ^ “Perl 6 Operators”. 2016年6月28日閲覧。