问题标签 [f-bounded-polymorphism]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
133 浏览

scala - Scala:限制性状混入 f 有界多态性状

我有:

现在可以很容易地添加像Feline这样可以扩展Pet类的特征,如下所示:

但是,如果我要引入一种Pet与自我类型混合的类型,例如:

我得到错误:

类型参数 [T] 不符合 trait Pet 的类型参数边界 [T <: Pet[T]]

我的理解是,这是因为自我类型检查会单独查看PetCareInfo类型A with B,因此无法满足限制。(不确定这是错误还是功能)

我可以改用存在类型:

这会有点工作。两个问题:

  1. 我无法在混入限制行直接定义存在类型。我得到:

; 预期但找到了“forSome”。

有没有办法解决这个问题?

  1. 在实践中PetCareInfo'forSome限制 +Pet自己的限制意味着我不能拥有:

    class Cat extends Pet[Dog] with PetCareInfo[Cat]

但我想知道是否有办法不依赖Pet于此。

更新

对于问题 2,我可以将现有的类型限制更改为:

这似乎正在解决问题。虽然,仍然不能保证结构A类型与 相同T,所以我们仍然依赖Pet. :(

0 投票
0 回答
147 浏览

java - Java - 用有界类型参数替换实现类型的接口类型

我正在尝试使用 Haskell 学习函数式编程,但我很难理解一些概念。我认为将其中一些概念翻译成 Java 是个好主意,因为它是我感觉最舒服的语言。

我有以下界面Applicative<A>

假设我有一个 interface 的实现ListApplicative<A>。它扩展ArrayList<A>并实现Applicative<A>.

问题是:我如何把所有的Applicative<?>变成ListApplicative<?>?甚至可能吗?有什么技巧可以做到吗?

我已经阅读了一些关于 F-bound 类型的内容,但我不知道该怎么做。我不能使用BorC作为参数化类型,因为它们的类型在您运行该函数之前是未知的。

我看过其他类似的问题,比如这个关于 functors的问题,这个关于泛型泛型的问题这个关于接口的问题,但我没有找到我想要的答案。

非常感谢!

0 投票
1 回答
169 浏览

scala - Scala中的递归数据类型

嗨,我想知道是否有人可以解释我在 Spark 代码库中找到的这个签名。它看起来像一个递归数据类型,它用于构建查询计划,所以它有点意义。有没有人对此有更详细的了解?

0 投票
2 回答
102 浏览

scala - Scala 泛型类型边界 - 指向实际类型

我正在使用 scala 泛型和类型边界来了解其可能的用例。我对一个场景感到困惑。

假设我有一个特质 Combinable

我想为 Vector[A] 实现一个隐式定义:

到目前为止一切都很好,如果我将 Vector 替换为 B 类型上限,问题就开始了GenTraversable

我只是希望此方法以 B 类型返回,但self ++ other失败并出现以下编译错误:

GenTraversable[A] 类型的表达式不符合预期的 B 类型

0 投票
2 回答
149 浏览

scala - Scala 中的 F 有界类型和存在类型的编译问题

我正在使用 F 有界类型以便能够返回当前类型

我正在尝试编写一个使用它的通用辅助方法。

问题是:为什么下面的不编译?

错误是value updated is not a member of _$1

我已经想出了这两种解决方法。它们是等价的吗?

0 投票
1 回答
513 浏览

scala - Spark 对象的类型参数界限很难获得

我是初学者Scala

我正在尝试创建一个接受 aProbabilisticClassifier作为输入并产生一个CrossValidator模型作为输出的对象:

但这给了我:

我已经尝试了几种[A, M, T]参数组合以及方法参数中的不同类型。

这个想法是能够将 aLogisticRegression或 aRandomForestClassifier输入到这个函数中。从文档中:

有人可以指出我在哪里可以学习实现这种方法所需的资源吗?

我正在使用Spark2.1.0


编辑 01

谢谢@Andrey Tyukin,

很抱歉,代码不可重现。它实际上是一个字符串。您的代码确实有效,但也许我表达自己错误:

所以也许我的想法从一开始就错了。是否可以创建一个同时接受两者LogisticRegression或一个RandomForestClassifier对象的方法?

  • 将代码编辑为MCVE

    /li>
0 投票
1 回答
107 浏览

java - 如何从通配符类型转到参数化类型?

假设有一个Row具有多个类型参数的框架类型,以及一个处理该Row类型实例并使用所有这些类型参数的方法。

我有一种方法可以同时处理任何类型Row,甚至是不同的类型,所以显然我使用的是通配符类型Row<?,?>。问题是,如何调用采用 aRow<R,K>和 a的方法Row<?,?>

我的思路:我不完全知道什么是类型Row<?,?>,但肯定是某种Row好的。而当一个泛型方法采用Row<R,K>时,它意味着它想要做一些事情,RK除此之外它可以处理任何类型的Row. 所以我的“任何”类型应该与采用“任何”类型的方法一起使用,对吧?

我在下面附上了我尝试过的示例代码。最奇怪的是最后一行确实有效,但它并不比我认为的其他任何东西都更安全。所以基本上我想要一个比这更干净的解决方案,或者解释为什么这是要走的路。

(您可以将此示例直接发送到 javac 以查看会发生什么。使用 Java 1.8:https ://pastebin.com/LB10ySsD )

0 投票
1 回答
122 浏览

java - 是否可以使用 f 有界量化在具有默认实现的通用接口中返回“this”

此 OOP 样式代码与https://en.wikipedia.org/wiki/Bounded_quantification非常相似。

不同之处在于我将外部函数 (Fmin) 移动到 Object 方法 (min)

我的问题是:是否可以使用 f 有界量化在具有默认实现(min:T -> T)的通用接口(IOrd)中返回“this”?

0 投票
3 回答
452 浏览

scala - 当泛型类型对相同的泛型类型进行操作时,Scala 类型不匹配

我有一个通用案例类 Route,它包含 Location 的子类列表。但是在以下方法中,我在调用中遇到类型不匹配distance expected: head.T, actual: T

基本的抽象Location类如下

由于 head 和 h 都来自同一个列表route,我不明白为什么它们不是同一类型。

0 投票
1 回答
154 浏览

c++ - Scala 可变数量的参数是 F 有界类型的子类

在 C++ 中,我可以创建一个可变参数函数模板,如下所示:

我想在 Scala 中重新创建这种行为。这是我到目前为止所拥有的:

我收到错误:

我相信这与 Scala 填写占位符类型有关,但我不确定。