问题标签 [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.
scala - scala 类型需要 toString
在 Scala 中,最普遍的要求类型可以被视为字符串的方法是什么?
我知道视图绑定要求一个对象可以被“视为”另一种类型,但这不起作用。
类型 Any 有一个 toString 方法...所以我可以做一个类型绑定...但是 Scala 中的每个对象都会自动成为 Any 的子类型吗?看起来可能,但是出于某种我没有预料到的原因,这是愚蠢的吗?
所以它似乎有效,即使我的对象没有明确扩展 Any 的任何子类。这是否会推广到 Scala 中的任何对象,即使它不一定最终得到一个看起来像我想要的漂亮字符串?
编辑
根据下面的评论,作为字符串查看和创建新字符串是不同的。在这种情况下,我不在乎,但要使视图绑定版本工作......我猜这样的事情会合适吗?
scala - 为什么Scala编译器禁止将通配符类型声明为类型参数的超类型
我试图创建一个与依赖类型相关的类型别名_ >: a.type
。
Scala编译器报了一个我看不懂的错误:
如果我替换a: A
为a: A with AnyRef
,它可以工作:
为什么?限制的目的是什么?
java - 使用类型边界调用接口中不存在的类中的方法
我有以下没有任何方法的界面。
我通过以下方式实现它。
如何调用 PerfGauge 类中以 IMetric 作为其类型的方法?我相信这可以通过类型边界来完成?如果是这样,有人可以举个例子吗?
我想做的是,
scala - 子类型导致任何:编译器中的错误或我的代码问题?
让我直接讨论我在使用类型边界时遇到的问题。
让我们考虑以下内容......我创建了一个这样的函数'foo'
我在 scala 工作表中调用了 foo ,比如
我得到了类似的结果
注意 Mars 和 2400 的推断类型
现在我想强制函数 'foo' 接受整数或浮点数或双精度数(任何类型是 AnyVal 的子类型)。
为了强制执行,我编写了类似的代码
从前面的代码中推断出的类型是 (String,Int) 并且当我调用 fooNew 时
我很惊讶地看到编译器确实让我的代码通过并且没有引发错误,而是给出了类似的输出
现在,所需的执行方式在这里不起作用。如果我做了这样的事情
编译器肯定会为我引发错误,而且确实如此!
我想问,为什么编译器没有将类型设为 Int 而是推断出类型 Any 并让我的代码通过类型检查?
我是否总是需要将第二种类型强制为AnyVal的子类型,而不是让编译器为我推断它?或者它是编译器中的错误。
如果您发现我的问题具有误导性或不符合您的期望,请寻求原谅。
目前我正在使用 scala-library 2.11.8
谢谢
scala - 定义参数的共同下限
在以下函数中,Scala 编译器能够将返回类型定义为 if/else 表达式中使用的值的最低通用超类型:
考虑以下层次结构:
上面的函数cond
被定义为返回一个 type 的值X
。
但是,如果A
和B
是函数定义中的类型参数,则cond
其返回类型为Any
:
是否可以让编译器使用类型参数的最低通用超类型?
我尝试了以下一些变体,但没有成功:
编辑:上面的问题过于简单化了。事实上,我真正的问题已经解决了其中一个类型参数:
scala - <% 在 Scala 中的含义以及在抽象类定义中的使用
<% 在 Scala 中是什么意思?
我看到的上下文是我试图扩展的抽象类声明。这是课程的重要部分:
这是 Result 特征的标题:
我能够成功创建一个扩展 Result 的类。为简化起见,我将使用此标头:
我希望我的类(扩展索引)中的结果返回类型 List[Sample]。我尝试了一些不同的定义,但总是遇到类似的错误:
其中 type 是我用来扩展 Index 的任何类型,即:
我认为我的问题来自我对抽象类定义中的 <% 的误解。知道如何解决这个问题吗?
java - 更改两个类型参数边界的顺序会导致 Java 运行时错误
以下代码在运行时崩溃,但如果您更改该行使其Model & Serializable
变为Serializable & Model
,则它运行正常。谁能解释发生了什么?这是Java中的错误吗?类型边界的顺序似乎并不重要。
运行时错误是:
这是 JDK 版本 1.8.0_101。
generics - 如何在 Rust 中添加一个泛型类型实现另一种泛型类型的约束?
我怎样才能使这样的工作:
我搜索了一些类型标记来告诉编译器S
必须是一个特征,在 Rust 文档中搜索了这种模式的一些示例,但找不到其他人有同样的问题。这是我的代码:
编译器失败并出现以下错误:
scala - Scala typebounds 不适用于抽象类,但适用于特征
我正在尝试扩展通用 mSort 函数以使用隐式和类型边界。当我使用通用特征扩展 Ordered 但不使用抽象类时,它工作正常。你能帮忙吗?
错误:
swift - 如何将协议类型传递给泛型函数?
我想根据类型创建字符串(如果你必须知道的话,URL 的一部分)。
考虑这个示例代码:
这看起来相当不错;我不需要依赖不安全的措施(字符串),也不需要单独的枚举。
让我们看一些用法示例:
虽然前两个函数很好(通用版本特别好!),但第三个不能编译:
错误:在参数类型中
TestQ.Protocol.Type
,TestQ.Protocol
不符合预期类型TestP
TestP.Type
也TestP.Protocol
不能作为参数工作。
如何将协议类型传递给(通用)函数?