[解決済み] Ruby 2の名前付きパラメータ
2022-03-01 11:04:52
質問
Ruby 2.0の名前付きパラメータがどのように機能するのか、完全に理解できていません。
def test(var1, var2, var3)
puts "#{var1} #{var2} #{var3}"
end
test(var3:"var3-new", var1: 1111, var2: 2222) #wrong number of arguments (1 for 3) (ArgumentError)
は、ハッシュのように扱われます。そして、とても面白いことに、Ruby 2.0で名前付きパラメータを使うには、私は しなければならない はデフォルト値を設定します。
def test(var1: "var1", var2: "var2", var3: "var3")
puts "#{var1} #{var2} #{var3}"
end
test(var3:"var3-new", var1: 1111, var2: 2222) # ok => 1111 2222 var3-new
これは、Rubyが以前から持っていたデフォルトのパラメータ値での動作と非常によく似ています。
def test(var1="var1", var2="var2", var3="var3")
puts "#{var1} #{var2} #{var3}"
end
test(var3:"var3-new", var1: 1111, var2: 2222) # ok but ... {:var3=>"var3-new", :var1=>1111, :var2=>2222} var2 var3
なぜそうなるのか、その仕組みはほぼわかっています。
でも、ちょっと気になるんです。 ねばならない 名前付きパラメータを使用する場合、パラメータにデフォルト値を使用するのですが?
そして、この2つの違いは何なのか、誰か教えてください。
def test1(var1="default value123")
#.......
end
def test1(var1:"default value123")
#.......
end
解決方法は?
最後に掲載した例は誤解を招きます。動作が似ていることに反対です。最後の例では、引数のハッシュを最初のオプションのパラメータとして渡していますが、これは別物です!
デフォルト値を持ちたくない場合は
nil
.
良い書き込みを読みたい方は、"をご覧ください。 Ruby 2 キーワード引数 となります。
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rubyのclass << selfイディオム
-
[解決済み] Rubyで「例外 => e」を救済するのはなぜ悪いスタイルなのですか?
最新
-
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で新しい文字列を作成せずに文字列をトリミングする標準的な方法は何ですか?
-
[解決済み] Aptana Studio 3.6をWindowsにインストールできない
-
[解決済み] Rubyのフィボナッチ数列(再帰)
-
[解決済み] nil:NilClass のための未定義のメソッド `+' (NoMethodError)
-
[解決済み] Ruby Detect方式
-
[解決済み] Ruby on railsで改行せずにコンソールに "puts "を使用するにはどうすればよいですか?
-
[解決済み] 配列をアルファベット順に並べるには?
-
[解決済み] Gem::Specification.reset中に未解決のスペックがある。
-
[解決済み] Rubyでリフレクション?
-
[解決済み] OpenSSL AES-256-CBC 暗号化エラー、"間違った最終ブロック長" Ruby