问题标签 [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.
scala - Scala:限制性状混入 f 有界多态性状
我有:
现在可以很容易地添加像Feline
这样可以扩展Pet
类的特征,如下所示:
但是,如果我要引入一种Pet
与自我类型混合的类型,例如:
我得到错误:
类型参数 [T] 不符合 trait Pet 的类型参数边界 [T <: Pet[T]]
我的理解是,这是因为自我类型检查会单独查看PetCareInfo
类型A with B
,因此无法满足限制。(不确定这是错误还是功能)
我可以改用存在类型:
这会有点工作。两个问题:
- 我无法在混入限制行直接定义存在类型。我得到:
; 预期但找到了“forSome”。
有没有办法解决这个问题?
在实践中
PetCareInfo
'forSome
限制 +Pet
自己的限制意味着我不能拥有:class Cat extends Pet[Dog] with PetCareInfo[Cat]
但我想知道是否有办法不依赖Pet
于此。
更新:
对于问题 2,我可以将现有的类型限制更改为:
这似乎正在解决问题。虽然,仍然不能保证结构A
类型与 相同T
,所以我们仍然依赖Pet
. :(
java - Java - 用有界类型参数替换实现类型的接口类型
我正在尝试使用 Haskell 学习函数式编程,但我很难理解一些概念。我认为将其中一些概念翻译成 Java 是个好主意,因为它是我感觉最舒服的语言。
我有以下界面Applicative<A>
:
假设我有一个 interface 的实现ListApplicative<A>
。它扩展ArrayList<A>
并实现Applicative<A>
.
问题是:我如何把所有的Applicative<?>
变成ListApplicative<?>
?甚至可能吗?有什么技巧可以做到吗?
我已经阅读了一些关于 F-bound 类型的内容,但我不知道该怎么做。我不能使用B
orC
作为参数化类型,因为它们的类型在您运行该函数之前是未知的。
我看过其他类似的问题,比如这个关于 functors的问题,这个关于泛型泛型的问题和这个关于接口的问题,但我没有找到我想要的答案。
非常感谢!
scala - Scala中的递归数据类型
嗨,我想知道是否有人可以解释我在 Spark 代码库中找到的这个签名。它看起来像一个递归数据类型,它用于构建查询计划,所以它有点意义。有没有人对此有更详细的了解?
scala - Scala 泛型类型边界 - 指向实际类型
我正在使用 scala 泛型和类型边界来了解其可能的用例。我对一个场景感到困惑。
假设我有一个特质 Combinable
我想为 Vector[A] 实现一个隐式定义:
到目前为止一切都很好,如果我将 Vector 替换为 B 类型上限,问题就开始了GenTraversable
:
我只是希望此方法以 B 类型返回,但self ++ other
失败并出现以下编译错误:
GenTraversable[A] 类型的表达式不符合预期的 B 类型
scala - Scala 中的 F 有界类型和存在类型的编译问题
我正在使用 F 有界类型以便能够返回当前类型
我正在尝试编写一个使用它的通用辅助方法。
问题是:为什么下面的不编译?
错误是value updated is not a member of _$1
我已经想出了这两种解决方法。它们是等价的吗?
scala - Spark 对象的类型参数界限很难获得
我是初学者Scala
。
我正在尝试创建一个接受 aProbabilisticClassifier
作为输入并产生一个CrossValidator
模型作为输出的对象:
但这给了我:
我已经尝试了几种[A, M, T]
参数组合以及方法参数中的不同类型。
这个想法是能够将 aLogisticRegression
或 aRandomForestClassifier
输入到这个函数中。从文档中:
有人可以指出我在哪里可以学习实现这种方法所需的资源吗?
我正在使用Spark
2.1.0。
编辑 01
谢谢@Andrey Tyukin,
很抱歉,代码不可重现。它实际上是一个字符串。您的代码确实有效,但也许我表达自己错误:
所以也许我的想法从一开始就错了。是否可以创建一个同时接受两者LogisticRegression
或一个RandomForestClassifier
对象的方法?
将代码编辑为MCVE:
/li>
java - 如何从通配符类型转到参数化类型?
假设有一个Row
具有多个类型参数的框架类型,以及一个处理该Row
类型实例并使用所有这些类型参数的方法。
我有一种方法可以同时处理任何类型Row
,甚至是不同的类型,所以显然我使用的是通配符类型Row<?,?>
。问题是,如何调用采用 aRow<R,K>
和 a的方法Row<?,?>
?
我的思路:我不完全知道什么是类型Row<?,?>
,但肯定是某种Row
好的。而当一个泛型方法采用Row<R,K>
时,它意味着它想要做一些事情,R
但K
除此之外它可以处理任何类型的Row
. 所以我的“任何”类型应该与采用“任何”类型的方法一起使用,对吧?
我在下面附上了我尝试过的示例代码。最奇怪的是最后一行确实有效,但它并不比我认为的其他任何东西都更安全。所以基本上我想要一个比这更干净的解决方案,或者解释为什么这是要走的路。
(您可以将此示例直接发送到 javac 以查看会发生什么。使用 Java 1.8:https ://pastebin.com/LB10ySsD )
java - 是否可以使用 f 有界量化在具有默认实现的通用接口中返回“this”
此 OOP 样式代码与https://en.wikipedia.org/wiki/Bounded_quantification非常相似。
不同之处在于我将外部函数 (Fmin) 移动到 Object 方法 (min)
我的问题是:是否可以使用 f 有界量化在具有默认实现(min:T -> T)的通用接口(IOrd)中返回“this”?
scala - 当泛型类型对相同的泛型类型进行操作时,Scala 类型不匹配
我有一个通用案例类 Route,它包含 Location 的子类列表。但是在以下方法中,我在调用中遇到类型不匹配distance
expected: head.T, actual: T
基本的抽象Location类如下
由于 head 和 h 都来自同一个列表route
,我不明白为什么它们不是同一类型。
c++ - Scala 可变数量的参数是 F 有界类型的子类
在 C++ 中,我可以创建一个可变参数函数模板,如下所示:
我想在 Scala 中重新创建这种行为。这是我到目前为止所拥有的:
我收到错误:
我相信这与 Scala 填写占位符类型有关,但我不确定。