Zastanawiasz się, czy jest elegancki sposób, aby wykonać następujące czynności:wiążące jednorazowego obiektu stosowanie stylu powrócił jako opcja
Mam funkcji, która tworzy jednorazowe i zwraca go jako opcja. Dzwoniący dopasowuje się do niego. Teraz, ponieważ zawinięty obiekt jest związany z wewnątrz przypadku dopasowywania, nie wiem, jak wykonać wiązanie stylu "użytkowania" w obrębie dopasowania, aby obiekt został właściwie usunięty.
let createSocket (hostEntry:IPHostEntry) =
let httpPort = 80
let endpoint = new IPEndPoint(hostEntry.AddressList.[0], httpPort)
let socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
socket.Connect(endpoint)
if (socket.Connected) then Some socket else None
let fetchResource url =
let uri = new System.Uri(url)
let hostEntry = Dns.GetHostEntry(uri.Host)
match createSocket(hostEntry) with
| Some socket ->
use s = socket // More elegant way?
sendRequest s uri.Host uri.PathAndQuery |> getResponse
| None ->
"Failed to open socket"
Powinieneś unikać porównywania do '' null'' z '' = '' lepiej jest użyć funkcji '' isNull''. – Gustavo
Whoah, dawno nie widzę ... – kvb