小编J-1*_*DiZ的帖子

将元数据添加到延迟序列

当我尝试在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} …

lisp clojure lazy-sequences

3
推荐指数
1
解决办法
328
查看次数

确定是否可以成功发送电子邮件

我在C#中的邮件应用程序中工作,基本上,我需要能够确定哪些收件人成功收到了邮件,哪些收件人没有,无论失败的原因是什么.

总之,例如,每当电子邮件地址不存在时,我都需要抛出异常.但是,在这种情况下,SmtpClient.Send不会抛出异常,所以我需要监视传递失败的回复并解析它们.

我知道这不是一项简单的任务,所以我会问专家一些关于如何处理电子邮件发送主要问题的提示.

提前致谢!!

c# email spam-prevention

3
推荐指数
1
解决办法
2650
查看次数

将成员函数指针与0进行比较总是有效的C++吗?

在下面的代码中,使用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)

这是编译器中的错误吗?在这种情况下,如何检查空指针呢?

c++ pointers virtual-functions function member

3
推荐指数
1
解决办法
754
查看次数

为什么IE7与Safari相比如此之慢?

我有一个大的"网格"数据,生成和转储大约需要40秒作为纯文本.如果我用html表格式包装文本(具有固定的td宽度),则在IE7中完全显示需要200秒以上,并且在Safari中显示不到一分钟.在任一浏览器中,小"网格"在5秒内显示,因此我认为它与数据量以外的任何内容无关.我可以在服务器端做些什么来加速IE7显示?告诉用户停止将头撞在墙上不是一种选择.

browser safari performance internet-explorer internet-explorer-7

1
推荐指数
1
解决办法
1200
查看次数

成员函数中的C++ Thread

我可以在成员函数中使用线程来调用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)

谢谢

c++ winapi multithreading function

1
推荐指数
2
解决办法
1万
查看次数

帮助需要从C了解生成的汇编代码

#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)

linux optimization assembly gcc

1
推荐指数
1
解决办法
381
查看次数

PHP - 如果变量包含"wikipedia.org",则跳过strtolower()的函数

我的网站允许用户将URL输入数据库.我使用的代码是"$ site = strtolower($ site);" 使所有这些URL小写.

但是,我刚刚意识到维基百科URL是区分大小写的,所以我想避免使用"$ site = strtolower($ site);" 在Wikipedia网址上,所有网址都包含"wikipedia.org".

我怎么能编写一个跳过"$ site = strtolower($ site);"步骤的函数 如果$ site包含"wikipedia.org"?

提前致谢,

约翰

php string

0
推荐指数
1
解决办法
1482
查看次数