小编muk*_*210的帖子

警告匹配可能并非详尽无遗

我正在尝试下面的代码:

  val set1 = Set(1,2,3,4,5,67,8)
  val TRUE_BOOLEAN = true
  val FALSE_BOOLEAN = false
  set1.contains(4) match {
    case TRUE_BOOLEAN => println("Element found")
    case FALSE_BOOLEAN => println("Element not found")
  }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行它时IntelliJ,它会在Messages标签中给出以下警告:

Warning:(11, 16) match may not be exhaustive.
It would fail on the following inputs: false, true
  set1.contains(4) match {
Run Code Online (Sandbox Code Playgroud)

然而,如果我使用truefalse不是TRUE_BOOLEANFALSE_BOOLEAN,我没有收到任何警告.

set1.contains(4) match {
    case true => println("Element found")
    case false => println("Element not found")
  }
Run Code Online (Sandbox Code Playgroud)

有人可以解释这个警告的原因,为什么它会消失truefalse …

scala pattern-matching

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

Alternative to openjdk:8-alpine for Kafka Streams

I am using openjdk:8-alpine for deploying Kafka Streams application. I am using Windowing and it crashes with below error:

Exception in thread "app-4a382bdc55ae-StreamThread-1" java.lang.UnsatisfiedLinkError: /tmp/librocksdbjni94709417646402513.so: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /tmp/librocksdbjni94709417646402513.so)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:78)
    at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:56)
    at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:64)
    at org.rocksdb.RocksDB.<clinit>(RocksDB.java:35)
    at org.rocksdb.Options.<clinit>(Options.java:22)
    at org.apache.kafka.streams.state.internals.RocksDBStore.openDB(RocksDBStore.java:116)
    at org.apache.kafka.streams.state.internals.Segment.openDB(Segment.java:43)
    at org.apache.kafka.streams.state.internals.Segments.getOrCreateSegment(Segments.java:91)
    at org.apache.kafka.streams.state.internals.RocksDBSegmentedBytesStore.put(RocksDBSegmentedBytesStore.java:100)
    at org.apache.kafka.streams.state.internals.RocksDBSessionStore.put(RocksDBSessionStore.java:122)
    at org.apache.kafka.streams.state.internals.ChangeLoggingSessionBytesStore.put(ChangeLoggingSessionBytesStore.java:78)
    at org.apache.kafka.streams.state.internals.ChangeLoggingSessionBytesStore.put(ChangeLoggingSessionBytesStore.java:33)
    at org.apache.kafka.streams.state.internals.CachingSessionStore.putAndMaybeForward(CachingSessionStore.java:177)
    at org.apache.kafka.streams.state.internals.CachingSessionStore.access$000(CachingSessionStore.java:38)
    at org.apache.kafka.streams.state.internals.CachingSessionStore$1.apply(CachingSessionStore.java:88)
    at …
Run Code Online (Sandbox Code Playgroud)

apache-kafka docker rocksdb alpine-linux apache-kafka-streams

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

与JavaScript中的Scala View等效

在Scala中,view允许阻止创建全新的集合。例如在Scala中,“视图”有什么作用?

JavaScript中有类似的东西吗?我的用例:

x = inputValue.split(",").map(x => x.trim()).filter(f1).map(f2)
Run Code Online (Sandbox Code Playgroud)

如您在上面的代码中看到的,将创建2个中间集合。JavaScript中有什么方法可以避免创建上述中间集合?

javascript functional-programming scala lazy-evaluation lazy-sequences

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

在没有案例类的情况下理解unapply

我正在尝试下面的例子来理解unapply,

class Emp(name: String, age: Int)

object Emp {
  def apply(name: String, age: Int): Emp = new Emp(name, age)

  def unapply(emp: Emp): Option[(String, Int)] = Some(emp.name, emp.age)
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,失败,编译错误Cannot resolve symbol name,Cannot resolve symbol age.

然而,当我声明Empcase类时,它完美地工作,没有任何编译错误.

有人可以解释这背后的原因吗?

注意:scalaVersion- 2.12.7

scala unapply

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