【问题标题】:Passing tables as parameters in Nim在 Nim 中将表作为参数传递
【发布时间】:2020-08-24 17:28:35
【问题描述】:

希望是一个简单的问题.. 我一直在玩 Nim,并意识到我需要传递一个表格(字典、地图、其他一些语言),但我似乎无法弄清楚声明的语法它在doStuff()

import tables

proc doStuff(n:int, t:[int, int]) =   # How should I declare 't' here?
    if n == 0:
        return
    t[n] = (n * 10) 
    echo "length of t = " & ($len(t))
    doStuff(n+1, t)
    
proc main() =
    var tbl = initTable[int, int]()
    echo "length of tbl = " & ($len(tbl))
    tbl[0] = 0
    doStuff(5, tbl)
    echo "length of tbl = " & ($len(tbl))
    
main()

以上内容让我Error: type expected, but got: [int, int]

对不起,如果这是基本的,但我的谷歌搜索还没有给我答案

许多 TIA

【问题讨论】:

    标签: dictionary parameters nim-lang


    【解决方案1】:

    你差不多明白了,应该是这样的:

    import tables
    
    proc doStuff(n: int, t: var Table[int, int]) =
        if n == 0:
            return
        t[n] = n * 10
        echo "length of t = " & $len(t)
        doStuff(n + 1, t)
        
    proc main() =
        var tbl = initTable[int, int]()
        echo "length of tbl = " & $len(tbl)
        tbl[0] = 0
        doStuff(5, tbl)
        echo "length of tbl = " & $len(tbl)
        
    main()
    

    您必须使用var Table[int, int] 而不是Table[int, int],因为您正在递归地改变tbl 变量,因此您需要通过引用而不是值传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 2015-04-17
      • 2012-11-27
      • 1970-01-01
      相关资源
      最近更新 更多