当我尝试以下操作时,我自己就会出错function definition.
>>> def mymap(*seq,pad=None):
File "<stdin>", line 1
def mymap(*seq,pad=None):
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我试图给参数的默认值pad.
但后来,我尝试了这个并且它有效(出于错误的原因):
>>> def mymap(pad=None,*seq):
... print seq
>>> mymap([1,2,3],[4,5,6])
([4, 5, 6],)
[(4,)]
>>>
Run Code Online (Sandbox Code Playgroud)
这不是印刷tuple的seq应该是([1,2,3],[4,5,6]).
我正在尝试使用参数集并使用默认参数集。但是默认参数集似乎不适用于我。任何帮助深表感谢。我可以轻松地使用带有默认操作的验证集,但我想知道我在这里做错了什么。
Param([cmdletbinding(DefaultParametersetname="Directory")]
[Parameter(Mandatory=$false,ParameterSetName="File")]
[switch]$file,
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[switch]$directory,
[Parameter(Mandatory=$false,ParameterSetName="File")]
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[string]$Source,
[Parameter(Mandatory=$true,ParameterSetName="File")]
[Parameter(Mandatory=$true,ParameterSetName="Directory")]
[string]$DestinationPath,
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[Parameter(Mandatory=$false,ParameterSetName="File")]
[array]$Servers
PS C:\> Test-Script -Source "c:\somedirectory" -DestinationPath "c:\someotherdirectory"
Run Code Online (Sandbox Code Playgroud)

测试脚本:无法使用指定的命名参数来解析参数集。
在第1行:char:1
+测试脚本-Source“ c:\ somedirectory” -DestinationPath“ c:\ someotherdirectory”
+ ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
+ CategoryInfo:InvalidArgument:(:) [测试脚本],ParameterBindingException
+ FullyQualifiedErrorId:AmbiguousParameterSet,测试脚本
我有以下方法(只有 1 个参数),我想适应用于 1 个以上的参数。我尝试使用默认参数,但这不起作用。(仅使用旧方法的原始代码工作正常)令我印象深刻的是该声明中省略了变量名称。为什么 ?
这是我原来的方法:
void importFile(QString *);
Run Code Online (Sandbox Code Playgroud)
这是我的新方法:
void importFile(QString *, QList<QVariant> IMPORT_FILE_PARAMETERS =0 );
Run Code Online (Sandbox Code Playgroud)
当我编译这段代码时,Qt 告诉我“ QList IMPORT_FILE_PARAMETERS 的默认参数的类型为 int
问题是什么?我不使用 int - 他为什么要告诉我有关 int 的信息?
谢谢你的帮助
可能重复:
带空括号的默认构造函数
实例化带或不带括号的类?
程序:
class Foo
{
public:
Foo ( int bar = 1 )
{
cout << "bar=" << bar;
}
};
int main() {
cout << "0 - ";
Foo foo_0 ( 0 ) ;
cout << '\n';
cout << "1 - ";
Foo foo_1 ();
cout << '\n';
cout << "2 - ";
Foo foo_4;
cout << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
0 - bar=0
1 -
2 - bar=1
Run Code Online (Sandbox Code Playgroud)
问题:为什么示例#1不起作用,而示例#0和#2呢?
我对c ++很陌生,我不能让它成功.对不起,但我一直使用的语言没有帮助我思考内存指针ans所以也许这是一个愚蠢的问题.
我想传递一个float数组作为默认参数.像这样:
void getHistogram(const Mat& src, MatND& hist, float range[]=NULL) {
if(range==NULL) {
double maxPixel=0;
minMaxLoc(src, 0, &maxPixel, 0, 0);
range = { 0, maxPixel +1 };
}
// now calculate histogram with the right range
// something something
}
Run Code Online (Sandbox Code Playgroud)
我尝试了一些不同的语法,但我总是在一些错误的前面
histogram.cpp:21: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
histogram.cpp:21: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘float*’ in assignment
Run Code Online (Sandbox Code Playgroud)
好的,这个答案我已经用这种方式解决了:
void imHist(const Mat& src, MatND& hist, float range[]=NULL) {
if(range==NULL) {
double …Run Code Online (Sandbox Code Playgroud) 本博客的最后一部分解释了以下内容:http://lostechies.com/jimmybogard/2010/05/18/caveats-of-c-4-0-optional-parameters/
但我仍然想知道为什么.
我最近遇到了Scala的默认参数.
在Scala中,被调用者为具有默认值的参数提供实际值.因此,不必重新编译所有调用者以使用更新的默认参数值.
如果Scala可以做到,我猜C#也可以做到.
所以为什么?他们为什么设计它容易出错?
编辑:
容易出错可能过于强烈,所以我的问题更像是这样:
为什么它的设计方式是默认参数的版本控制不会影响调用者?
c# scala language-design optional-parameters default-parameters
我有以下方法签名,我想给我的一个参数一个默认值,但我不想给其他参数任何默认值
leadSourceStatus
protected PromotionCatalogResponseRootObject GetVideoPromotionCatalog(PromotionCatalogTypes catalogType = PromotionCatalogTypes.RESIDENTIAL, LeadSourceStatus leadSourceStatus)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个时,我会收到错误
必须在所有必需参数后显示可选参数
处理这个问题的最佳方法是什么?
我有一个小的 powershell 脚本,它允许我快速为自己设置警报。它基本上只是等待指定的分钟数然后调用
味精 * 警报!
这很有效 - 弹出一个消息框。唯一的问题是它会在一段时间后消失 - 所以如果我不在办公桌前,我会错过消息框。
根据此处找到的文档,这是我未指定时间值时的行为。
/time: seconds :指定您发送的消息在用户屏幕上显示的时间。一旦达到时间限制,消息就会消失。如果未设置时间限制,则该消息将保留在用户的屏幕上,直到用户看到该消息并单击“确定”。
然而事实并非如此,它确实消失了。现在,我必须指定一个任意高的数字才能保留。
msg * /time:999999 alarm!
Run Code Online (Sandbox Code Playgroud) 我在一个类中有一些函数 func Class:
void func(int arg1, int arg2, Vector2f vec = Vector2f(0,0)){};
Run Code Online (Sandbox Code Playgroud)
我收到一个构建错误:
error C2572: 'Classs::func': redefinition of default argument: parameter 1
Run Code Online (Sandbox Code Playgroud)
我尝试了许多不同的语法,但没有一个奏效。如何定义这种类型的默认参数?
如果我有一个类包含:
foo(); //sets baz to 10
foo(int bar = 0); //sets baz to bar
int baz;
Run Code Online (Sandbox Code Playgroud)
是否会使用'默认'构造函数?
例如:
foo qux;
Run Code Online (Sandbox Code Playgroud)
默认为baz = 0或10?
任何区别:
foo * quux = new foo;
Run Code Online (Sandbox Code Playgroud) 我有一个错误:
错误CS0121以下方法或属性之间的调用不明确:'Program.calculateFee(double,int)'和'Program.calculateFee(double)'DailyRate.
这是我的代码:
void run()
{
double fee = calculateFee();
Console.WriteLine("Fee is {0}", fee);
}
private double calculateFee(double theDailyRate = 500.0, int no0fdays = 1)
{
Console.WriteLine("calculateFee using two optional parameters");
return theDailyRate * no0fdays;
}
private double calculateFee(double dailyRate = 500.0)
{
Console.WriteLine("calculateFee using one optional parameter");
int defaultNo0fDays = 1;
return dailyRate * defaultNo0fDays;
}
private double calulateFee()
{
Console.WriteLine("calculateFee using hardcoded values");
double defaultDailyRate = 400.0;
int defaultNo0fDays = 1;
return defaultNo0fDays * defaultDailyRate;
}
}
} …Run Code Online (Sandbox Code Playgroud) c++ ×5
c# ×3
parameters ×3
constructor ×2
function ×2
methods ×2
arrays ×1
build-error ×1
class ×1
executable ×1
instance ×1
native ×1
pointers ×1
polymorphism ×1
powershell ×1
python ×1
qt ×1
scala ×1
sfml ×1
windows ×1