小编nyi*_*ann的帖子

试图理解F#类定义语法

在了解了这门语言最重要的功能后,我现在正在接近F#课程.那么,类定义语法并不容易理解,但是现在我清楚了一些主要概念,但其他概念却没有.

1)我想知道的第一件事就是正确/不正确.我知道可以用两种方式定义类:

  • 隐含的类.这些类只有一个构造函数,在类的第一行中,有必要使用let绑定定义所有内部变量,为它们赋值.
  • 显式类.这些类有许多构造函数.它们通过val绑定接受未初始化的值.这些值必须在构造函数中初始化.如果构造函数无法为使用val绑定定义的至少一个私有变量定义值,编译器就会生气.

这是对的吗???

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)

.net syntax f# constructor

6
推荐指数
1
解决办法
674
查看次数

Rust如何理解只使用FromIterator :: from_iter来调用from_iter的相应实现?

如果集合实现,则可以使用Iteratortrait的collect方法将迭代器转换为集合FromIterator.

let vec = (0..10).collect::<Vec<_>>();
let devec = (0..10).collect::<VecDeque<_>>();
Run Code Online (Sandbox Code Playgroud)

VecVecDeque实施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方法VecVecDeque从中调用方法FromIterator::from_iter(self)

traits rust

2
推荐指数
1
解决办法
84
查看次数

标签 统计

.net ×1

constructor ×1

f# ×1

rust ×1

syntax ×1

traits ×1