Clojure:Java互操作IBM watson对话服务
会话服务的java代码编写为Clojure:Java互操作IBM watson对话服务,java,clojure,Java,Clojure,会话服务的java代码编写为 import com.ibm.watson.developer_cloud.conversation.v1.ConversationService; import com.ibm.watson.developer_cloud.conversation.v1.model.MessageRequest; import com.ibm.watson.developer_cloud.conversation.v1.model.MessageResponse; /* s
import com.ibm.watson.developer_cloud.conversation.v1.ConversationService;
import com.ibm.watson.developer_cloud.conversation.v1.model.MessageRequest;
import com.ibm.watson.developer_cloud.conversation.v1.model.MessageResponse;
/*
some code written here
*/
MessageRequest newMessage = new MessageRequest.Builder().inputText(input).context(context).build();
我的主要问题是如何写这个
**MessageRequest newMessage = new MessageRequest.Builder().inputText(input).context(context).build();**
在clojure
这就是我到目前为止所做的
(ns clj.core
(:import
(com.ibm.watson.developer_cloud.conversation.v1 ConversationService)
(com.ibm.watson.developer_cloud.conversation.v1.model MessageRequest)
(com.ibm.watson.developer_cloud.conversation.v1.model MessageResponse)))
(let [username "foo"
password "bar"
input "hello"
context {}
workspaceId "ibm-watson-id"
service (ConversationService. "2017-08-26")
userPass (.setUsernameAndPassword service username password)
;obviously this is wrong
;dont know how to get this right
newMessage (.build (.context context (.inputText input (MessageRequest.Builder.))))
response (.message service workspaceId newMessage)]
response)
请帮忙。谢谢啊哈,终于弄明白了,MessageRequest类似乎还有另一个名为Builder的类 我所做的只是引用这个类并调整必要的
(ns clj.core
(:import
(com.ibm.watson.developer_cloud.conversation.v1 ConversationService)
(com.ibm.watson.developer_cloud.conversation.v1.model MessageRequest)
(com.ibm.watson.developer_cloud.conversation.v1.model MessageResponse)))
(let [username "foo"
password "bar"
input "hello"
context {}
workspaceId "ibm-watson-id"
service (ConversationService. "2017-08-26")
userPass (.setUsernameAndPassword service username password)
;just wanna make it work
msgReq (MessageRequest$Builder.)
inputText (.inputText msgReq input)
content (.context inputText context)
newMessage (.build content)
response (.execute (.message service workspaceId newMessage))]
(println "Watson Response: " response))
doto
适用于需要对对象进行状态更改的情况,而->
适用于构建器模式:新消息(->(MessageRequest$builder.)(.inputText输入)(.context上下文)(.build))
;这样,您就不必考虑命名处于构建器状态之间的所有构建器。