- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我得到了一个预期的类型参数,尽管我认为我已经返回了正确的类型数据。我正处于 Rust 中通用 Material 的学习阶段。
struct Cat {
weight: i32,
}
trait Animal{
fn get_weight<T>(&self) -> T;
}
impl Animal for Cat {
fn get_weight<i32>(&self) -> i32 {
self.weight // I got error in here
}
}
fn main() {}
错误信息:
mismatched types
expected type parameter, found i32
note: expected type `i32` (type parameter)
found type `i32` (i32)
expected `i32` because of return type
expected type parameter, found i32
最佳答案
在这里查看编译器警告非常有帮助。
warning: type parameter `i32` should have an upper camel case name
--> src/main.rs:10:19
|
10 | fn get_weight<i32>(&self) -> i32 {
| ^^^ help: convert the identifier to upper camel case: `I32`
|
= note: #[warn(non_camel_case_types)] on by default
如您所见,i32
括号之间被解析为类型参数。我相信这会在局部影响 i32
类型(具体来说,返回类型就是这个泛型),所以当你返回一个普通的 i32
时,编译器提示。这不是真正相关的,因为这不是问题的根源。
这里的问题是 Animal
特质要求其 get_weight
方法在 T
中是通用的.当你实现这个特征时,你必须提供一个 get_weight
适用于所有 可能类型的方法 T
(带有类型为 Sized
的隐式限制)。这应该是不可能的,因为您必须凭空生成任何给定类型的元素。有些类型甚至没有任何元素!
相反,您有两个选择。首先,您可以制作一个通用特征。语法是
trait Animal<T> {
fn get_weight(&self) -> T;
}
请注意 T
与特征一起引入,而不是在方法上引入。使用此设置,您在概念上不再具有单一特征,而是每种类型都有一个特征(同样具有隐式 Sized
边界)。这意味着给定类型可以为 T
的不同值实现特征。 .就像你可能同时拥有 Animal<i32>
和 Animal<u32>
为 Cat
实现.
如果您仍然希望每个类型只实现一次特征并具有单一输出类型,则可以使用关联类型。语法是
trait Animal{
type Weight;
fn get_weight(&self) -> Self::Weight;
}
现在当你在一个类型上实现这个特性时,你必须提供输出类型。你可以实现 Cat
通过添加行 type Weight = i32;
在特征实现中。然后 get_weight
方法只需要返回 i32
,就像您已经拥有的一样。
关于types - 我得到了一个预期的类型参数,尽管我认为我已经返回了正确的类型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57105093/
假设a是张量,那么有什么区别: 类型(a) a.类型 a.type() 我找不到区分这些的文档。 最佳答案 type 是 python 内置方法。 它将返回对象的类型。喜欢 torch.Tensor.
什么是 Type 1 的居民的例子?两者都不是 Type也不是Type的居民?在 Idris REPL 中进行探索时,我无法想出任何东西。 更准确地说,我正在寻找一些 x除了 Type产生以下结果:
我找到了一些资源,但我不确定我是否理解。 我找到的一些资源是: http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb2ff3358411d1829f00
这两个函数原型(prototype)有什么区别? void apply1(double(f)(double)); void apply2(double(*f)(double)); 如果目标是将提供的函
http://play.golang.org/p/icQO_bAZNE 我正在练习使用堆进行排序,但是 prog.go:85: type bucket is not an expression
假设有一个泛型定义的方法信息对象,即一个方法信息对象,这样的方法Info.IsGenericMethodDefinition==TRUE:。也可以说它们也有一个泛型参数列表:。我可以使用以下命令获取该
在具有依赖类型的语言中,您可以使用 Type-in-Type 来简化语言并赋予它很多功能。这使得语言在逻辑上不一致,但如果您只对编程感兴趣而不对定理证明感兴趣,这可能不是问题。 在 Cayenne
根据 Nim 手册,变量类型是“静态类型”,而变量在内存中指向的实际值是“动态类型”。 它们怎么可能是不同的类型?我认为将错误的类型分配给变量将是一个错误。 最佳答案 import typetrait
假设您有以下结构和协议(protocol): struct Ticket { var items: [TicketItem] = [] } struct TicketItem { } prot
我正在处理一个 EF 问题,我发现它很难调试...以前,在我的系统中有一个表类型继承设置管理不同的用户类型 - 所有用户共有的一种根类型,以及大致基于使用该帐户的人员类型的几种不同的子类型。现在,我遇
这是我的 DBManager.swift import RealmSwift class DBManager { class func getAllDogs() -> [Dog] {
我正在尝试使用傅里叶校正图像中的曝光。这是我面临的错误 5 padded = np.log(padded + 1) #so we never have log of 0 6 g
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
请考虑以下设置: protocol MyProcotol { } class MyModel: MyProcotol { } enum Result { case success(value:
好吧,我将我的 python 项目编译成一个可执行文件,它在我的电脑上运行,但我将它发送给几个 friend 进行测试,他们都遇到了这个错误。我以前从未见过这样的错误。我使用 Nuitka 来编译代码
当我尝试训练我的模型时"ValueError: Type must be a sub-type of ndarray type"出现在 line x_norm=(np.power(x,2)).sum(
我尝试在另一个类中打断、计数然后加入对象。所以我构建协议(protocol): typealias DataBreaker = () -> [Double] typealias DataJoiner
我正在使用 VS 2015 更新 3、Angular 2.1.2、Typescript 2.0.6 有人可以澄清什么是 typings 与 npm @types 以及本月很难找到的任何其他文档吗? 或
我正在考虑从 VS2010 更改为 Mono,因此我通过 MoMA 运行我的程序集,看看我在转换过程中可能遇到多少困难。在生成的报告中,我发现我不断收到此错误: bool Type.op_Equali
主要问题 不太确定这是否可能,但由于我讨厌 Typescript 并且它使我的编码变得困难,我想我会问只是为了确定。 interface ISomeInterface { handler: ()
我是一名优秀的程序员,十分优秀!