小编Sud*_*san的帖子

在匹配可变引用时,“mut”如何工作?

在下面的程序中,我试图理解matchmut, &do come in 时语句的复杂性。除此之外,就任何功能而言没有其他范围。

为了弄清楚变量的类型,我使用变量来调用函数checkout(n:i32)。编译器现在会抱怨 checkout Expects i32,但程序正在传递一些其他类型。我是一个新手,这是我认为我们可以找出我们没有明确提及的变量类型的一种方法。

fn checkout (k5:i32) {}

fn main() {
    let k5 = "learning rust".to_string();
    let k1 = Some(k5);
    match &mut k1 {
        Some(mut n) => {
            checkout(n);
            println!("the idea is {} {} ", n, n);
        }
        None => {}
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我编译程序,会出现以下错误消息

fn checkout (k5:i32) {}

fn main() {
    let k5 = "learning rust".to_string();
    let k1 = Some(k5);
    match &mut k1 {
        Some(mut n) => …
Run Code Online (Sandbox Code Playgroud)

match rust

8
推荐指数
1
解决办法
1445
查看次数

我如何记住Haskell中二叉搜索树的根

我是函数式编程的新手。

我面临的挑战是关于二叉搜索树在 Haskell 中如何工作的思维导图。

  1. 在其他程序(C、C++)中,我们有一个称为 root 的东西。我们将其存储在一个变量中。我们将元素插入其中并进行平衡等。
  2. 程序会休息一下,做其他事情(可能是处理用户输入、创建线程),然后发现需要在已创建的树中插入一个新元素。它知道根(存储为变量)并使用根和新值调用插入函数。

到目前为止,其他语言的表现都很好。但是我如何在 Haskell 中模仿这样的事情,即

  1. 我看到函数实现将列表转换为二叉树、插入值等。这都很好
  2. 我希望此功能成为更大程序的一部分,因此我需要知道根是什么,以便我可以使用它再次插入它。那可能吗?如果是这样怎么办?

注意:这是不是根本不可能,因为数据结构是不可变的,所以我们根本不能使用根来插入东西。在这种情况下,Haskell 中如何处理上述情况?

variables haskell functional-programming immutability binary-search-tree

6
推荐指数
2
解决办法
256
查看次数

在 for 循环内更新 MapSet 时 Elixir 中的奇怪行为

list1 = [2,3,4]
map22 = MapSet.new()
map22 = MapSet.put(map22,25)
for i <- list1 do
  map22 = MapSet.put(map22,i)
end
IO.puts("The updated map is #{inspect(map22)}")
Run Code Online (Sandbox Code Playgroud)

当我运行上面的程序时,我发现 for 循环中的更新根本不起作用。为什么会这样呢?

elixir

0
推荐指数
1
解决办法
153
查看次数