经过多年没有使用make,我发现自己需要它,现在是gnu版本.我很确定我应该能够做我想做的事情,但是没有弄清楚如何,或者找到谷歌的答案等.
我正在尝试创建一个测试目标,它将多次执行我的程序,将结果保存在日志文件中.一些测试应该导致我的程序中止.不幸的是,我的makefile在第一次测试时中止,导致错误.我有类似的东西:
# Makefile
#
test:
myProg -h > test.log # Display help
myProg good_input >> test.log # should run fine
myProg bad_input1 >> test.log # Error 1
myProg bad_input2 >> test.log # Error 2
Run Code Online (Sandbox Code Playgroud)
使用上面的命令,在bad_input1运行后退出,永远不会运行bad_input2.
在编写API或可重用对象时,是否存在任何技术原因导致返回'void'的所有方法调用不应仅返回'this'(*在C++中为此)?
例如,使用字符串类,我们可以做这样的事情:
string input= ...;
string.Join(input.TrimStart().TrimEnd().Split("|"), "-");
Run Code Online (Sandbox Code Playgroud)
但我们不能这样做:
string.Join(input.TrimStart().TrimEnd().Split("|").Reverse(), "-");
Run Code Online (Sandbox Code Playgroud)
..beause Array.Reverse()返回void.
还有许多其他示例,其中API具有许多返回void的操作,因此代码最终看起来像:
api.Method1();
api.Method2();
api.Method3();
Run Code Online (Sandbox Code Playgroud)
..但完全有可能写:
api.Method1().Method2().Method3()
Run Code Online (Sandbox Code Playgroud)
..如果API设计师允许这样做.
遵循这条路线有技术原因吗?或者它只是一种风格的东西,表示可变性/新对象?
(x-ref 关于返回虚空的文体问题)
结语
我已经接受了Luvieere的答案,因为我认为这最能代表意图/设计,但似乎有一些流行的API示例与此有所不同:
在C++中cout << setprecision(..) << number << setwidth(..) << othernumber;似乎改变了cout对象,以便修改插入的下一个数据.
在.NET中,Stack.Pop()并且Queue.Dequeue()都返回一个项目,但改变集合了.
向ChrisW和其他人道歉,详细了解实际的性能成本.
如果枚举是连续的,有没有办法在 C++11 中检查?
给出不是的枚举值是完全有效的。是否有像 C++14、C++17 或 C++20 中的类型特征这样的特性来检查枚举是否连续?这将在 static_assert 中使用。
一个小例子如下:
enum class Types_Discontinuous {
A = 10,
B = 1,
C = 100
};
enum class Types_Continuous {
A = 0,
B = 1,
C = 2
};
static_assert(SOME_TEST<Types_Discontinuous>::value, "Enum should be continuous"); // Fails
static_assert(SOME_TEST<Types_Continuous>::value, "Enum should be continuous"); // Passes
Run Code Online (Sandbox Code Playgroud) 我是一个ASP.NET MVC新手,但以前使用过很多模型 - 视图 - 控制器框架.
我最近遇到了这样的惯例,即将您的特定视图所需的数据(实际上,它被分配给ViewData)收集到一个名为(NameOfView)ViewModel的新类中.
收集这些数据,使其与View/Controller交互提供的功能相关联,这使我成为一个辅助结构,甚至是闭包机制(在'封装一组变量'意义上).
那么为什么它被称为'ViewModel',因为它既不是视图也不是模型?
有没有其他人觉得这个名字令人困惑?
编辑:只是将属性放到View上有什么问题,以便Controller可以填充它们(如在其他MVC框架中)?
我们有大量的nAnt脚本来构建我们的各种产品.它们几乎都具有以下结构:
根据我们的研究,似乎CruiseControl(.net?)/ Hudson/BuildBot只会添加导致构建的触发器,此时双击远程桌面上的nAnt脚本和状态仪表板.
我们缺少其他重要的东西吗?
我想使用 DRF 创建一个简单的 Rest API ( https://www.django-rest-framework.org/ )。另一个服务将发出提供 JSON 的请求。这个 json 被解析,并且将发生一些相当简单的 pandas 数据帧操作。结果通过 JSON 发回。
有没有办法让这个过程成为多线程?尽管 pandas 操作相当简单,但它们仍然可能需要大约 0.5 秒到 1 秒,如果出于某种原因在同一时刻发出 3-4 个此类请求,我希望避免人们等待几秒钟。
谢谢!
因此,我们正在调查范围保护或类似机制的使用,以确保传入/传出对象的有效性和/或内部状态不变性,类似于C#代码契约.
在正常处理过程中出现意外情况/异常导致某些对象处于不一致状态的特定情况下,我们可以/应该采用什么机制来支持范围守卫将要投诉的事实当我们跳出这个功能?
这里有一些示例伪代码来说明我的观点:
struct IObjectValidator;
struct ObjectValidatorScopeGuard
{
ObjectValidatorScopeGuard(IObjectValidator * pObj)
: m_ptr(pObj)
{
Assert(!m_ptr || m_ptr->isValid());
}
~ObjectValidatorScopeGuard()
{
Assert(!m_ptr || m_ptr->isValid());
}
private:
IObjectValidtor * m_ptr;
};
int SomeComponent::CriticalMethod(const ThingA& in, ThingB& inout, ThingC * out)
{
ObjectValidatorScopeGuard sg1(static_cast<IObjectValidator *>(&in));
ObjectValidatorScopeGuard sg2(static_cast<IObjectValidator *>(&inout));
ObjectValidatorScopeGuard sg3(static_cast<IObjectValidator *>(out));
// create out
try
{
out = new ThingC();
out->mergeFrom(inout, out); // (1)
}
catch (const EverythingHasGoneHorriblyWrongException& ex)
{
// (2) out and inout not guaranteed valid here..
}
return 0;
} …Run Code Online (Sandbox Code Playgroud)