我想写一个调用plot()和legend()的函数,如果用户可以指定一些额外的参数,然后传递给plot()或legend() ,这将是理想的。 我知道我可以实现这两个function之一使用… : foo.plot <- function(x,y,…) { plot(x,y,…) legend("bottomleft", "bar", pch=1) } foo.plot(1,1, xaxt = "n") 这通过xaxt = "n"来绘制。 但是有没有办法例如传递title = "legend"给legend()调用,而不需要预先指定函数头中的参数? 从接受的答案更新:我认为,VitoshKa的方式是最高雅的完成我想要的。 然而,我还有一些小问题需要解决,直到按照我的意愿工作。 起初,我检查了哪些参数要传递给legend ,哪些要plot 。 为此,第一步是查看legend哪些参数是legend唯一的,而不是图和/或参数的一部分: legend.args <- names(formals(legend)) plot.args <- c(names(formals(plot.default)), names(par())) dput(legend.args[!(legend.args %in% plot.args)]) 我在这里使用dput() ,因为plot.args <- c(names(formals(plot.default)), names(par()))总是调用一个我不想要的新的空图。 所以,我在下面的函数中使用了dput的输出。 接下来,我必须处理重叠的参数(通过dput(largs.all[(largs.all %in% pargs.all)]) )获取它们。 对于一些这是微不足道的(例如, x , y )其他人得到传递给两个函数(例如, pch […]
在.NET Framework中看起来像覆盖该方法时可选参数存在问题。 下面的代码的输出是:“bbb”“aaa”。 但是我期望的输出是:“bbb”“bbb”。是否有解决scheme。 我知道它可以解决方法重载,但不知道这个原因。 此外代码工作正常在单声道。 class Program { class AAA { public virtual void MyMethod(string s = "aaa") { Console.WriteLine(s); } public virtual void MyMethod2() { MyMethod(); } } class BBB : AAA { public override void MyMethod(string s = "bbb") { base.MyMethod(s); } public override void MyMethod2() { MyMethod(); } } static void […]
我有两个重载的方法,一个具有可选参数。 void foo(string a) { } void foo(string a, int b = 0) { } 现在我打电话给: foo("abc"); 有趣的是,第一个重载被调用。 为什么不把第二个重载与可选值设置为零? 说实话,我会期待编译器带来一个错误,至less是一个警告,以避免无意中执行错误的方法。 这是什么原因? 为什么C#团队这样定义呢?
如何在Java中使用可选参数? 什么规范支持可选参数?
我正在创build一个存储过程来通过一个表进行search。 我有许多不同的search字段,所有这些都是可选的。 有没有办法来创build一个存储过程,将处理这个? 假设我有一个包含四个字段的表:ID,FirstName,LastName和Title。 我可以做这样的事情: CREATE PROCEDURE spDoSearch @FirstName varchar(25) = null, @LastName varchar(25) = null, @Title varchar(25) = null AS BEGIN SELECT ID, FirstName, LastName, Title FROM tblUsers WHERE FirstName = ISNULL(@FirstName, FirstName) AND LastName = ISNULL(@LastName, LastName) AND Title = ISNULL(@Title, Title) END 这种作品。 但是,它会忽略FirstName,LastName或Title为空的logging。 如果没有在search参数中指定标题,我想包括Title为NULL的logging – 对于FirstName和LastName是相同的。 我知道我可以用dynamicSQL做这个,但我想避免这种情况。
我正在debugging一些JavaScript,并不能解释这是什么|| 呢? function (title, msg) { var title = title || 'Error'; var msg = msg || 'Error on Request'; } 有人可以给我一个提示,为什么这个人使用var title = title || 'ERROR' var title = title || 'ERROR' ? 我有时也会看到它没有var声明。
“关键字参数”与常规参数有什么不同? 不能所有的参数传递为name=value而不是使用位置语法?