小编Pat*_*sen的帖子

隐式转换为Runnable?

作为练习,我尝试创建一个隐式转换,它将接受一个函数并生成一个Runnable.这样你就可以调用接受Runnable对象的Java方法,并像封闭一样使用它们.

隐式转换很容易:

    implicit def funToRunnable(fun : Unit) = new Runnable() { def run = fun }
Run Code Online (Sandbox Code Playgroud)

但是我不知道怎么称呼它.如何传入一个返回Unit的无参数函数,而不是立即进行评估?例如,我想要以下内容来打印"12",而是打印"21"因为print("2")一次评估.

    var savedFun : Runnable = null
    def save(r : Runnable) = { savedFun = r }

    save(print("2"))
    print("1")
    savedFun.run()
Run Code Online (Sandbox Code Playgroud)

如何告诉编译器将其print("2")视为函数的主体,而不是立即进行评估?我试过的一些可能性,比如

    save(() => print("2"))
Run Code Online (Sandbox Code Playgroud)

要么

    save(=> print("2"))
Run Code Online (Sandbox Code Playgroud)

不是合法的语法.

scala implicit-conversion runnable

17
推荐指数
4
解决办法
9792
查看次数

Scala Eclipse Autocomplete破了?

我正在尝试使用eclipse进行自动完成以进行scala开发.我正在尝试从Scala类引用一个java类,并且自动完成功能从未找到它.

例如,使用此scala类:

object Main {
 def main(args: Array[String]) {
  val btn = new JButton
 }
}
Run Code Online (Sandbox Code Playgroud)

当我在键入JButton结束时按下ctrl + space时,autocomplete会找到"Arr","asof","case","catch","def"等...但是没有类.

在Window-> Preferences-> Java-> Editor-> Content Assist-> Advanced我选择了"Default Proposal Kinds":

Java提案,Java类型提案,SWT模板提案和模板提案.

我在Windows 7中使用Eclipse 3.5.2下的Scala 2.8.0-final插件

还有其他人遇到过这个问题吗?有解决方案吗

eclipse scala autocomplete

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

GWT Jetty WebSockets 405错误

我正在尝试修改标准的GWT StockWatcher演示应用程序,通过websocket接收股票报价.我正在使用gwt-ws作为我的websockets实现,并且根据gwt-ws主页的说明,我已经升级了GWT的嵌入式Jetty版本.

但是,当我尝试打开websocket连接时,我得到以下405错误.有人有建议吗?

[WARN] 405 - GET /stockwatcher/webSocket (127.0.0.1) 1457 bytes
   Request headers
      Upgrade: websocket
      Connection: Upgrade
      Host: 127.0.0.1:8888
      Origin: http://127.0.0.1:8888
      Sec-WebSocket-Key: zlH08kgvDw3qHs+/OaQ9/w==
      Sec-WebSocket-Version: 13
      Sec-WebSocket-Extensions: x-webkit-deflate-frame
   Response headers
      Content-Type: text/html;charset=ISO-8859-1
      Cache-Control: must-revalidate,no-cache,no-store
      Content-Length: 1457
Run Code Online (Sandbox Code Playgroud)

这是我的客户端websocket代码,从onModuleLoad()调用:

private void setupWebsocket() {
    if (!JavaScriptWebSocket.IsSupported())
        return;

    //webSocketURL looks like "ws://127.0.0.1:8888/de_csenk_gwtws_demo/webSocket"
    String webSocketURL = GWT.getModuleBaseURL().replace("http", "ws") + "webSocket";

    new JavaScriptWebSocketFactory().createWebSocket(webSocketURL, new WebSocketCallback() {

        public void onOpen(WebSocket webSocket) {
            log("Web Socket Connection Open");
            webSocket.send("Test Message");
        }

        public void onMessage(WebSocket webSocket, …
Run Code Online (Sandbox Code Playgroud)

gwt jetty websocket

5
推荐指数
0
解决办法
1688
查看次数