![]() |
1
9
如果我正确地理解了问题,那么您基本上需要调用
我们将创建一个函数字典,它为我们提供一个函数来读取
现在,如果我们想使用多个键,我们需要一种方法将两个函数结合起来,这两个函数将部分键变成一个函数。我们可以编写一个组合器,它接受两个函数并返回一个函数,该函数生成一个装箱元组作为键:
如果您有一个指定键的字符串列表,那么您只需要从字典中为每个键选择函数,并使用
在F#中可能还有其他方法可以做到这一点,但我认为这是一个相对简单的方法,可以说服你的老板:-)。顺便说一句,您可以在C#3.0中编写基本相同的东西,不过由于语法更重,它看起来更难看一些。。。 编辑1 :这种方法的一个优点是不需要使用任何反射。所有的东西都以编译代码的形式运行,所以应该非常高效。组合函数只调用其他几个函数(.NET方法)并将返回的值装箱。。。
编辑2
:关于顺序-这种方法会起作用(在比较元组时,首先比较第一个元素),但我不完全确定在使用时聚合项的顺序
|
![]() |
2
4
像这样的怎么样?
这避免了每次通过提前创建函数(如Tomas的解决方案)调用groupByProps函数时都使用反射,而是使用反射来创建这些函数,这样就不必输入任何样板文件。 |
![]() |
Thomas · 使类型别名在F中不可互换# 3 年前 |
![]() |
sdgfsdh · 我该怎么说。使用异步转换函数进行收集? 7 年前 |
![]() |
Soldalma · 我可以实例化包含顶级副作用值的类吗? 7 年前 |
![]() |
matekus · F#-包含数字的字符串的自然排序 7 年前 |
![]() |
matekus · F#类型匹配-无法创建映射或匹配记录 7 年前 |
![]() |
Rob Lyndon · 未找到F#ProvidedTypes文件 7 年前 |
![]() |
red-swan · 如何将intro ML.Net演示翻译为F#? 7 年前 |
![]() |
jkone27 · F#-在编译时从字符串生成简单的空类型 7 年前 |