小编npa*_*pad的帖子

如何将Option [X]的Scala集合转换为X的集合

我开始探索Scala,我所吸引的一件事就是Option能够消除null相关错误的类型和承诺.

但是,我还没有能够弄清楚如何将列表(或其他集合)Option[String]转换为集合String(显然过滤掉任何值None).

换句话说,我如何从中得到:

List[Option[Int]] = List(Some(1))
Run Code Online (Sandbox Code Playgroud)

......对此:

List[Int] = List(1)
Run Code Online (Sandbox Code Playgroud)

如果这对答案有任何影响,我正在使用Scala 2.8.

scala scala-collections scala-option

74
推荐指数
2
解决办法
3万
查看次数

动态方法调用Clojure宏?

我正在尝试编写一个宏,它将根据给定的参数调用java setter方法.

所以,例如:

(my-macro login-as-fred {"Username" "fred" "Password" "wilma"})
Run Code Online (Sandbox Code Playgroud)

可能会扩展到类似以下内容:

(doto (new MyClass)
  (.setUsername "fred")
  (.setPassword "wilma"))
Run Code Online (Sandbox Code Playgroud)

你会怎么建议解决这个问题?

具体来说,我无法找到构造setter方法名称的最佳方法,并让它将其解释为宏的符号.

clojure

14
推荐指数
3
解决办法
2521
查看次数

在clojure中对java包名称进行别名化

给定一个java包xyz,我可以将xyz别名为一个较短的名称,这样我就可以将包内的java类称为my-alias.MyJavaClass.

如果那是不可能的,我可以将import所有类都放入我的命名空间中,但我不想手动指定每个类的名称,并且clojure API文档似乎不清楚是否可以对import所有类进行操作.自动打包.

clojure

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

将vim插件组织到单独的目录中

是否可以将我的每个vim插件放在我的~/.vim目录中的单独目录中?

将所有东西拆开到同一个地方似乎有些混乱.

vim

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

解决集合问题的算法

如果我有一组值(我将称之为x),以及x的多个子集:

求出所有可能的联合组合的最佳方法是什么,这些组合的联合等于x,但没有一个彼此相交.

一个例子可能是:

如果x是数字1到100的集合,我有四个子集:

  • a = 0-49
  • b = 50-100
  • c = 50-75
  • d = 76-100

那么可能的组合将是:

  • a + b
  • a + c + d

language-agnostic algorithm math set

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