我有一张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")是我们不能再传递false和nil作为值,在这种情况下总是使用默认值.
我有一个大表的有效XHTML文件(100兆字节的数据).第一个tr是列(用于数据库),所有其他tr是数据.它是整个文档中唯一的表,它在结构html-> body-> div-> table中.
我如何在Clojure中解析它懒惰的方式?
我知道data.xml,但因为我是Clj初学者,所以我很难让它工作.特别是因为REPL在处理如此大的文件时非常慢.
我有一个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) 我正在实现列表视图,我有用户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) clojure ×3
android ×1
arity ×1
arraylist ×1
baseadapter ×1
hashmap ×1
html-parsing ×1
map ×1
overloading ×1
parsing ×1
xhtml ×1