逻辑和在Clojure中

时间:2015-08-23 16:37:53

标签: clojure logic

Clojure的逻辑and是否与正常的逻辑and(&&)不同?为什么这会产生真实的

((and odd? #(> 10 %)) 6)

and不需要2个真实的陈述才能返回真实吗?

1 个答案:

答案 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 } }); } } 。如果任何给定元素为andtrue,它实际上会返回falsenil。如果它们都不是,那么它返回最后一个元素(它不返回true)。

在您的情况下,false返回函数nil(并且没有其他内容),然后将其应用于and,产生true。这是因为这两个函数既不是#(> 10 %)也不是6。 这就是步骤的工作方式:

nil

您正在寻找的是撰写谓词函数:

false

仅供参考:还有补充“((and odd? #(> 10 %)) 6) (#(> 10 %) 6) ;; => true ”:((every-pred odd? #(> 10 %)) 6) ;; => false