小编Div*_*shu的帖子

使用 Scala-2.13 将 Java 映射转换为 Java 代码中的 Scala 不可变映射

我想将我的 java 映射转换为 Scala 不可变映射,我有一个示例代码,可以在 Scala 2.12 中正常工作,但在 Scala 2.13 中失败。

设置

untitled14\build.sbt

name := "untitled14"
version := "0.1"
scalaVersion := "2.12.13"
Run Code Online (Sandbox Code Playgroud)

untitled14\project\build.properties

sbt.version = 1.4.1
Run Code Online (Sandbox Code Playgroud)

untitled14\src\main\java\Main.java

import scala.Predef;
import scala.Tuple2;
import scala.collection.JavaConverters;

import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) {

        Map<Integer, String> javaMap = new HashMap<>();
        javaMap.put(1, "java");
        javaMap.put(2, "scala");
        javaMap.put(3, "js");

        System.out.println("Java map -> " + javaMap);

        scala.collection.immutable.Map<Integer, String> scalaMap = JavaConverters
                .mapAsScalaMapConverter(javaMap)
                .asScala()
                .toMap(Predef.<Tuple2<Integer, String>>conforms());

        System.out.println("Scala map -> " + scalaMap); …
Run Code Online (Sandbox Code Playgroud)

java dictionary scala scala-2.13

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

scala 2.13 自动隐式解析错误

我正面临这个与 Scala 隐式解析相关的奇怪问题

这是代码片段

import scala.collection.Factory
import scala.collection.immutable.Seq

sealed trait A

sealed trait B

case class BImpl() extends B

case class AImpl() extends A

object implicitsContainer {

  type AB = (A, B)

  implicit def toStringAnyTuples[C[X] <: Iterable[X], A <: AB]
  (col: C[A])
  (implicit factory: Factory[(String, Any), C[(String, Any)]])
  : C[(String, Any)] = {

    factory.fromSpecific(col.iterator.map(f => f._1.toString -> f._2))
  }
}

object Main extends App {

  import implicitsContainer._

  def a(f: Seq[(String, Any)]): Seq[(String, Any)] = f

  val w: Seq[(AImpl, BImpl)] = …
Run Code Online (Sandbox Code Playgroud)

scala implicit scala-collections scala-2.13

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