我有以下几点:
let mut my_number = 32.90;
如何打印my_number
的类型?
使用type
和type_of
不起作用。还有其他方法可以打印号码的类型吗?
有一个不稳定的函数std::intrinsics::type_name
,可以获取类型的名称,尽管你必须使用每晚构建的Rust(这在稳定的Rust中不太可能工作)。下面是一个例子:
#![feature(core_intrinsics)]
fn print_type_of<T>(_: &T) {
println!("{}", unsafe { std::intrinsics::type_name::<T>() });
}
fn main() {
print_type_of(&32.90); // prints "f64"
print_type_of(&vec![1, 2, 4]); // prints "std::vec::Vec<i32>"
print_type_of(&"foo"); // prints "&str"
}
如果您只想找出变量的类型,并且愿意在编译时这样做,您可以导致错误并让编译器拾取它。
例如,将变量设置为不起作用的类型:
let mut my_number: () = 32.90;
// let () = x; would work too
error[E0308]: mismatched types
--> src/main.rs:2:29
|
2 | let mut my_number: () = 32.90;
| ^^^^^ expected (), found floating-point number
|
= note: expected type `()`
found type `{float}`
或调用无效的方法:
let mut my_number = 32.90;
my_number.what_is_this();
error[E0599]: no method named `what_is_this` found for type `{float}` in the current scope
--> src/main.rs:3:15
|
3 | my_number.what_is_this();
| ^^^^^^^^^^^^
或访问无效字段:
let mut my_number = 32.90;
my_number.what_is_this
error[E0610]: `{float}` is a primitive type and therefore doesn't have fields
--> src/main.rs:3:15
|
3 | my_number.what_is_this
| ^^^^^^^^^^^^
这些揭示了这种类型,在这种情况下,实际上并没有完全解决。在第一个例子中称为“浮点变量”,在所有三个例子中称为“{float}
”;这是一种部分解析的类型,最终可能是f32
或f64
,具体取决于您如何使用它。“{float}
”不是一个合法的类型名称,它是一个占位符,意思是“我不完全确定这是什么”,但它是一个浮点数。对于浮点变量,如果您不约束它,它将默认为f64
1。(非限定整数文本将默认为i32
)
另见:
可能仍然有一些方法让编译器感到困惑,以至于它不能在f32
和f64
之间做出决定;我不确定。它曾经简单到32.90.eq(
您可以使用std::any::type_name
函数。这不需要每晚编译或外部机箱,结果非常正确:
fn print_type_of<T>(_: &T) {
println!("{}", std::any::type_name::<T>())
}
fn main() {
let s = "Hello";
let i = 42;
print_type_of(&s); // &str
print_type_of(&i); // i32
print_type_of(&main); // playground::main
print_type_of(&print_type_of::<i32>); // playground::print_type_of<i32>
print_type_of(&{ || "Hi!" }); // playground::main::{{closure}}
}
请注意:如留档中所述,此信息只能用于调试目的:
这是用于诊断的。字符串的确切内容和格式没有指定,只是作为类型的最佳描述。
如果希望在不同的编译器版本之间保持类型表示不变,则应该使用一个特征,如PHCR的答案中所示。
使用和不起作用。有没有别的办法我可以打印号码的类型?
问题内容: 有没有一种方法可以快速打印变量的运行时类型?例如: 在上面的示例中,我正在寻找一种方法来表明变量“ soon”的类型为,或至少为。 问题答案: 2016年9月更新 Swift 3.0:使用,例如(因为关键字已删除) 2015年10月更新 : 我将下面的示例更新为新的Swift 2.0语法(例如,已被替换为,现在是)。 从Xcode 6.3发行说明 : @nschum在注释中指出Xcod
在Python中,变量根据其内容具有真实值。例如: 我还知道,我可以在根本不使用if运算符的情况下打印比较的真实值: 但是我如何打印变量的/值?目前,我正在这样做: 但这看起来有点不优雅。有没有首选的方式?
问题内容: Go中有类似Ruby的东西吗? 例如,在Ruby中,您可以编写: 输出将是: 我能找到的最接近的东西是 问题答案: 如果您的目标是避免导入第三方软件包,则另一个选择是使用json.MarshalIndent: 输出: 工作示例:http : //play.golang.org/p/SNdn7DsBjy
问题内容: 假设我有一个名为choice它的变量等于2。我将如何访问该变量的名称?相当于 用于制作字典。有一个很好的方法可以做到这一点,而我只是想念它。 编辑: 因此,这样做的原因是。我正在运行一些数据分析的东西,我在运行时使用多个我想调整或不调整的参数来调用程序。我从格式为.config的文件中读取了上次运行中使用的参数 当提示你输入值时,将显示先前使用的值,并且空字符串输入将使用先前使用的值。
问题内容: 我想在引号中打印一个变量。我想打印出来 我已经尝试了很多,但有效的方法是: –但是输出中有两个空格-> 当我不使用逗号时,会出现语法错误。 如何在一对引号内打印内容? 问题答案: 您可以使用: 在这里了解格式:格式 在3x中,您可以使用: