我在Nim中看到了这个例子,它需要明确的int和bool类型规范,尽管有足够的信息来推断两者(就像TypeScript那样)。
如果删除了这些类型,它就不会编译,Nim支持类型推断吗?
import sequtils
let list = @[1, 2, 4]
echo list.filter do (x: int) -> bool: x > 2发布于 2020-02-25 07:21:23
您需要的是糖模块中的=>宏。
echo list.filter(x => x > 2)来自文件:
用于无菌程序的语法糖。
macro `=>`(p, b: untyped): untypedproc passTwoAndTwo(f: (int, int) -> int): int =
f(2, 2)
passTwoAndTwo((x, y) => x + y) # 4用于过程类型的语法糖。
macro `->`(p, b: untyped): untypedproc pass2(f: (float, float) -> float): float =
f(2, 2)
# is the same as:
proc pass2(f: proc (x, y: float): float): float =
f(2, 2)发布于 2020-01-09 03:37:28
从手册中:
自动类型只能用于返回类型和参数。对于返回类型,它使编译器从例程体推断类型:
http://nim-lang.github.io/Nim/manual.html#types-auto-type
https://stackoverflow.com/questions/59656646
复制相似问题