小编Mat*_*ick的帖子

有没有办法在XML文件中使用条件语句?

我有一个包含URL的XML文件.

我想添加案例,因为我每次都需要一个不同的URL.

我知道我可以用Java做到这一点,但我现在不想改变我的Java代码.

java xml conditional

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

为什么两个分支似乎都执行?

我很困惑.这是我的代码:

use strict;
use warnings;
use Test::More;

subtest 'huh?' => sub {
    my $i = 0;
    eval {
        $i++;
    } || do {
        $i++;
    };
    is($i, 1, "only execute one branch (i: $i)");
};

&done_testing();
Run Code Online (Sandbox Code Playgroud)

这是我的测试输出(当使用ActivePerl 5.12,Mac OS X运行时):

    not ok 1 - only execute one branch (i: 2)
    #   Failed test 'only execute one branch (i: 2)'
    #   at test.pl line 14.
    #          got: '2'
    #     expected: '1'
    1..1
    # Looks like you failed 1 test of 1.
not …
Run Code Online (Sandbox Code Playgroud)

perl eval

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

在SQL中,使用带括号的括号是什么意思?

例:

select count(*) from my table
where
column1 is not null
and
(column1 = 4 OR column1 = 5)
Run Code Online (Sandbox Code Playgroud)

例2:

select count(*) from my table
where
column1 is not null
and
column1 = 4 OR column1 = 5
Run Code Online (Sandbox Code Playgroud)

在我的数据库中有真正的列名,我得到两个不同的结果.带括号的那个是对的,因为如果我这样做:

select count(*) from my table
where
column1 is not null
and
column1 = 4
Run Code Online (Sandbox Code Playgroud)

然后

select count(*) from my table
where
column1 is not null
and
column1 = 5
Run Code Online (Sandbox Code Playgroud)

并将它们加在一起,我得到正确答案......我想.与上面括号的第一个示例相同.

为什么通过更改OR测试的优先级会得到不同的结果?

sql oracle operator-precedence associativity

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

为什么'let'引入的绑定范围有限?

在Lisp中(我仍在使用SBCL学习Lisp),声明了局部变量let,范围仅在该表达式中.这是为什么?与其他命令式语言(如C/C++/Java ...)不同,我们可以在其功能范围内的任何位置自由使用局部变量.

lisp variables scope let

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

是否有用于函数编程的java库?

是否有人在java中编写了一个提供映射函数的库(例如来自lisp的mapcar).

我看到这篇文章和其他几篇文章(例如本文中的这篇文章),但遗憾的是我认为没有什么是主流和/或可用的.

java functional-programming

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

如何迭代Clojure中的嵌套数组哈希结构?

我想在一个数据结构中存储多个配置条目(可以灵活扩展),如下所示:

(def config [{:host "test", :port 1},{:host "testtest", :port 2}])
Run Code Online (Sandbox Code Playgroud)

稍后我想迭代并处理该数组中的每个散列。

有人可以指出如何在 Clojure 中做到这一点吗?

clojure

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

defmacro生成另一个defmacro

我遇到了这个问题......我有两个非常相似的宏

(import java.lang.management.ManagementFactory)

(defmacro with-thread-manager [tm & body]
  {:pre [(and (vector? tm) (= 1 (count tm)))]}
  `(let [~(first tm) (ManagementFactory/getThreadMXBean)]
     ~@body))

(defmacro with-os-manager [tm & body]
  {:pre [(and (vector? tm) (= 1 (count tm)))]}
  `(let [~(first tm) (ManagementFactory/getOperatingSystemMXBean)]
     ~@body))
Run Code Online (Sandbox Code Playgroud)

它们的用法如下:

(defn thread-count []
  (with-thread-manager [tm] (.getThreadCount tm)))

(thread-count)
;; => 12

(defn application-cpu-time []
  (with-os-manager [osm] (.getProcessCpuTime osm)))

(application-cpu-time)
;; => 71260000000
Run Code Online (Sandbox Code Playgroud)

我希望with-*-manager将这两个宏推广到另一个宏,以便我可以像这样简化它们:

(defmanagementblock with-thread-manager (ManagementFactory/getThreadMXBean))
(defmanagementblock with-os-manager (ManagementFactory/getOperatingSystemMXBean))
Run Code Online (Sandbox Code Playgroud)

所以我知道的最简单的方法是稍微改变一下宏

(defmacro with-thread-manager [tm & body]
  {:pre [(and (vector? …
Run Code Online (Sandbox Code Playgroud)

macros clojure

1
推荐指数
2
解决办法
150
查看次数

为什么此代码会产生"非详尽的模式以防万一"错误?

我正在尝试本教程中给出的以下示例.

我无法理解的是案件是如何保护案件'c'_根本不使用的on

我修改了这里给出的代码,但是当我运行它时,我得到错误"非详尽的模式以防万一":

*StateGame> main "accaaaa"
*** Exception: state1.hs:(27,5)-(31,36): Non-exhaustive patterns in case
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

haskell case guard

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

加入SQL的高级计数

我有两个表,项目和类别,下面的示例数据:

Items:
Title    category_id
Item A   1
Item B   2
Item C   3
Item D   2
Item E   3
Item F   2

Categories
category_id   category
1             wood
2             plastic
3             metal
Run Code Online (Sandbox Code Playgroud)

我需要做的是计算项目总数,然后列出每个类别中的数量以及总数的百分比

我知道我可以计算每个项目和总数,例如

select 
  count(*) as total, 
  sum(category_id=1) as cat_1, 
  sum(category_id=2
.... etc etc
Run Code Online (Sandbox Code Playgroud)

但有没有办法在不计算每一个的情况下完成所有操作(可能会添加新类别并希望保持工作)然后加入类别表以生成名称?

理想情况下,这是我想要返回的内容:

Category    how many    % of total
wood        1           17%
plastic     3           50%
metal       2           33%

Total       6           100%
Run Code Online (Sandbox Code Playgroud)

(17%是1/6 => 16.666666667%舍入).

mysql sql

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

使用递归创建clojure添加函数

我正试图用clojure包围递归.我使用以下代码得到堆栈溢出错误,有人能发现问题吗?

(我知道这是低效的,但它严格用于学习目的)

user=> (defn addall
         ([] 0)
         ([& x]
           (if (empty? x) 0)
           (+ (first x) (addall (rest x)))))
user/addall
user=> (addall 1)
StackOverflowError   clojure.lang.ArraySeq.next (ArraySeq.java:78)
Run Code Online (Sandbox Code Playgroud)

recursion clojure

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