如果我定义一个Ruby函数,如下所示:

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

我怎么能称之为只提供前两个和最后一个参数?为什么不是

ldap_get( base_dn, filter, , X)

可能的,或者如果可能的话,怎么做?

推荐答案

这在ruby上目前是不可能的.不能将"空"属性传递给方法.你能得到的最接近的成绩是零分:

ldap_get(base_dn, filter, nil, X)

但是,这将把作用域设置为nil,而不是LDAP::LDAP_scope_子树.

您可以在方法中设置默认值:

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

现在,如果您像上面那样调用该方法,行为将与您预期的一样.

Ruby相关问答推荐

警告 Selenium [弃用] Manager#logs 已弃用.使用 Chrome::Driver#logs 代替

Ruby:如何在 vanilla ruby​​ 中使用有效支持日期?

如何返回此 OOP Ruby 代码最后一行中的变量?

创建线程安全的临时文件名

仅在模块中列出方法?

Sinatra 与 EventMachine WebSockets 一起工作是否成功?

如何声明 RSpec 中示例之间共享的变量?

为什么在 ruby​​ / rails / activerecord 中并不总是需要 self ?

在Ruby中第一个=符号之后获取子字符串

Unexpected Return (LocalJumpError)

我应该如何在哈希上使用 each_with_object?

Ruby 1.9:如何正确大写和小写多字节字符串?

Ruby全局匹配正则表达式?

如何只获取没有命名空间的类名

如何转换 Ruby 哈希,使其所有键都是符号?

错误数量的参数(1 代表 0)在 Ruby 中是什么意思?

你怎么说不等于在 Ruby 中?

如何在 Rails 3 迁移中描述枚举列?

什么是 Rakefile?

如何编写启动 tmux 会话的 shell 脚本,然后运行 ​​ruby​​ 脚本