我正在编写一个方法,我想将一个类传递给一个方法,其中一部分代码包括检查对象是否属于某种类型.这就是我想要的(但显然不起作用):
private static class MyClass1 { /***/ }
private static class MyClass2 { /***/ }
private void someFunc() {
/* some code */
methodName(MyClass1);
methodName(MyClass2);
}
private void methodName(Class myClass) {
Object obj;
/* Complicated code to find obj in datastructure */
if (obj instanceof myClass) {
/* Do stuff */
}
}
Run Code Online (Sandbox Code Playgroud)
有关如何做到这一点的任何提示?谢谢!
我的理解是,为了从作为参数传递到子例程的文件中获取日期,必须将该参数重新设置为子例程中的变量.它是否正确?这对我来说没有,所以我想知道我是不是完全明白发生了什么.除了日期提取之外,我几乎可以在任何其他子例程代码中使用传入的参数.
set setupEXE=setup.exe
CALL :SUB_CheckCorrectDate %setupEXE%
GOTO EOF
::----------------------------------
:SUB_CheckCorrectDate
set filename=%1%
:: SUCCESSFUL
for %%x in (%filename%) do set FileDate=%%~tx
@For /F "tokens=1-3 delims=-/ " %%A in ('@echo %FileDate%') do @(
Set file_Month=%%A
Set file_Day=%%B
Set file_Year=%%C
)
:: GET ERROR
for %%x in (%1%) do set FileDate=%%~tx
@For /F "tokens=1-3 delims=-/ " %%A in ('@echo %FileDate%') do @(
Set file_Month=%%A
Set file_Day=%%B
Set file_Year=%%C
)
GOTO:EOF
:: ------------------
:EOF
Run Code Online (Sandbox Code Playgroud) 如何检查是否将可选参数传递给方法?
public void ExampleMethod(int required, string optionalstr = "default string",
int optionalint = 10)
{
if (optionalint was passed)
return;
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用Nullable<T>.HasValue(MSDN定义,MSDN示例):
int default_optionalint = 0;
public void ExampleMethod(int required, int? optionalint,
string optionalstr = "default string")
{
int _optionalint = optionalint ?? default_optionalint;
}
Run Code Online (Sandbox Code Playgroud) 其中一个R最大的特点就是懒惰的评价.这导致了经常遇到的样式,即可以使用参数作为另一个参数的值.例如,在Hadley关于Advanced R的伟大着作中,您会看到以下示例:
g <- function(a = 1, b = a * 2) {
c(a, b)
}
g()
#> [1] 1 2
g(10)
#> [1] 10 20
Run Code Online (Sandbox Code Playgroud)
现在,我想用xlim和做同样的情节ylim,但是,它不起作用:
> plot(1, 1, ylim = c(0,1), xlim = ylim)
Error in plot.default(1, 1, ylim = c(0, 1), xlim = ylim) :
object 'ylim' not found
> plot(1, 1, xlim = c(0,1), ylim = xlim)
Error in plot.default(1, 1, xlim = c(0, 1), ylim …Run Code Online (Sandbox Code Playgroud) 解析/ proc/cmdline的大多数脚本将其分解为单词,然后使用case语句过滤掉参数,例如:
CMDLINE="quiet union=aufs wlan=FOO"
for x in $CMDLINE
do
»···case $x in
»···»···wlan=*)
»···»···echo "${x//wlan=}"
»···»···;;
»···esac
done
Run Code Online (Sandbox Code Playgroud)
问题是WLAN ESSID有空格.用户希望设置wlan='FOO
BAR'(就像一个shell变量),然后'FOO用上面的代码得到意想不到的结果,因为for循环在空格上分割.
是否有一种更好的方法来解析/proc/cmdlineshell脚本几乎没有评估它?
还是有一些引用技巧?我以为我可能会要求用户实体引用空格并解码如下:/bin/busybox httpd -d "FOO%20BAR".或者这是一个糟糕的解决方案?
我需要找到从函数传递给函数的参数.
让我们假设我有一个叫做的函数foo:
function foo() {
var a = 3;
var b = "hello";
var c = [0,4];
bar(a - b / c);
bar(c * a + b);
}
function bar(arg) { alert(arg) }
Run Code Online (Sandbox Code Playgroud)
当然,现在,它bar总会提醒NaN.
在函数内部bar,我想以最初传递的形式获取参数.此外,我希望能够访问的值a,b以及c从bar功能.换句话说,我想要这样的东西:
bar(a - b / c);
function bar() {
//some magic code here
alert(originalArg); //will alert "a - b / c"
alert(vars.a + " " + vars.b + " " …Run Code Online (Sandbox Code Playgroud) 哪个是更好的性能.
foo(this);
function foo(element) {
$(element).index();
}
Run Code Online (Sandbox Code Playgroud)
或者我应该这样做
foo($(this));
function foo($element) {
$element.index();
}
Run Code Online (Sandbox Code Playgroud)
显然考虑到我将在函数内部使用该参数几次.
谢谢!康纳
是否有任何计划实现类似于在方法参数列表中指定实例变量名称的CoffeeScript功能的ruby行为?喜欢
class User
def initialize(@name, age)
# @name is set implicitly, but @age isn't.
# the local variable "age" will be set, just like it currently works.
end
end
Run Code Online (Sandbox Code Playgroud)
我知道这个问题:在Ruby中我可以在initialize方法中以某种方式自动填充实例变量吗?,但所有的解决方案(包括我自己的)似乎都不符合ruby简单哲学.
并且,这种行为会有任何缺点吗?
UPDATE
其中一个原因是红宝石社区的DRY(不要重复自己)哲学.我经常发现自己需要重复参数变量的名称,因为我希望将它分配给同名的实例变量.
def initialize(name)
# not DRY
@name = name
end
Run Code Online (Sandbox Code Playgroud)
我能想到的一个缺点是,如果一个方法没有正文,它可能看起来就像什么都没做.如果您正在快速扫描,这可能看起来像一个无操作.但我认为,只要有时间,我们就可以适应.
另一个缺点:如果您在正文中设置其他实例变量,并且您尝试通过将所有分配放在开头可读,则可能需要更多的认知"权力"才能看到分配也发生在参数列表中.但我不认为这比看到一个常量或方法调用并且不得不跳到它的定义更难.
# notice: instance var assignments are happening in 2 places!
def initialize(@name)
@errors = []
end
Run Code Online (Sandbox Code Playgroud) 所以我的问题实际上有几个部分:
使用Poco线程库:
我已经看过这里了:
提前致谢...
我的 bash 脚本中有一些变量可能包含文件名或未设置。它们的内容应作为附加参数传递给程序。但是当变量未设置时,这会留下一个空参数。
$ afile=/dev/null
$ anotherfile=/dev/null
$ unset empty
$ cat "$afile" "$empty" "$anotherfile"
cat: : No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果没有引号,它就可以正常工作,因为附加参数被简单地省略了。但由于变量可能包含空格,因此必须在此处用引号引起来。
我知道我可以简单地将整条线包装在对空性的测试中。
if [ -z "$empty" ]; then
cat "$afile" "$anotherfile"
else
cat "$afile" "$empty" "$anotherfile"
fi
Run Code Online (Sandbox Code Playgroud)
但对每个变量进行一次测试会产生一棵巨大而复杂的决策树。
有没有更紧凑的解决方案?bash 可以省略带引号的空变量吗?
argument-passing ×10
arguments ×2
javascript ×2
bash ×1
batch-file ×1
c# ×1
c++ ×1
cpu-word ×1
function ×1
instanceof ×1
java ×1
jquery ×1
methods ×1
nullable ×1
parsing ×1
performance ×1
r ×1
ruby ×1
shell ×1
split ×1
subroutine ×1