let test_smtp (smtp_server_address : string) (port : int) =
let hostEntry : IPHostEntry = Dns.GetHostEntry(smtp_server_address)
let endPoint : IPEndPoint = new IPEndPoint (hostEntry.AddressList[0], port)
( use tcpSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
tcpSocket.Connect(endPoint)
)
在上面的不完整代码段中,
let endPoint : IPEndPoint = new IPEndPoint (hostEntry.AddressList[0], port)
生成两个错误。第一个表示无法找到合适的重载方法。
我之前没见过的第二个错误是
This value is not a function and cannot be applied.
我通过将一个单独的let语句分配给IPAddress,并将错误映射到该行(未包含在上面的示例中),将其隔离到hostEntry.AddressList[0]
。
我看过一些关于F#无法上传的文章,但我仍然对为什么会出现这种错误感到困惑。
答案 0 :(得分:3)
正如kvb在评论中所说的那样
a[0]
表示“将a
视为应用于仅包含零”的单个参数列表的函数。
你想要
a.[0]
获取数组a
的零索引元素。
一旦你解决了这个问题,类型推断将适用于重载解析而不需要强制转换等等。