小编DK_*_*DK_的帖子

Scala和Java Generics - 提取和返回嵌套类型

Java泛型可以根据表达式的返回类型推断泛型类型参数的类型.考虑以下:

public static <T> T uncheckedCast(Object o) {
    return (T)o;
}
Run Code Online (Sandbox Code Playgroud)

我们可以称之为:

Map<Baz,Bog> bazbogMap = new HashMap<Baz,Bog>();
String foo = uncheckedCast(bazbogMap);
Run Code Online (Sandbox Code Playgroud)

这将编译但RuntimeException在调用时抛出一个,因为它会尝试将其转换Map为a String但是失败.但重点是Java <T>根据呼叫站点的预期结果类型推断出值.

我们也可以在Scala中执行以下操作:

def uncheckedCast[T](o: AnyRef): T = o.asInstanceOf[T]
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

Java还可以从嵌套定义中推断出类型参数并返回它们(即我们实际上不必将结果分配给类型,以便在使用它之前使用它; Java知道它已经是什么.)

一个简单的类显示:

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

public class KeysAndValues {
    public interface Key<T> {}
    public static class StringKey implements Key<String> {}

    private final Map<Class<?>, Object> lookup;

    public KeysAndValues() {
        lookup = new HashMap<Class<?>, Object>();
    }

    @SuppressWarnings("unchecked")
    public <V, K extends Key<V>> …
Run Code Online (Sandbox Code Playgroud)

java generics scala stanford-nlp scala-java-interop

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

C# 中的 Scala flatMap.toMap 类似物

前几天我正在用 C# 编写一些代码来获取对象列表,每个对象包含一个数组字段,并将其转换为映射(即字典),其中对象成为值,并且对象的数组字段的每个元素成为键。这可能没有多大意义,所以让我们展示一些代码。在 Scala 中,我可能会这样做:

// Data class
class MyClass(val keys:Array[String])

object MyClassTests {

  // Dummy method just to get some sample data
  def getMyClassList() = List(
    new MyClass(Array("one", "two", "three")),
    new MyClass(Array("four", "five", "six")))


  def test() = {
    val list = getMyClassList()
    val map1 = list.view.flatMap(mc => mc.keys.map(_ -> mc)).toMap
    // or, if you like for-comprehensions:
    val map2 = (for (mc <- list.view; k <- mc.keys) yield k -> mc).toMap
    map1 // or map2, same difference
  }
}
Run Code Online (Sandbox Code Playgroud)

在 …

c# scala

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

WordNet 3.0将不会安装在OS X Mountain Lion上(10.8)

尝试make WordNet 3.0时,它退出时出现错误2.向上滚动,出现以下错误:

In file included from tkAppInit.c:16:
/usr/include/tk.h:78:23: error: X11/Xlib.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我们如何在OS X 10.8上安装WordNet?

x11 tk-toolkit tcl wordnet osx-mountain-lion

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