作为 F# 公认的新手,我很难理解为什么会出现此错误。 这是我公认的琐碎且冗余的代码:
open System
open System.Globalization
let toUpperCase (input: string) =
input.ToUpper()
let uCaseAll (input: string) =
input.Split()
|> Array.map toUpperCase
|> String.concat " "
[<EntryPoint>]
let main argv =
let text = "You’re in the right place. Tell us what titles or genres you’ve enjoyed in the past, and we’ll give you surprisingly insightful recommendations."
printfn "Result: %s" uCaseAll text
我收到的错误是:
Type mismatch. Expecting a
'string -> 'a -> int'
but given a
'string -> unit'
The type ''a -> int' does not match the type 'unit'
This expression was expected to have type
'string'
but here has type
'string -> string'
这让我很困惑,因为我的函数被明确定义为接受字符串并返回字符串。 然而编译器认为我正在用
int
s 和 uint
s 做一些事情。
我做错了什么?
唯一的问题在最后一行。 F# 认为您正在使用三个参数调用
printfn
。您只需要一对括号先调用 uCaseAll text
,然后将结果发送到 printfn
:
printfn "Result: %s" (uCaseAll text)