问题标签 [type-bounds]

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 投票
2 回答
820 浏览

scala - scala 类型需要 toString

在 Scala 中,最普遍的要求类型可以被视为字符串的方法是什么?

我知道视图绑定要求一个对象可以被“视为”另一种类型,但这不起作用。

类型 Any 有一个 toString 方法...所以我可以做一个类型绑定...但是 Scala 中的每个对象都会自动成为 Any 的子类型吗?看起来可能,但是出于某种我没有预料到的原因,这是愚蠢的吗?

所以它似乎有效,即使我的对象没有明确扩展 Any 的任何子类。这是否会推广到 Scala 中的任何对象,即使它不一定最终得到一个看起来像我想要的漂亮字符串?

编辑

根据下面的评论,作为字符串查看和创建新字符串是不同的。在这种情况下,我不在乎,但要使视图绑定版本工作......我猜这样的事情会合适吗?

0 投票
1 回答
130 浏览

scala - 为什么Scala编译器禁止将通配符类型声明为类型参数的超类型

我试图创建一个与依赖类型相关的类型别名_ >: a.type

Scala编译器报了一个我看不懂的错误:

如果我替换a: Aa: A with AnyRef,它可以工作:

为什么?限制的目的是什么?

0 投票
1 回答
32 浏览

java - 使用类型边界调用接口中不存在的类中的方法

我有以下没有任何方法的界面。

我通过以下方式实现它。

如何调用 PerfGauge 类中以 IMetric 作为其类型的方法?我相信这可以通过类型边界来完成?如果是这样,有人可以举个例子吗?

我想做的是,

0 投票
2 回答
47 浏览

scala - 子类型导致任何:编译器中的错误或我的代码问题?

让我直接讨论我在使用类型边界时遇到的问题。
让我们考虑以下内容......我创建了一个这样的函数'foo'

我在 scala 工作表中调用了 foo ,比如

我得到了类似的结果

注意 Mars 和 2400 的推断类型
现在我想强制函数 'foo' 接受整数或浮点数或双精度数(任何类型是 AnyVal 的子类型)。

为了强制执行,我编写了类似的代码

从前面的代码中推断出的类型是 (String,Int) 并且当我调用 fooNew 时

我很惊讶地看到编译器确实让我的代码通过并且没有引发错误,而是给出了类似的输出

现在,所需的执行方式在这里不起作用。如果我做了这样的事情

编译器肯定会为我引发错误,而且确实如此!

我想问,为什么编译器没有将类型设为 Int 而是推断出类型 Any 并让我的代码通过类型检查?
我是否总是需要将第二种类型强制为AnyVal的子类型,而不是让编译器为我推断它?或者它是编译器中的错误。
如果您发现我的问题具有误导性或不符合您的期望,请寻求原谅。
目前我正在使用 scala-library 2.11.8
谢谢

0 投票
3 回答
52 浏览

scala - 定义参数的共同下限

在以下函数中,Scala 编译器能够将返回类型定义为 if/else 表达式中使用的值的最低通用超类型:

考虑以下层次结构:

上面的函数cond被定义为返回一个 type 的值X

但是,如果AB是函数定义中的类型参数,则cond其返回类型为Any

是否可以让编译器使用类型参数的最低通用超类型?

我尝试了以下一些变体,但没有成功:

编辑:上面的问题过于简单化了。事实上,我真正的问题已经解决了其中一个类型参数:

0 投票
1 回答
53 浏览

scala - <% 在 Scala 中的含义以及在抽象类定义中的使用

<% 在 Scala 中是什么意思?

我看到的上下文是我试图扩展的抽象类声明。这是课程的重要部分:

这是 Result 特征的标题:

我能够成功创建一个扩展 Result 的类。为简化起见,我将使用此标头:

我希望我的类(扩展索引)中的结果返回类型 List[Sample]。我尝试了一些不同的定义,但总是遇到类似的错误:

其中 type 是我用来扩展 Index 的任何类型,即:

我认为我的问题来自我对抽象类定义中的 <% 的误解。知道如何解决这个问题吗?

0 投票
1 回答
148 浏览

java - 更改两个类型参数边界的顺序会导致 Java 运行时错误

以下代码在运行时崩溃,但如果您更改该行使其Model & Serializable变为Serializable & Model,则它运行正常。谁能解释发生了什么?这是Java中的错误吗?类型边界的顺序似乎并不重要。

运行时错误是:

这是 JDK 版本 1.8.0_101。

0 投票
1 回答
421 浏览

generics - 如何在 Rust 中添加一个泛型类型实现另一种泛型类型的约束?

我怎样才能使这样的工作:

我搜索了一些类型标记来告诉编译器S必须是一个特征,在 Rust 文档中搜索了这种模式的一些示例,但找不到其他人有同样的问题。这是我的代码:

编译器失败并出现以下错误:

0 投票
1 回答
42 浏览

scala - Scala typebounds 不适用于抽象类,但适用于特征

我正在尝试扩展通用 mSort 函数以使用隐式和类型边界。当我使用通用特征扩展 Ordered 但不使用抽象类时,它工作正常。你能帮忙吗?

错误:

0 投票
1 回答
500 浏览

swift - 如何将协议类型传递给泛型函数?

我想根据类型创建字符串(如果你必须知道的话,URL 的一部分)。

考虑这个示例代码:

这看起来相当不错;我不需要依赖不安全的措施(字符串),也不需要单独的枚举。

让我们看一些用法示例:

虽然前两个函数很好(通用版本特别好!),但第三个不能编译:

错误:在参数类型中TestQ.Protocol.TypeTestQ.Protocol不符合预期类型TestP

TestP.TypeTestP.Protocol不能作为参数工作。

如何将协议类型传递给(通用)函数?