在Python中,您可能有一个函数定义:
def info(object, spacing=10, collapse=1)
Run Code Online (Sandbox Code Playgroud)
可以通过以下任何一种方式调用:
info(odbchelper)
info(odbchelper, 12)
info(odbchelper, collapse=0)
info(spacing=15, object=odbchelper)
Run Code Online (Sandbox Code Playgroud)
感谢Python允许任意顺序参数,只要它们被命名.
我们遇到的问题是我们的一些较大的功能增长,人们可能会之间添加参数spacing和collapse,这意味着错误的值可以将未命名的参数.此外,有时候我们并不总是清楚需要注意什么.我们正在采用一种方法强迫人们命名某些参数 - 不仅仅是编码标准,而且理想情况下是标志或pydev插件?
所以在上面的4个例子中,只有最后一个会通过检查,因为所有参数都被命名.
赔率是我们只会为某些功能打开它,但任何关于如何实现这一点的建议 - 或者如果它甚至可能会被赞赏.
我编写了一个可以接受10个参数的PHP函数,但只需要2个.有时,我想定义第八个参数,但我不想为每个参数输入空字符串,直到我达到第八个.
我的一个想法是传递带有参数数组的抽象函数,这些参数将它传递给实际函数.
有没有更好的方法来设置功能,所以我只能传入我想要的参数?
我是JavaScript/jQuery的新手,我一直在学习如何创建函数.许多功能都出现了(e)括号内.让我告诉你我的意思:
$(this).click(function(e) {
// does something
});
Run Code Online (Sandbox Code Playgroud)
似乎该函数甚至不使用(e)的值,为什么它经常出现?
偶尔,我们必须编写接收许多参数的方法,例如:
public void doSomething(Object objA , Object objectB ,Date date1 ,Date date2 ,String str1 ,String str2 )
{
}
Run Code Online (Sandbox Code Playgroud)
当我遇到这种问题时,我经常将参数封装到地图中.
Map<Object,Object> params = new HashMap<Object,Object>();
params.put("objA",ObjA) ;
......
public void doSomething(Map<Object,Object> params)
{
// extracting params
Object objA = (Object)params.get("objA");
......
}
Run Code Online (Sandbox Code Playgroud)
这不是一个好的做法,将params封装到地图中完全是浪费效率.好处是,干净的签名,容易添加其他params与最少的修改.这种问题的最佳做法是什么?
我正在寻找一种方法将参数传递给Chef cookbook,如:
$ vagrant up some_parameter
Run Code Online (Sandbox Code Playgroud)
然后some_parameter在其中一个Chef cookbook中使用.
我正在寻找与Java相当的C#final.它存在吗?
C#是否包含以下内容:
public Foo(final int bar);
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,bar是一个只读变量,不能更改Foo().有没有办法在C#中做到这一点?
比如,也许我还有很长的方法,将与其合作x,y和z一些对象(整数)的坐标.我想绝对肯定该函数不会以任何方式改变这些值,从而破坏数据.因此,我想宣读它们.
public Foo(int x, int y, int z) {
// do stuff
x++; // oops. This corrupts the data. Can this be caught at compile time?
// do more stuff, assuming x is still the original value.
}
Run Code Online (Sandbox Code Playgroud) 我需要在Bash中传递函数作为参数.例如,以下代码:
function x() {
echo "Hello world"
}
function around() {
echo "before"
eval $1
echo "after"
}
around x
Run Code Online (Sandbox Code Playgroud)
应输出:
before
Hello world
after
Run Code Online (Sandbox Code Playgroud)
我知道eval在那种情况下不正确,但这只是一个例子:)
任何的想法?
在我的视图函数中,我想调用另一个视图并将数据传递给它:
return redirect('some-view-name', backend, form.cleaned_data)
Run Code Online (Sandbox Code Playgroud)
,其中后端是registration.backends对象,而form.cleaned_data是表单数据的字典(但必须以*args或**kwargs的形式发送,以防止Don't mix *args and **kwargs in call to reverse()!出现错误).从我在文档中找到的内容:
def my_view(request):
...
return redirect('some-view-name', foo='bar')
Run Code Online (Sandbox Code Playgroud)
看起来我需要提供'some-view-name'参数,但它只是视图函数的名称,还是url的名称?所以我想使它类似于在django-registration中完成的方式,其中:
to, args, kwargs = backend.post_registration_redirect(request, new_user)
return redirect(to, *args, **kwargs)
def post_registration_redirect(self, request, user):
return ('registration_complete', (), {})
Run Code Online (Sandbox Code Playgroud)
好的,我现在可以直接调用我的视图功能,还是需要提供一个网址?更重要的是,我的funciotn调用(以及需要时的URL)应该是什么样的?后端和cleaning_data都只是通过此视图传递以供以后使用.我试过这个,但不合适:
url(r'^link/$', some-view-name)
def some-view-name(request, *args):
Run Code Online (Sandbox Code Playgroud)
除此之外:
return redirect('some_url', backend=backend, dataform.cleaned_data)
url(r'^link/$', some-view-name)
def some-view-name(request, backend, data):
Run Code Online (Sandbox Code Playgroud)
还是NoReverseMatch.但是在django-registration中,我看到过这样的事情:
url(r'^register/$',register,{'backend': 'registration.backends.default.DefaultBackend'}, name='registration_register'),
def register(request, backend, success_url=None, form_class=None,
disallowed_url='registration_disallowed',
template_name='user/login_logout_register/registration_form.html',
extra_context=None):
Run Code Online (Sandbox Code Playgroud) 见标题.
我在脚本的头部指定了所需的参数:
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
Run Code Online (Sandbox Code Playgroud)
当我想用Powershell ISE调试脚本时:我该如何填写这些参数?
我有一个创建数组的函数,我想将数组返回给调用者:
create_array() {
local my_list=("a", "b", "c")
echo "${my_list[@]}"
}
my_algorithm() {
local result=$(create_array)
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我只得到一个扩展的字符串.如何在不使用全局的情况下"返回"my_list?
function ×4
bash ×2
parameters ×2
python ×2
arrays ×1
c# ×1
callback ×1
coding-style ×1
command-line ×1
const ×1
django ×1
java ×1
javascript ×1
jquery ×1
performance ×1
php ×1
powershell ×1
readonly ×1
redirect ×1
ruby ×1
vagrant ×1