ファットカンマ(Rubyではハッシュロケット、JavaScriptではファットアローとも呼ばれます)は、関数呼び出し(または定義)において、通常はカンマが使用される位置に現れる構文構造です。元々の用法はALGOL 60の「)文字:(」構造を指します。新しい用法は、一部のプログラミング言語に存在する「 」演算子を指します。これは主にPHP、Ruby、Perlプログラミング言語と関連付けられており、ハッシュを宣言するために使用されます。ハッシュ内のキーと値のペアをカンマではなくファットカンマでバインドすることは、Perlの優れた慣用例と考えられています。[ 1 ] CoffeeScriptとTypeScriptでは、ファットカンマはバインドされる関数を宣言するために使用されます。[ 2 ] [ 3 ]=>this
# Perl におけるファットコンマの典型的で慣用的な使用法my %hash = ( first_name => "Larry" , last_name => "Wall" , );微妙な点
ALGOL 60
ALGOLの「ファットコンマ」は意味的にコンマと同一です。[ 4 ]特に、文字列が使用されているかどうか、およびその内容は、関数の定義とその使用法の間で一致する必要はありません。以下は同等です
S(s-5, T, P) S(s-5) t: (T) p: (P) S(s-5) 温度: (T) 圧力: (P) Perl
「ファットコンマ」は、その左側の単語を文字列として解釈することを強制します。[ 5 ]
したがって、これは厳密な設定では実行時エラーが発生します (ベアワードは許可されません)。
%bad_example = ( bad_bareword , "それほどクールではない" );次のようなファットコンマの使用は合法かつ慣用的です。
%good_example = ( converted_to_string => "非常に僧侶っぽい" );これは、トークンがハッシュキーの代入において有効な引数converted_to_stringである文字列リテラルに変換されるためです。結果として、連想配列の名前と値のペアがより強調され、コードが読みやすくなります。 "converted_to_string"
PHP
PHPでは、ファットコンマは二重矢印と呼ばれ、配列を宣言する際にキーと値の関係を示すために使用されます。Perlとは異なり、二重矢印はそれより前にあるものを単なる単語として扱うのではなく、評価します。したがって、二重矢印で囲まれた定数は評価されます。
$array = array ( "name" => "PHP" 、"influences" => array ( "Perl" 、"C" 、"C++" 、"Java" 、"Tcl" ));Ruby
Rubyでは、ファットカンマはハッシュを作成するためのトークンです。Ruby 1.9では、シンボルをベアワードとして使用するための特別な構文が導入されました。[ 6 ] [ 7 ] Rubyでは、ファットカンマはハッシュロケットと呼ばれます。[ 7 ]
# 古い構文old_hash = { :name => 'Ruby' , :influences => [ 'Perl' , 'Python' , 'Smalltalk' ] }# 新しい構文 (Ruby >= 1.9) new_hash = { name : 'Ruby' , influences : [ 'Perl' , 'Python' , 'Smalltalk' ] }ラムダ関数として使用する
太い矢印はJavaScript、[ 8 ]やC# [ 9 ]で単一式の無名関数を 宣言するために使用されます。
参考文献
- ^コンウェイ、ダミアン(2005). 「4: 値と式」.アリソン・ランダル、タチアナ・アパンディ編. Perlベストプラクティス. オライリーメディア社. 66ページ. ISBN 0-596-00173-8
キー/値または名前/値のペアのリストを作成するときは、キーと対応する値を「ファットコンマ」(=>)で接続してください
- ^ Ashkenas, Jeremy. 「Coffeescript Documentation: grammar.coffee」 . 2012年1月4日時点のオリジナルよりアーカイブ。2011年12月11日閲覧。
- ^ 「ハンドブック – 関数」。
- ^ Peter Naur 他によるアルゴリズム言語 Algol 60 の改訂報告書。
- ^ perldoc.perl.org – perlop – カンマ演算子
- ^ Galero, Michael. 「Ruby 1.8でのRuby 1.9ハッシュ」 . 2008年4月3日閲覧。
- ^ a b Phil Nash. 「Ruby 1.9のハッシュ構文が気に入らない」 . Logical Friday . 2011年6月25日時点のオリジナルよりアーカイブ。 2011年7月13日閲覧。
- ^ 「JavaScript の太い矢印」。
- ^ 「シャープラムダ式をハッシュロケットにハッキングする」 2013年7月20日。