【发布时间】:2016-05-31 03:37:35
【问题描述】:
我无法理解 F# 的工作原理。我来自 C#,我认为我正在尝试让 F# 像 C# 一样工作。我最大的问题是以正确的格式返回值。
示例: 假设我有一个接受整数列表和整数的函数。 函数应该打印一个索引列表,其中列表中的值匹配传递的整数。
我的代码:
let indeks myList n = myList |> List.mapi (fun i x -> if x=n then i else 0);;
indeks [0..4] 3;;
然而它返回:
val it : int list = [0; 0; 0; 3; 0]
而不是 [3],因为我不能在该声明中省略 else。 我也有针对性的签名 -> int list -> int -> int list 我得到了别的东西。
问题号也是如此。 2 我想提供一个整数并打印从 0 到这个整数的每个数字 n 次(其中 n 是迭代值): 例子: 乘数值 3;; 输出:[1;2;2;3;3;3]
我能做的最好的就是创建列表列表。
返回元素时我错过了什么?
如何在退货中添加任何内容
例如:如果 x=n 则 n 否则 AddNothingToTheReturn
【问题讨论】:
-
List 模块中有很多函数,通常你试图解决的问题已经为你解决了,就像
List.choose和List.collect函数一样。但是,如果您不知道它们的存在,就很难使用它们!因此,我建议阅读fsharpforfunandprofit.com/posts/list-module-functions。完成后,请阅读该系列的其余部分。该网站是我找到的用于学习 F# 的最佳单一资源。