[解決済み] Rubyの括弧の意味は何ですか?
2023-06-10 05:40:15
質問
Rubyでは、以下の違いは何ですか?
{}
と
[]
?
{}
は、コードブロックとハッシュの両方に使用されているようです。
は
[]
は配列のみですか?
ドキュメントがあまり明確ではありません。
どのように解決するのですか?
コンテキストに依存します。
-
単体のとき、または変数に代入しているとき。
[]
は配列を作成し{}
はハッシュを生成します。a = [1,2,3] # an array b = {1 => 2} # a hash
-
[]
はカスタムメソッドとしてオーバーライドでき、一般にハッシュから何かを取り出すために使われます(標準ライブラリでは、ハッシュから取り出すために[]
と同じハッシュ上のメソッドとして設定されています。fetch
)
を使うのと同じように、クラスメソッドとして使うという慣例もあります。static Create
メソッドを使うのと同じように、クラスメソッドとして使われます。a = {1 => 2} # create a hash for example puts a[1] # same as a.fetch(1), will print 2 Hash[1,2,3,4] # this is a custom class method which creates a new hash
参照:Ruby ハッシュのドキュメント を参照してください。
-
これはおそらく最も厄介なものです - 。
{}
もブロックのための構文ですが、引数の括弧の外側のメソッドに渡されたときだけです。ペレンなしでメソッドを呼び出すと、Ruby はカンマをどこに置いたかを見て、引数がどこで終わるかを判断します (ペレンをタイプしていれば、そこにあったはずの場所)。
1.upto(2) { puts 'hello' } # it's a block 1.upto 2 { puts 'hello' } # syntax error, ruby can't figure out where the function args end 1.upto 2, { puts 'hello' } # the comma means "argument", so ruby sees it as a hash - this won't work because puts 'hello' isn't a valid hash
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] .の違いは何ですか?(ドット)と$(ドルマーク)の違いは何ですか?
-
[解決済み] Rubyのincludeとrequireの違いは何ですか?
-
[解決済み】Rubyで配列を反復処理するための「正しい」方法は何ですか?
-
[解決済み] Rubyで「逆レンジ」を繰り返し処理できないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ...』の違い (ダブルドット) と '...' の違い?(トリプルドット)の違いについて教えてください。
-
[解決済み] ファイルのテキストをパターン検索し、指定された値で置き換える方法
-
[解決済み] Rubyで空のファイルを作成する:"touch "と同等?
-
[解決済み] Hash.new([]などのHashのデフォルト値を使用すると、予期せぬ動作(値が消える/変わる)が発生します。)
-
[解決済み] Rubyで2つの配列のマージとインターリーブ
-
[解決済み] ファイルに新しい行を追加しますか?
-
[解決済み] Rubyで再帰的にディレクトリを作成するには?
-
[解決済み] Rubyで親のクラス名を取得するには?
-
[解決済み] Mavericks と Xcode 5.1 で Ruby Gem install Json が失敗する - unknown argument: '-multiply_definedsuppress'.
-
[解決済み] 配列に要素がない場合、その要素を追加します。