Clojure的逻辑and
是否与正常的逻辑and
(&&)不同?为什么这会产生真实的
((and odd? #(> 10 %)) 6)
and
不需要2个真实的陈述才能返回真实吗?
答案 0 :(得分:5)
fillData
不一定会返回public void fillData(MatHangModel matHangModel, int position) {
//fill data
if (matHangModel != null) {
tvScanBarcode.setText(CommonUtil.getStringData(matHangModel.getBracode()));
tvQtyPrice.setText(""+CommonUtil.getIntegerData(matHangModel.getPrice()));
etAmount.setText(""+CommonUtil.getIntegerData(matHangModel.getAmount()));
etAmount.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(final CharSequence charSequence,
int start,
int before, int count) {
}
@Override
public void onTextChanged(final CharSequence charSequence,
final int i,
final int i1,
final int i2) {
}
@Override
public void afterTextChanged(final Editable editable) {
matHangModel.setAmount(Integer.parseInt(editable.toString())); // here you update your model data
updateItem(matHangModel, position); // here you update your adapter data
}
});
}
}
。如果任何给定元素为and
或true
,它实际上会返回false
或nil
。如果它们都不是,那么它返回最后一个元素(它不返回true)。
在您的情况下,false
返回函数nil
(并且没有其他内容),然后将其应用于and
,产生true。这是因为这两个函数既不是#(> 10 %)
也不是6
。
这就是步骤的工作方式:
nil
您正在寻找的是撰写谓词函数:
false
仅供参考:还有补充“((and odd? #(> 10 %)) 6)
(#(> 10 %) 6)
;; => true
”:((every-pred odd? #(> 10 %)) 6) ;; => false
。