首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归填充字典吗?

递归填充字典吗?
EN

Stack Overflow用户
提问于 2011-04-02 20:35:50
回答 2查看 320关注 0票数 1

我正在测试以下代码,以递归方式填充字典。但是,类型推断似乎无法识别字典类型。我尝试过使用类型注释,但似乎没有什么帮助。

在递归例程中使用字典有什么限制吗?我是否需要使字典可变,因为我希望在迭代期间更改它。

代码语言:javascript
复制
open System
open System.Collections.Generic

////dictionary recursion test

let pop_dict tlist = 
   // let rec inner tlist acc ddict:Dictionary<string,int> =
    let rec inner tlist acc ddict =
       match tlist with 
            | [] ->  ddict.Add ("dummykey", acc)                             
            | x::xs  -> inner xs  (x::acc) ddict
    let  ddict = Dictionary<string,int>()
    inner tlist [] ddict 


// Main Entry Point
let main() =

    let tlist = [1;2;3;4]
    let d = pop_dict tlist

main()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-02 20:50:29

首先,你们的类型不匹配。

您正在尝试将一个int list (这就是acc )添加到应该包含ints的字典中。

然而,除此之外,编译器无法推断ddict类型的原因是。请记住,当类型检查器确定函数的类型时,它不会查看以后调用的内容。它只有以下信息可用:

代码语言:javascript
复制
let rec inner tlist acc ddict =
   match tlist with 
        | [] -> ddict.Add ("dummykey", acc)                             
        | x::xs  -> inner xs  (x::acc) ddict

这意味着,当它编译函数时,它所知道的关于ddict的唯一信息是它有一个名为Add的方法,这个方法是string * 'a list -> ?

要修复它,请更改

代码语言:javascript
复制
let rec inner tlist acc ddict =

代码语言:javascript
复制
let rec inner tlist acc (ddict:Dictionary<string,int>) =

但是,字典上的不匹配类型仍然存在问题,所以如果您计划在字典中存储int list,那么您可能希望它是Dictionary<string, int list>

票数 4
EN

Stack Overflow用户

发布于 2011-04-02 20:48:20

这是你想要的吗?

代码语言:javascript
复制
let pop_dict tlist = 
    let rec inner tlist acc (ddict:Dictionary<string,int list>) =
       match tlist with 
            | [] ->  ddict.Add ("dummykey", acc)                             
            | x::xs  -> inner xs  (x::acc) ddict
    let  ddict = Dictionary<string,int list>()
    inner tlist [] ddict 


// Main Entry Point
let main() =

    let tlist = [1;2;3;4]
    let d = pop_dict tlist
    ()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5523183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档