小编Nik*_*zov的帖子

clojure地图中的默认值

我有一张clojure地图.说出来opts.我知道从这个地图获取值的两种方法,如果没有键获得一些默认值:

(let [opts {}
      title-1 (or (:title opts) "Default title")
      title-2 (:title opts "Default title")]
  (println title-1 title-2))
Run Code Online (Sandbox Code Playgroud)

我看到一些库(quil,incanter)使用第一种方法or.在我看来,第二种方法更简洁,更清洁.第一种方法有优势吗?
使用的缺点(or (:title opts) "Default value")是我们不能再传递falsenil作为值,在这种情况下总是使用默认值.

clojure map

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

我如何懒惰地解析Clojure中的大XHTML文件?

我有一个大表的有效XHTML文件(100兆字节的数据).第一个tr是列(用于数据库),所有其他tr是数据.它是整个文档中唯一的表,它在结构html-> body-> div-> table中.

我如何在Clojure中解析它懒惰的方式?

我知道data.xml,但因为我是Clj初学者,所以我很难让它工作.特别是因为REPL在处理如此大的文件时非常慢.

xhtml parsing clojure html-parsing

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

在clojure中覆盖代理中的多方法

我有一个java类,它有2个方法具有相同但不同的arities(一个不带参数,另一个带1个参数).我创建了一个覆盖这两种方法的代理.问题是如果从这个java类调用no-arg方法 - 调用基本实现而不是代理.但是如果我直接在obj上调用no-arg方法 - 调用正确的代理方法.有人可以解释这种行为吗?

Test.java:

package example;

public abstract class Test {

    public void callMethods(Object obj){
        callMethods();
        callMethods2();
    }

    public void callMethods() {
        System.out.println("Default callMethods");
    }

    public void callMethods2() {
        System.out.println("Default callMethods2");
    }

}
Run Code Online (Sandbox Code Playgroud)

run.clj:

(let [obj (proxy [example.Test] []
            (callMethods
              ([] (println "Overridden callMethods"))
              ([obj] (proxy-super callMethods obj)))
            (callMethods2
              ([] (println "Overridden callMethods2"))))]
  (.callMethods obj)
  (.callMethods obj :test))
Run Code Online (Sandbox Code Playgroud)

输出:

Overridden callMethods
Default callMethods
Overridden callMethods2
Run Code Online (Sandbox Code Playgroud)

预期产量:

Overridden callMethods
Overridden callMethods
Overridden callMethods2
Run Code Online (Sandbox Code Playgroud)

overloading clojure arity

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

在视图持有人文本视图中设置文本从arraylist

我正在实现列表视图,我有用户BaseAdapter class.i我试图从数组列表中的holder文本视图字段中setText但没有任何成功.Problem在getView方法的HashMap<String, ArrayList<String>> map = list.get(position); holder.txtFirst.setText(map.get(FIRST_COLUMN).toString()); 部分.
编辑: 我的主要活动类(postExecute方法),我在其中设置列表适配器类的键和值.代码如下:

protected void onPostExecute(ArrayList<ArrayList<String>> result) {

        ArrayList<String> conceptID = new ArrayList<String>(result.get(0));
        ArrayList<String> conceptDesc = new ArrayList<String>(result.get(1));

        listForSearchConcepts = new ArrayList<HashMap<String,ArrayList<String>>>();
        HashMap<String, ArrayList<String>> temp = new HashMap<String,ArrayList<String>>();
        temp.put(FIRST_COLUMN,conceptID);
        listForSearchConcepts.add(temp);
        temp.put(SECOND_COLUMN,conceptDesc);
        listForSearchConcepts.add(temp);
        listviewAdapter adapter = new listviewAdapter(MainActivity.this, listForSearchConcepts);
        listView.setAdapter(adapter);
    }`   
Run Code Online (Sandbox Code Playgroud)

但下面是我的适配器类代码:

public class listviewAdapter extends BaseAdapter
{
public ArrayList< HashMap < String,ArrayList < String > > > list;
Activity activity;

public listviewAdapter(Activity activity, ArrayList<HashMap<String,ArrayList<String>>> listForSearchConcepts) {
    super();
    this.activity = activity; …
Run Code Online (Sandbox Code Playgroud)

android arraylist hashmap baseadapter

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