コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「Null条件演算子」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Cewbot (会話 | 投稿記録)
m Bot作業依頼: sourceタグをsyntaxhighlightタグに置換 (Category:非推奨のsourceタグを使用しているページ) - log
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>


<source lang="csharp">
<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>
<source lang=Groovy>
<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を考慮しないで表記することができる。
<source lang=objc>
<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>
<source lang=Swift>
<syntaxhighlight lang=Swift>
let name = article?.author?.name
let name = article?.author?.name
</syntaxhighlight>
</source>


optional subscript operator:
optional subscript operator:
<source lang=Swift>
<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>)という名称も与えられている。


<source lang=Ruby>
<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>


<source lang=Kotlin>
<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>


<source lang="perl6">
<syntaxhighlight lang="perl6">
my $name = $article.?author.?name;
my $name = $article.?author.?name;
</syntaxhighlight>
</source>


== 関連項目 ==
== 関連項目 ==

2020年7月5日 (日) 23:08時点における版

条件演算子 > Null条件演算子

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 operatoroptional chaining operatorsafe call operatornull-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;

関連項目

参考

  1. ^ 6.1. Safe navigation operator”. 2016年1月28日閲覧。
  2. ^ Optional Chaining”. 2016年1月28日閲覧。
  3. ^ Ruby 2.3.0 Released”. 2016年1月28日閲覧。
  4. ^ Null-conditional Operators (C# and Visual Basic)”. 2016年1月28日閲覧。
  5. ^ Null Safety”. 2016年1月28日閲覧。
  6. ^ Null-conditional Operators (C# and Visual Basic)”. 2016年1月28日閲覧。
  7. ^ 6.1. Safe navigation operator”. 2016年1月28日閲覧。
  8. ^ Optional Chaining”. 2016年1月28日閲覧。
  9. ^ NEWS for Ruby 2.3.0”. 2017年2月26日閲覧。
  10. ^ Ruby 2.3.0 Released” (英語). 2016年1月28日閲覧。
  11. ^ Null Safety”. 2016年1月28日閲覧。
  12. ^ Perl 6 Operators”. 2016年6月28日閲覧。