小编Cyp*_*ius的帖子

Java 和 C# 的 deflate 函数的区别

我有 2 个用 C# 和 Scala 编写的 deflate 函数,当使用相同的输入运行时,返回的字节数组在前导字节和尾随字节中存在差异(中间字节之间的差异是由无符号/有符号字节机制预期的) C# 和 Scala)。

\n

Scala 中的 Deflate 函数:

\n
import java.io.ByteArrayOutputStream\nimport java.util.zip.{Deflater, DeflaterOutputStream}\n\nimport zio._\n\n\nobject ZDeflater {\n  val deflater = ZManaged.makeEffectTotal(new Deflater(Deflater.DEFLATED, true))(_.end)\n\n  val buffer = ZManaged.fromAutoCloseable(ZIO.succeed(new ByteArrayOutputStream()))\n\n  val stream = for {\n    d <- deflater\n    b <- buffer\n    s <- ZManaged.fromAutoCloseable(ZIO.succeed(new DeflaterOutputStream(b, d, true)))\n  } yield (b, s)\n\n  def deflate(input: Array[Byte]): RIO[blocking.Blocking, Array[Byte]] = stream.use { case (buffer, stream) =>\n    for {\n      ()    <- blocking.effectBlocking(stream.write(input))\n      ()    <- blocking.effectBlocking(stream.flush())\n      result = buffer.toByteArray\n …
Run Code Online (Sandbox Code Playgroud)

c# java scala zio

8
推荐指数
1
解决办法
384
查看次数

Scala 在匹配多个案例类时提取参数以供理解

我有一个带有多个 case 类的密封 trait 实现,每个 case 类都有自己的参数,其中一些具有相同类型的参数(我想提取,在这种情况下Trigger:),其中一些没有。

sealed trait Event

object MyTrait {
  final case class EventA(context: Context) extends Event

  final case class EventB(trigger: Trigger) extends Event

  final case class EventC(trigger: Trigger) extends Event

  final case class EventD(trigger: Option[Trigger] = None) extends Event

  ...

  final case class EventZ(factor: Factor) extends Event

}
Run Code Online (Sandbox Code Playgroud)

逻辑流程处理如下:

event match {
 case ev @(_: Event.EventA | _: Event.EventB |
      _: Event.EventC | _: Event.EventD) =>
   val amount = for {
     count1 <- countThis …
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching for-comprehension

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

标签 统计

scala ×2

c# ×1

for-comprehension ×1

java ×1

pattern-matching ×1

zio ×1