`
regular
  • 浏览: 76265 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用Scala实现的调用Google在线翻译

阅读更多
    一方面使用在线字典的时候感觉速度不快,另一方面在学习Scala,因此自己用Scala和google-translate-api-java做了一个。用api的确方便,根本不用处理诸如包装,发送,接收,结果解包之类的事情。

package cn.sh.huang.translate

import com.google.api.translate._
import scala.actors.Actor._
import java.io.BufferedReader
import java.io.InputStreamReader

object Test {
  def main(args : Array[String]) {
    // val prop = System.getProperties
    // prop.put("http.proxyHost", "url.here")
    // prop.put("http.proxyPort", "8080")
    val echoActor = actor {
      def execute() {
        val onJob = receive {
          case "quit" =>
            false
          case msg : String =>
            println(Translate.translate(
                msg, Language.ENGLISH,
                Language.CHINESE_SIMPLIFIED))
            true
        }
        if (onJob) execute()
      }
      execute()
    }
    val reader = new BufferedReader(new InputStreamReader(System.in))
    def translate() {
      val word = reader.readLine
      echoActor ! word
      if (word != "quit") translate ()
    }
    translate()
  }
}


    使用了Scala的actor机制,好处是查询和返回是异步关系。而且全部使用了函数式的方式,递归。没有while和var。不过似乎有些问题,输入了若干次之后,要等到关闭的一刹那,所有的翻译结果才回来。很搞。感觉似乎不像是哪里没控制好出的问题。不知道是不是因为我的网络有问题。
1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics