根据这里的内容:
在代码的后面
如果这是一个“命名元组”,为什么我要使用
元组结构体,基本上是带有名称的元组。
// A tuple struct
struct Pair(i32, f32);
在代码的后面
// Instantiate a tuple struct
let pair = Pair(1, 0.1);
// Access the fields of a tuple struct
println!("pair contains {:?} and {:?}", pair.0, pair.1);
如果这是一个“命名元组”,为什么我要使用
.0
和.1
来访问它?这与“普通元组”有何不同?let pair = (1, 0.1);
println!("pair contains {:?} and {:?}", pair.0, pair.1);
在Python中,命名元组具有名称,并且允许通过索引访问。
from collections import namedtuple
Pair = namedtuple('Pair', ['x', 'y'])
pair = Pair(1, 0.1)
print(pair[0], pair[1]) # 1 0.1
print(pair.x, pair.y) # 1 0.1
所以问题是,在上面的rust示例中,“命名元组”中的“名称”是什么?对我来说,“经典的C结构体”(在同一个链接中)听起来像一个“命名元组”,因为如果我将结构体(Pair
)初始化为这样,我可以使用.x
和.y
访问它。我无法从链接中理解这一点。
type Pair = (i32, f32);
进行比较。) - Caesar