对于F#因为我不能在List.map中使用if语句,所以我尝试使用辅助函数 . 如果所有值y和z都大于或小于中值,则它将所有值y,z返回为c1或c2 . 但是我在第12行得到了类型错误,其中L =“...”表示“10 20”它表示“预期的类型单位但给定类型为int” . 不太清楚如何解决这个问题 . 任何意见,将不胜感激 .
let hold y z median c1 c2 =
if (y > median) && (z > median) then
(c1, c1)
else if (y <= median) && (z <= median) then
(c2, c2)
//line 10
let holder =
let L = L |> List.map (fun (y,z) -> (hold y z median 10 20, hold y z median 10 20)
L
1 回答
它's not exactly clear what you are trying to achiveve as the code and the logic doesn'吨排队 . 但是,当
if
不匹配时,您需要考虑这种情况,然后分支到else
. 由于显而易见的原因,这必须与if
分支是相同的类型 . 如果省略它,它将是unit
.您也可以使用
match
来描述此逻辑 . 但是如果我们坚持if
没有什么能阻止你在List.map
内使用它 . 这是一个例子:说实话,如果它很复杂,你就应该把它考虑在内 .