1

ROR Api Dock は常にメソッドの構文から始まります。私の例は link_to になります:

link_to(name = nil, options = nil, html_options = nil, &block) public

私の質問は、ほとんどすべてのコマンドで見られる"name=nil"orです。"something = nil"

2 番目の例: url_for(options = nil)

誰かがこれのポイントまたはそれが言おうとしていることを説明できますか..オプションがオプションであることを意味しますか?

どうしてそれが重要ですか..

4

1 に答える 1

1

たとえば JavaScript や PHP とは異なり、Ruby はメソッドが呼び出される引数の数を強制します。

def foo(a,b) 
end

したがって、foo引数なしで呼び出すと、Ruby は例外を発生させますArgumentError: wrong number of arguments (0 for 2)

デフォルト値を設定することにより、引数をオプションとしてマークします。

def foo(a = nil, b = nil) 
end

引数なしで呼び出しfooてもエラーが発生しなくなりました。

これは、リスト引数またはハッシュを取ることができるメソッドを作成するためによく使用されます。

def foo(a = nil, b = nil, opts = {})
  opts.each do |k,v|
    puts "#{k} : #{v}"
  end
end

Rubyがこれを行う理由については、言語設計上の決定です。多くの場合、単に間違った引数を渡すだけの単純なバグを追跡するのに役立ちます。これを強制しない言語では、メソッド内から型エラーまたは未定義エラーが発生し、根本原因を特定するのが難しくなります。私見マッツはこれを正しく理解しました。

于 2016-04-28T14:35:13.080 に答える