ScalaPB安装及使用

ScalaPBScala语言的一个protocol buffer编译器(protoc)插件。它将protocol buffer自动生成Scala case类、解析器和序列化。

 

ScalaPB托管在GitHub上。

主要特点

  • 建立在谷歌的protocolbuffer编译器之上,以确保与语言规范的完美兼容性。
  • 支持proto2proto3
  • 使用lenses可以方便地进行嵌套更新:
    val newOrder = order.update(_.creditCard.expirationYear := 2015)
  • 生成的case classes可以和java生成的代码共存(类名不冲突)。这允许从javaScala过渡。
  • 可以在protocol bufferJava生成代码和Scala生成代码之间选择性地生成转换方法。这使您逐步迁移项目成为可能。
  • New:支持protocol buffers 2.6.0中介绍过的oneof。
  • Newer:支持Scala.js0.5.X)。
  • 更新:支持GRPC0.5.X)。
  • Newest:支持sparksql0.5.23)。
  • Newest:支持和JSON的相互转换0.5 x)。
  • Newest:支持用户自定义选项(0.5.29)。

Installing in SBT (推荐!)

添加ScalaPBSBT插件到你的项目中以自动message生成Scala。创建文件project/ scalapb.sbt并添加以下内容:

addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.12") 

libraryDependencies += "com.trueaccord.scalapb" %% "compilerplugin" % "0.6.6"

添加下面内容到你的build.sbt

PB.targets in Compile := Seq(

scalapb.gen() -> (sourceManaged in Compile).value

)

// (optional) If you need scalapb/scalapb.proto or anything from

// google/protobuf/*.proto

libraryDependencies += "com.trueaccord.scalapb" %% "scalapb-runtime" % com.trueaccord.

scalapb.compiler.Version.scalapbVersion % "protobuf"

ScalaPB会查找src/main/protobuf中的protocol buffer文件,但这是可以个性化定制的。在SBT中运行compile命令在将会从protos文件生成Scala源码并编译。


更多配置选项,参见 ScalaPB SBT Settings

使用spbc独立运行

如果你想不通过SBTprotocol buffer编译成Scala,可以使用spbc(ScalaPB编译器)。

第一步,从 ScalaPB releases page on Github下载最新版本。

解压文件,你会发现两个脚本:bin/spbc (bin/spbc.bat),可以分别Unix / LinuxMac OS X操作系统(Windows上使用。

Spbc的使用和protoc完全一样。事实上,spbc调用protoc通过protoc传给spbc一个脚本作为Scala插件。

下面是一个通过命令行方式调用它的示例:

bin/spbc my.proto --scala_out=.

如果你想使用附加选项,如java_conversionsflat_package,或single_line_to_string,可以这样做:

bin/spbc my.proto --scala_out=OPT1,OPT2:path/to/output/dir/

OPT1OPT2是使用逗号分隔选项列表。例如:

bin/spbc my.proto --scala_out=flat_package,java_conversions:.
英文原文地址: https://scalapb.github.io/


本文为个人翻译文档,转载请注明出处!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 Go 代码转换为 Scala 代码,并不是一件直接的事情,因为 Go 和 Scala 是两种不同的编程语言,它们有不同的语法和语义规则。但是,你可以通过手动重写 Go 代码来实现类似的功能。 以下是一些指导步骤,可以帮助你将 Go 代码转换为 Scala 代码: 1. 理解 Go 代码:首先,你需要仔细阅读和理解 Go 代码的功能和逻辑。这将帮助你在转换过程中更好地理解代码的要求和目标。 2. 熟悉 Scala 语法:了解 Scala 的语法和特性,包括函数、类、模式匹配等。这样你才能够正确地将 Go 代码转换为 Scala 代码。 3. 创建 Scala 项目:在 Scala 中创建一个新的项目,并设置好相应的构建工具和依赖项。 4. 逐行转换代码:根据 Go 代码的功能,逐行将其转换为 Scala 代码。这可能涉及到重写函数、变量和数据结构等。确保在转换过程中保持程序的逻辑正确性。 5. 调试和测试:在完成代码转换后,进行调试和测试以确保转换后的代码功能正确。 需要注意的是,由于 Go 和 Scala 是两种不同的语言,所以在转换过程中可能会遇到一些挑战和问题。某些功能可能无法直接转换,或者存在语义上的差异。因此,这个转换过程可能需要耗费一些时间和精力。 此外,还可以考虑使用其他的语言转换工具或库来辅助转换过程。例如,可以使用 ANTLR、ScalaPB 等工具来自动转换一部分代码。但是,这些工具只能提供一部分的转换结果,还需要手动进行进一步的修改和调整。 总而言之,将 Go 代码转换为 Scala 代码是一个复杂的任务,需要深入理解两种语言的特点和语法规则。希望以上的步骤能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值