1. ホーム
  2. ruby

[解決済み] Rubyオプションのパラメータ

2022-08-21 13:45:17

質問

Rubyの関数をこのように定義すると、どのようになりますか?

def ldap_get ( base_dn, filter, scope=LDAP::LDAP_SCOPE_SUBTREE, attrs=nil )

最初の2つの引数と最後の引数だけを与えて呼び出すにはどうしたらよいでしょうか。なぜ、次のようなものがないのでしょうか?

ldap_get( base_dn, filter, , X)

は可能か、可能だとしたらどうすれば可能か?

どのように解決するのですか?

現在、rubyでは不可能です。メソッドに '空の' 属性を渡すことはできません。 一番近いのはnilを渡すことです。

ldap_get(base_dn, filter, nil, X)

ただし、これはLDAP::LDAP_SCOPE_SUBTREEではなく、スコープをnilに設定することになります。

あなたができることは、メソッド内でデフォルト値を設定することです。

def ldap_get(base_dn, filter, scope = nil, attrs = nil)
  scope ||= LDAP::LDAP_SCOPE_SUBTREE
  ... do something ...
end

さて、上記のようにメソッドを呼び出すと、期待通りの動作になります。