这个问题是为了解Haskell(或任何其他支持Higher-kindedtypes的函数式语言)和C ++的人 是否有可能使用C ++模板来build模更高级别的types? 如果是,那么如何? 编辑: 从托尼·莫里斯的演讲: 高阶多态性: 像Java和C#这样的语言具有一阶多态性,因为它们允许我们抽象types。 例如List<A>可以有一个reversefunction,适用于任何元素types( A )。 更实用的编程语言和types系统也允许我们抽象types构造函数。 这个特征被称为高阶(或更高阶)多态。 例如: 伪高级多态性的发明符号 interface Transformer<X, Y> { Y transform(X x); } interface Monad<M> { // M :: * -> * <A> M<A> pure(A a); <A, B> M<B> bind(Transformer<A, M<B>> t, M<A> a); }
我想测量一段代码的执行情况,我想知道最好的方法是什么? 选项1: DateTime StartTime = DateTime.Now; //Code TimeSpan ts = DateTime.Now.Subtract(StartTime); string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); Console.WriteLine(elapsedTime, "RunTime"); 选项2:使用System.Diagnostics; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); //Code stopWatch.Stop(); // Get the elapsed time as a TimeSpan value. TimeSpan ts = stopWatch.Elapsed; // Format and display the TimeSpan value. string elapsedTime = […]
新的C ++有这个std ::线程types。 奇迹般有效。 现在我想给每个线程一个更简单的debugging名称(如Java允许您)。 用pthreads我会做: pthread_setname_np(pthread_self(), "thread_name"); 但我怎样才能做到这一点与C ++ 0x? 我知道它在Linux系统下使用pthreads,但我想使我的应用程序可移植。 有没有可能?
我有一个简单的应用程序,反转任何文本input到另一个文本框中。 问题是,你可以修改任何一个文本框,这些改变将会被(反过来)反映在另一个文本框中。 我写这个代码,相信会导致问题。 private void realText_TextChanged(object sender, EventArgs e) { mirrorText.Text = mirror(realText.Text); } private void mirrorText_TextChanged(object sender, EventArgs e) { realText.Text = mirror(mirrorText.Text); } private string mirror(string text) { return new string(text.Reverse().ToArray()).Replace("\n\r", "\r\n"); } 然后我试了一下,认为它会导致无限循环( realText更改mirrorText ,另一个事件发生, mirrorText更改realText等)。 然而,除了预期的行为发生之外, 我当然很高兴,我可以把它留在这里。 或者我可以吗? 我很确定TextChanged事件应该被触发,每当Text被改变。 这是事件中一些错误保护的预期行为,还是我只是幸运? 这个代码可能在其他计算机上运行不正常,还有其他的编译设置等? 它可以很容易地修复: private void realText_TextChanged(object sender, EventArgs e) { if (realText.Focused) […]
有没有办法使C更加了解types并确保types安全? 考虑一下: typedef unsigned cent_t; typedef unsigned dollar_t; #define DOLLAR_2_CENT(dollar) ((cent_t)(100*(dollar))) void calc(cent_t amount) { // expecting 'amount' to semantically represents cents… } int main(int argc, char* argv[]) { dollar_t amount = 50; calc(DOLLAR_2_CENT(amount)); // ok calc(amount); // raise warning return 0; } 有没有办法让上面的代码至less提醒gcc的警告? 我知道我可以使用C结构来包装unsigned s,并达到预期的结果,我只是想知道是否有一个更优雅的方式来做到这一点。 它可以比这更多一点吗?
我已经看到了以下两种在C API中声明不透明types的风格。 使用另一种风格有没有明显的优势? 选项1 // foo.h typedef struct foo * fooRef; void doStuff(fooRef f); // foo.c struct foo { int x; int y; }; 选项2 // foo.h typedef struct _foo foo; void doStuff(foo *f); // foo.c struct _foo { int x; int y; };
在包含forward声明的头文件中,或在包含实现的.cpp文件中,像这样? //header.h /* About foo() */ void foo(); /* About bar() */ int bar(); /* About A */ class A { public: /* About A's constructor */ A(); …. } 要么 //implementation.cpp /* About foo() */ void foo() { … … } /* About bar */ int bar() { … } /* About A's constructor […]
假设我有一个类定义如下: class foo{}; 现在,这是完全可以接受的。 foo f; 怎么这是一个编译器错误? ( uninitialized const 'f' ) const foo f; 为什么我们要这样做? const foo f = foo(); 我知道为什么我们不能这样做.. const foo f(); // though it compiles.. 有趣的是,以下是有效的: const std::string f; 那么从foo缺less什么? 我意识到这里有三个问题,这是一个糟糕的forms,但我希望有人能够在一个答案中为我解决这个问题。 编辑:请随时closures它,如果它是愚蠢的…
有没有ac#客户端遵循socket.io协议? 我有一个socket.io服务器通过网站与socket.io javascript客户端进行通信,但我也需要连接ac#片段,它可以发送和接收消息。 有没有一个干净的方式来做到这一点,或者我将不得不写我自己的客户端。
我只是创build一个新的MVC 4 Web API项目,并创build一个新的.cshtml文件,其中包含非常简单的HTML: <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title></title> </head> <body> <div> </div> </body> </html> 打开URL时,显示以下错误: “/”应用程序中的服务器错误。 这种types的页面不提供。 说明:您所请求的页面types未被投放,因为它已被明确禁止。 扩展名“.cshtml”可能不正确。 请查看下面的url,并确保拼写正确。 请求的url:/index.cshtml 我在一个同事的开发机器上testing了这个场景(完全一样的项目)。 它按预期工作。 所以我想这个configuration或者一些安装一定是有问题的。 但是在哪里search? 本地IIS和Visual Studio Development Server都不起作用。 UPDATE 直接访问.cshtml文件不适用于生产代码 – 仅用于培训目的! 导航到/Home/Index工作得很好。 所以没有别的,这显然是错的。 只需直接访问.cshtml文件。