将Java方法调用链接和对象构造转换为普通Clojure

时间:2015-05-06 21:30:10

标签: java clojure opentok tokbox

Java中链接方法调用的Clojure等价是什么?

TokenOptions tokenOpts = new TokenOptions.Builder()
      .role(Role.MODERATOR)
      .expireTime((System.currentTimeMillis() / 1000) + (7 * 24 * 60 * 60)) // in one week
      .data(connectionMetadata)
      .build());

此代码是从https://tokbox.com/opentok/tutorials/create-token/java/

复制而来的

1 个答案:

答案 0 :(得分:4)

第一步:将开头一个标记向左移动,添加doto链接方法应用程序:

(def tokenOpts (doto (TokenOptions/Builder)
                     (.role Role.MODERATOR)
                     (.expireTime (System.currentTimeMillis() / 1000) + (7 * 24 * 60 * 60)) // in one week
                     (.data connectionMetadata)
                     (.build));

然后“重复”每个方法的参数:

(def tokenOpts (doto (TokenOptions/Builder)
                     (.role Role/MODERATOR)
                     (.expireTime (+ (System.currentTimeMillis() / 1000) 
                                  (7 * 24 * 60 * 60)) // in one week
                     (.data connectionMetadata)
                     (.build));

然后“重复”到这些函数的参数(注意我在这里切换到了单词函数,因为我们现在已经超出Java思维模式了:

(def tokenOpts (doto (TokenOptions/Builder)
                     (.role Role/MODERATOR)
                     (.expireTime (+ (/ (System/currentTimeMillis) 1000) 
                                     (* 7 24 60 60))) ;; in one week
                     (.data connectionMetadata)
                     (.build))

您需要在命名空间声明(文件顶部的块)中添加(:import .....),以确保在这些名称下可以使用Roll和TokenOptions类。