小编Zch*_*yvr的帖子

Clojure-New Cond Macro?

我不理解clojure 1.5发行说明中的这段代码.它使用cond->宏.例如,它将如何转换为1.5之前的代码?

user=> (cond-> 1
               true inc
               false (* 42)
               (= 2 2) (* 3))
6
Run Code Online (Sandbox Code Playgroud)

clojure

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

如何在Clojure项目中安装依赖项

这是一个菜鸟问题,所以如果我冒犯了某人,我很抱歉.

但是如何在*nix计算机上安装跷跷板?是的,我已经阅读了README.MD文件,但是project.clj如何知道在哪里找到库jar(例如跷跷板)?

clojure seesaw

10
推荐指数
2
解决办法
8711
查看次数

我使用原子吗?错了还是有别的东西......?

基本上...

=> (atom? 5)

CompilerException java.lang.RuntimeException: Unable to resolve symbol: atom? in this context, compiling:(NO_SOURCE_PATH:1)

=> (atom? /a)

RuntimeException Invalid token: /a clojure.lang.Util.runtimeException (Util.java:156) RuntimeException Unmatched delimiter: ) clojure.lang.Util.runtimeException (Util.java:156)

=> (atom? "hello world")

CompilerException java.lang.RuntimeException: Unable to resolve symbol: atom? in this context, compiling:(NO_SOURCE_PATH:1)

那么有谁知道发生了什么?我正在使用Eclipse Juno 4.2,CounterClockwise插件.

compiler-errors clojure

6
推荐指数
3
解决办法
2026
查看次数

Java - 遍历String的最有效方法

可能重复:
在Java中迭代字符串字符的最简单/最好/最正确的方法是什么?

我正在考虑的是时间和效率.考虑到这些,哪种方法(在下面的方法或其他未提及的方法)是最有效的方法来遍历字符串的每个字符?

String str = "Foo Bar";
for(int i=0;i<str.length();i++)
   System.out.println(str.charAt(i)); // access the character using .charAt()

for(char letter: str.toCharArray)
   System.out.println(letter);       // use for-each loop with the char array.
Run Code Online (Sandbox Code Playgroud)

同样,可能有更好的方法来做到这一点,但我也很好奇上面两者之间是否存在重大的时间/资源差异.

java string

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

Lisp-循环列表并替换值

在这个问题中,我有三个(结构相同的)列表。两个包含所有数字,另一个则填充nil。我试图通过添加两个列表中的相应值来替换空列表中的相应值。到目前为止我所拥有的利用了一个循环并用于setf替换该值。

(defun add-two-lists (list1 list2 list3)
   (loop for a in list1
        for b in list2
        for c in list3 do
        (setf c (+ a b))))
Run Code Online (Sandbox Code Playgroud)

问题是这个函数没有破坏性。如何使这个功能具有破坏性?


好的,我知道我可以使用 anapply来执行此操作,但是出于将来或切线的目的,有没有办法使用循环来执行相同的操作?


我决定采用倒数第二个解决方案;使用列表长度来遍历列表。

(defun add-two-lists (list1 list2 list3)
       (loop for x from 0 to (- (list-length list1) 1) do
            (setf (nth x list3) (+ (nth x list1) (nth x list2))))
       (values list3))
Run Code Online (Sandbox Code Playgroud)

common-lisp

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

有没有办法改变Clojure中的参数?

在lisp中,我可以将参数传递给函数并在函数内进行更改.(AKA破坏性功能).但是,在Clojure中,我已经读过某个地方,在同一个函数中改变给定的参数是不允许的.例如:

(defn add-two-lists [list1 list2]
  (for [n (range (count list1))]
    (+ (nth list1 n) (nth list2 n))))
Run Code Online (Sandbox Code Playgroud)

这是一个普通函数,它的输出是两个相同列表的相加.但是,我想要这样的东西:

(defn add-two-lists [list1 list2 added_list]
  (set! added_list 
       (for [n (range (count list1))]  
          (+ (nth list1 n) (nth list2 n)))))
Run Code Online (Sandbox Code Playgroud)

也许我的使用set!是错误的或误用的,我仍然会得到错误.有没有一种优雅的方法来破坏性地修改Clojure中的参数?

clojure

3
推荐指数
2
解决办法
430
查看次数

隐形GUI?(Java)(Swing)

我正在研究这个程序,使用swing.每次导出程序并运行它时,我都会尝试设置的GUI.JFrame可以,但不是内部组件.提前谢谢〜艾利斯

码:

import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

public class Login {
    public static void login_Interface(){

        //Start GUI style//
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        } catch (InstantiationException e1) {
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
            e1.printStackTrace();
        } catch (UnsupportedLookAndFeelException e1) {
            e1.printStackTrace();
        }
        //      End     //

        JFrame login_Frame = new JFrame("Login - LetsMeet");
        login_Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        login_Frame.setSize(750, 650);
        login_Frame.setResizable(true);

        JPanel panel_Title = new JPanel();                            //PANEL Title …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing

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

C程序在打印阵列上崩溃

我正在学习C语言,并且正在尝试构建一个简单的解释器.它需要一个字符和一个数字.以下程序仅'r'用于char.的'r'代表的范围内(自然数),并在数字后它指定的范围内的长度.

示例执行:

Enter:
      r 9
 0 1 2 3 4 5 6 7 8
Run Code Online (Sandbox Code Playgroud)

会发生什么:

Enter:
      r 9
Run Code Online (Sandbox Code Playgroud)

程序崩溃了.所以我认为错误在于打印数组.

有问题的代码在这里:

#include <stdio.h>
#include <stdlib.h>
int* range(int i) {
    int *a=(int*) malloc(i * sizeof(int));
    int j;
    for(j=0;j<i;j++)
        a[j]=j;
    return a;
}
void printArray(int a[], int length) {

    int i;
    printf("\n");
    for(i=0;i<length;i++)
        printf("%d  ", a[i]);

}

int main() {
    char c;
    int n = 1;
    while(n>=0){
        printf("\nEnter:\n\t");
        scanf("%c %d", c, n);
        if(c='r')
            printArray(range(n), n);
    }
    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c arrays printf

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