首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电力查询类型定义

电力查询类型定义
EN

Stack Overflow用户
提问于 2016-11-11 08:47:33
回答 1查看 656关注 0票数 1

在Power查询(M)中,我找到了两种声明类型的方法:myVar as typetype text

每一种情况似乎适用于不同的情况。例如:

代码语言:javascript
复制
Table.AddColumn(myTable, "NewName", each [aColumn], type text)

代码语言:javascript
复制
MyFunc = (aParam as any) as date => Date.From(aParam)

但是,这并不像我所期望的那样适用于更复杂的类型,如{text}{number},这将是一个仅包含文本值或数字的列表。我可以在type语法中使用这些类型,但不能使用as type语法。

为什么不呢?

另外,在M中声明类型会对性能产生任何影响,还是仅仅是在传递/返回错误类型时引发错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 20:59:39

在"M“中声明类型通常对性能的影响很小,并且会使您的功能更”自文档化“。

在调用函数时,将检查函数参数类型“种类”,而不是自定义的完整类型定义。因此,将数字列表传递给期望文本列表的函数不会导致任何错误。你可以看到一些"M":

代码语言:javascript
复制
let
    FunctionType = type function (l as { text }) as any,
    UntypedFunction = (l) => l{0},
    TypedFunction = Value.ReplaceType(UntypedFunction, FunctionType),
    Invoked = TypedFunction({0, 1, 2})
in
    Invoked

不检查递归类型对性能有好处,因为检查列表的每个元素需要遍历整个列表。

当您编写像(l) => l{0}这样的函数值时,只能使用as list之类的基本类型,而不能使用as { text }。我认为这个限制的目的是引导函数作者不要将不受函数尊重的类型限制。

您可以阅读更多关于语法允许在语言规范中的内容。(如果该链接死了,您应该能够跟踪MDSN的PDF链接。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40544201

复制
相关文章

相似问题

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