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/
复制而来的答案 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类。