我来这个:
(defn string->integer [str & [base]] (Integer/parseInt str (if (nil? base) 10 base))) (string->integer "10") (string->integer "FF" 16)
但它必须是一个更好的方法来做到这一点.
如果我定义这样的Ruby函数:
def ldap_get ( base_dn, filter, scope=LDAP::LDAP_SCOPE_SUBTREE, attrs=nil )
Run Code Online (Sandbox Code Playgroud)
我怎么称它只提供前2个和最后一个args?为什么不是这样的
ldap_get( base_dn, filter, , X)
Run Code Online (Sandbox Code Playgroud)
可能的,或者如果可能,怎么办?
这两个都会产生错误,说它们必须是编译时常量:
void Foo(TimeSpan span = TimeSpan.FromSeconds(2.0))
void Foo(TimeSpan span = new TimeSpan(2000))
Run Code Online (Sandbox Code Playgroud)
首先,有人可以解释为什么在编译时无法确定这些值吗?有没有办法为可选的TimeSpan对象指定默认值?
哪一个更好?一目了然可选参数似乎更好(代码更少,XML文档更少等),但为什么大多数MSDN库类使用重载而不是可选参数?
当您选择使用可选参数(或重载)时,是否有任何特殊事项需要注意?
我正在SQL Server 2008中编写一些存储过程,并想知道可选输入参数的概念是否可行?
我想我总是可以为我不想使用的参数传递NULL,检查存储过程中的值,然后从那里拿东西,但我感兴趣的是这里有这个概念.谢谢!
是否可以指向特定的设置文件,以覆盖maven用于单个命令的默认settings.xml?例:
mvn clean install -Dparam # -> pass specific settings file path as param to override default "home/.m2/settings.xml"
Run Code Online (Sandbox Code Playgroud) 我正在观看Anders关于C#4.0的讨论和C#5.0的预览,它让我想到C#中何时可以提供可选参数什么是推荐的方法来声明不需要指定所有参数的方法?
例如,FileStream类这样的东西有大约十五种不同的构造函数,它们可以分为逻辑"族",例如下面的字符串,来自a的那些IntPtr和来自a的那些SafeFileHandle.
FileStream(string,FileMode);
FileStream(string,FileMode,FileAccess);
FileStream(string,FileMode,FileAccess,FileShare);
FileStream(string,FileMode,FileAccess,FileShare,int);
FileStream(string,FileMode,FileAccess,FileShare,int,bool);
Run Code Online (Sandbox Code Playgroud)
在我看来,这种类型的模式可以通过改为使用三个构造函数来简化,并使用可以默认的参数的可选参数,这将使构造函数的不同系列更加清晰[注意:我知道这个更改不会是在BCL制作,我正在假设这种情况].
你怎么看?从C#4.0开始,将具有可选参数的紧密相关的构造函数和方法组作为单一方法更有意义,还是有充分理由坚持使用传统的多重载荷机制?
我试图在Swift中声明一个带有可选闭包的参数.我声明的函数如下所示:
class Promise {
func then(onFulfilled: ()->(), onReject: ()->()?){
if let callableRjector = onReject {
// do stuff!
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是Swift抱怨"条件中的绑定值必须是一个可选类型",其中声明了"if let".
我正在阅读Bill Wagner的Effective C#.在第14项 - 最小化重复初始化逻辑中,他显示了以下在构造函数中使用新的可选参数功能的示例:
public MyClass(int initialCount = 0, string name = "")
请注意,他使用""而不是string.Empty.
他评论道:
您将注意到[在上面的示例中]第二个构造函数为name参数指定了默认值,而不是更常用的
string.Empty.那是因为string.Empty它不是编译时常量.它是字符串类中定义的静态属性.因为它不是编译常量,所以不能将它用作参数的默认值.
如果我们不能string.Empty在所有情况下使用静态,那么这不是打败了它的目的吗?我认为我们会用它来确保我们有一个独立于系统的方法来引用空字符串.我的理解错了吗?谢谢.
更新
只是后续评论.根据MSDN:
每个可选参数都有一个默认值作为其定义的一部分.如果没有为该参数发送参数,则使用默认值.默认值必须是常量.
然后我们无法使用它们System.Environment.NewLine,或者使用新实例化的对象作为默认值.我还没有用过VS2010,这太令人失望了!
好的,我完全忘记了如何在PHP中跳过参数.
让我们说:
function getData($name, $limit = '50', $page = '1') {
...
}
Run Code Online (Sandbox Code Playgroud)
我如何调用此函数以使middle参数采用默认值(即'50')?
getData('some name', '', '23');
Run Code Online (Sandbox Code Playgroud)
以上是否正确?我似乎无法让这个工作.
c# ×4
c#-4.0 ×4
function ×2
overloading ×2
.net ×1
clojure ×1
command-line ×1
maven ×1
overriding ×1
parameters ×1
php ×1
ruby ×1
settings ×1
swift ×1
timespan ×1