在了解了这门语言最重要的功能后,我现在正在接近F#课程.那么,类定义语法并不容易理解,但是现在我清楚了一些主要概念,但其他概念却没有.
1)我想知道的第一件事就是正确/不正确.我知道可以用两种方式定义类:
这是对的吗???
2)我在理解显式类中构造函数的语法时遇到问题.考虑以下:
这是第一个版本:
(* COMPILES :) *)
type MyType =
val myval: int
val myother: int
(* Constructor *)
new (a: int, b: int) = {
myval = a;
myother = b;
}
Run Code Online (Sandbox Code Playgroud)
这是第二个版本:
(* COMPILES :) *)
type MyType =
val myval: int
val myother: int
(* Constructor *)
new (a: int, b: int) = {
myval = a (* No semicolon *)
myother = b (* No semicolon *)
}
Run Code Online (Sandbox Code Playgroud)
这是最后一个版本:
(* DOES NOT …Run Code Online (Sandbox Code Playgroud) 如果集合实现,则可以使用Iteratortrait的collect方法将迭代器转换为集合FromIterator.
let vec = (0..10).collect::<Vec<_>>();
let devec = (0..10).collect::<VecDeque<_>>();
Run Code Online (Sandbox Code Playgroud)
Vec并VecDeque实施FromIterator特质.
Iterator::collect方法的实施是:
fn collect<B: FromIterator<Self::Item>>(self) -> B
where
Self: Sized,
{
FromIterator::from_iter(self)
}
Run Code Online (Sandbox Code Playgroud)
Rust如何理解调用from_iter方法Vec或VecDeque从中调用方法FromIterator::from_iter(self)?