微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么带有明确指定的泛型类型的proc无法正常工作?

如何解决为什么带有明确指定的泛型类型的proc无法正常工作?

如果显式指定了map的类型,示例将无法编译,为什么?

这有效

import sequtils

let nlist = @[1,2]
let slist: seq[string] = nlist.map(proc (v: auto): auto = $v)

但这不会:

let slist: seq[string] = nlist.map[int,string](proc (v: auto): auto = $v)

解决方法

请记住,map is just a normal proc接受两个参数,由于method call syntax,您碰巧可以将其用作 fetch("https://fantasy.premierleague.com/api/bootstrap-static/",{ method: "GET",headers: { "Content-Type": "application/json",},}) .then((res) => { return res.json(); }) .then((data) => { console.log("DATA: ",data); }) .catch((err) => { console.log("Error: " + err); }); ,但是有some limitations。实际上,如果您将该代码编写为普通的proc调用:

first.map(second)

然后,编译器不再被语法迷惑,并向您抛出正当理由:

错误:仅当嵌套proc用作另一个例程的操作数并且可以从预期的签名中推断出通用参数的类型时,它才能具有通用参数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。