当我尝试在Clojure中向无限延迟序列添加元数据时,我得到了堆栈溢出,如果我取消元数据,那么它可以正常工作.为什么添加with-meta宏打破了懒惰的seq?
首先创建一个非常好的数字的无限序列:
(defn good []
(lazy-seq
(cons 42
(good))))
user> (take 5 (good))
(42 42 42 42 42)
然后,为每个lazy-seq实例添加一些元数据:
(defn bad []
(lazy-seq
(cons 42
(with-meta
(bad)
{:padding 4}))))
user> (take 5 (bad))
java.lang.StackOverflowError (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
尝试将元数据上移一级:
(defn also-bad []
(with-meta
(lazy-seq
(cons 42
(also-bad)))
{:padding 4}))
user> (take 5 (foo))
java.lang.StackOverflowError (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
以下是有限序列的元数据示例:
(defn also-works []
(lazy-seq
(cons 4
(with-meta
()
{:a 5}))))
user> (also-works)
(4)
user> (meta (rest (also-works)))
{:a 5} … 我在C#中的邮件应用程序中工作,基本上,我需要能够确定哪些收件人成功收到了邮件,哪些收件人没有,无论失败的原因是什么.
总之,例如,每当电子邮件地址不存在时,我都需要抛出异常.但是,在这种情况下,SmtpClient.Send不会抛出异常,所以我需要监视传递失败的回复并解析它们.
我知道这不是一项简单的任务,所以我会问专家一些关于如何处理电子邮件发送主要问题的提示.
提前致谢!!
在下面的代码中,使用Visual Studio编译器不会引发断言,但是在使用XCode为iPhone编译时会引发该断言:
class X
{
public:
virtual void A() {}
};
X x;
void main()
{
// Define a valid member function pointer to X::A.
void (X::*p)() = &X::A;
assert(p != 0);
}
Run Code Online (Sandbox Code Playgroud)
这是编译器中的错误吗?在这种情况下,如何检查空指针呢?
我有一个大的"网格"数据,生成和转储大约需要40秒作为纯文本.如果我用html表格式包装文本(具有固定的td宽度),则在IE7中完全显示需要200秒以上,并且在Safari中显示不到一分钟.在任一浏览器中,小"网格"在5秒内显示,因此我认为它与数据量以外的任何内容无关.我可以在服务器端做些什么来加速IE7显示?告诉用户停止将头撞在墙上不是一种选择.
browser safari performance internet-explorer internet-explorer-7
我可以在成员函数中使用线程来调用Windows中的C++成员函数吗?如果是的话,如何实施呢?这是样本
void Class::fun_1(void){
_beginthread(fun_2, 0, NULL); //This is the error line :: function call missing argument list; use '&Class::fun_2' to create a pointer to member
}
void Class::fun_2(void){
printf("hello");
}
Run Code Online (Sandbox Code Playgroud)
谢谢
#define M 20
#define N 20
void main()
{
int i,j;
int A[M][N] = {0};
for (i=0; i < M; i++)
{
for (j=0; j< N; j++)
{
//A[i][j +1] = A[i][j] + 5;
A[i][j] = 0;
}
}
printf("%d\n", A[2][3]);
}
Run Code Online (Sandbox Code Playgroud)
生成的汇编代码是
main:
pushl %ebp
xorl %eax, %eax
pxor %xmm0, %xmm0
movl %esp, %ebp
andl -16, %esp
pushl %edi
movl 400, %ecx
subl 1628, %esp
leal 16(%esp), %edi
rep stosl
leal 16(%esp), %edx
leal 1616(%esp), %eax
.p2align 4,,7
.p2align …Run Code Online (Sandbox Code Playgroud) 我的网站允许用户将URL输入数据库.我使用的代码是"$ site = strtolower($ site);" 使所有这些URL小写.
但是,我刚刚意识到维基百科URL是区分大小写的,所以我想避免使用"$ site = strtolower($ site);" 在Wikipedia网址上,所有网址都包含"wikipedia.org".
我怎么能编写一个跳过"$ site = strtolower($ site);"步骤的函数 如果$ site包含"wikipedia.org"?
提前致谢,
约翰