有没有办法使用scala插件从Eclipse 执行scala 脚本?
scala脚本是一个逐行执行的scala文件,不会强制您编写main方法.请参阅scala手册页中的Description部分.
在上的std ::的reference_wrapper标准解释std::sort现在可以接受std::reference_wrapper,允许一个通过引用传递的比较器.
是否有理由首先std::sort没有通过引用接受比较器?
我想在过去的提交中修复一个文件.这可能会影响所有提升提交.
有一个简单的方法吗?你能给我一个如何做到这一点的指导方针吗?
很多次,当我提交两次时,我发现我在第一次提交时遇到错误,我希望修复错误而不必'git reset'我最后一次提交.
为了澄清.我想更改实际的提交,也就是说,我希望更改过去提交的内容.我想改变历史!
微软最近宣布推出"Intellitrace",这是VS2010恕我直言的杀手级功能.
基本上它记录了程序运行的一些指令(特别是函数调用),并允许您轻松查看执行日志.
开源工具是否有类似的功能?具体来说,这种Java与Eclipse集成的功能将是一件好事.
我正在看OCaml的仿函数.它看起来与C++/ C#/中所谓的通用对象完全相同Java.如果您暂时忽略Java的类型擦除,并忽略C++模板的实现细节(我对语言功能感兴趣),仿函数对于泛型非常简洁.如果我理解正确,仿函数会从您提供的类型中为您提供一组新函数,例如
List<MyClass>.GetType() != List<MyOtherClass>.GetType()
Run Code Online (Sandbox Code Playgroud)
但你可以大致重写OCaml的
#module Set =
functor (Elt: ORDERED_TYPE) ->
struct
type element = Elt.t
type set = element list
let empty = []
let rec add x s =
match s with
[] -> [x]
| hd::tl ->
match Elt.compare x hd with
Equal -> s (* x is already in s *)
| Less -> x :: s (* x is smaller than all elements of s *) …Run Code Online (Sandbox Code Playgroud) 注意:从Scala 2.11开始,NotNull不推荐使用.
据我所知,如果你想让一个引用类型不可为空,你必须混合魔法NotNull特性,编译器会自动阻止你在其中放入null-able值.例如,请参阅此邮件列表线程.
缺乏的是,对非可空类型的图书馆支持不错.如果我想编写一个不需要直接连接java代码的软件包,并且我希望防止此软件包中的所有类型null默认使用,我别无选择,只能重新定义所有构建变量,如此
//can't actually do that, but just to give the general idea
class NString extends String with NotNull
class NMap[X,Y] extends Map[X,Y] with NotNull
...
Run Code Online (Sandbox Code Playgroud)
我希望scala有(作为编译器插件或库)选项供我编写
import collections.notnull._
Run Code Online (Sandbox Code Playgroud)
为了轻松禁止null在特定的scala文件中使用.
是否有一个选项可以轻松强制标准库中的许多有用类型不可为空?
我正在编写一个反应软件,它反复接收输入,处理它并发出相关输出.主循环看起来像:
initialize();
while (true) {
Message msg,out;
recieve(msg);
process(msg,out);
//no global state is saved between loop iterations!
send(out);
}
Run Code Online (Sandbox Code Playgroud)
我想要在进程阶段发生的任何错误,无论是内存错误,逻辑错误,无效的断言等,程序都会清理它所做的任何事情,并继续运行.我假设它是无效输入,只是忽略它.
对于那种情况,C++的异常非常好,我可以process用try/catch子句包围,并且只要有问题就抛出异常.我唯一需要确保在抛出异常之前清理所有资源.这可以通过RAII验证,也可以通过编写全局资源分配器(例如,如果析构函数可能抛出异常)来验证,并专门用于所有资源.
Socket s = GlobalResourceHandler.manageSocket(new Socket());
...
try {
process(msg,out);
catch (...) {
GlobalResourceHandler.cleanUp();
}
Run Code Online (Sandbox Code Playgroud)
但是,在我们的编码标准中(也在Google的C++标准 BTW中)禁止使用异常,因此所有代码都是在异常关闭的情况下编译的,我相信没有人会改变一切只为我的设计问题工作的方式.
此外,这是嵌入式平台的代码,因此我们使用的C++额外功能越少,代码就越快,便携性也就越高.
我可以考虑一种替代设计吗?
更新: 我感谢大家对愚蠢代码标准的回答.我唯一可以说的是,在大型组织中,你必须有严格的,有时不合逻辑的规则,以确保没有白痴会来,让你的好代码不可维护.标准更多的是人而不是技术性.是的,坏人可以让每个代码都变得一团糟,但是如果你给他额外的工具来完成任务会更糟糕.
我还在寻找技术上的答案.
在使用普通旧项目的相对较大的项目中make,甚至在没有任何改变的情况下构建项目需要几十秒.特别是对于许多执行make -C,其具有新的进程开销.
这个问题的显而易见的解决方案是基于inotify操作系统的类似功能的构建工具.它会在某个文件发生变化时查看,并根据该列表单独编译该文件.
那里有这样的机器吗?开源项目的奖励积分.
计算迭代器中所有元素的最佳方法是什么?
我希望代码与此相当
template<typename T,typename S,S val>
struct ConstantFunctor : unary_function<T,S>
{S operator()(const T&) const {return val;}};
template<typename T>
struct TrueFunctor : ConstantFunctor<T,bool,true>{};
...
count_if(c.begin(),c.end(),TrueFunctor());
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
我可以使用boost::lambda::constant(true),但也许有更清楚的东西.
我正在使用cmake,它似乎生成了递归的makefile.这意味着在一个大型项目中,空构建可能需要大约5秒钟,这实在是不可接受.
我还没有找到使用cmake生成非递归makefile的方法.可能吗?