下面的代碼使用lambda函數:與委託和回調funcitons問題 - fsharp,交易所託管API
// https://msdn.microsoft.com/en-us/library/office/dn567668.aspx#Create
#r "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"
open Microsoft.Exchange.WebServices.Data
open System
let exchangeService emailAddress password =
let service = new ExchangeService(ExchangeVersion.Exchange2010_SP2)
service.Credentials <- new WebCredentials(emailAddress,password)
service.AutodiscoverUrl(emailAddress, (fun (redirectionUrl:string) -> redirectionUrl.ToLower().StartsWith("https://")))
service
但我有問題,當我綁定在AutodiscoverUrl使用的名稱在lambda:
let x (redirectionUrl:string) = redirectionUrl.ToLower().StartsWith("https://")
service.AutodiscoverUrl(emailAddress, x)
Visual Studio抱怨「x」。
「這表達預計將有類型Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverRedirectionUrlValidationCallback但這裏有類型的字符串 - > BOOL」
請注意,這是相同的簽名上面的lambda函數。使用F#交互檢查...
fun (redirectionUrl:string) -> redirectionUrl.ToLower().StartsWith("https://")
val it : redirectionUrl:string -> bool = <fun:[email protected]>
和
let x (redirectionUrl:string) = redirectionUrl.ToLower().StartsWith("https://")
val x : redirectionUrl:string -> bool
我缺少什麼?
感謝Tomas。 「轉換到代表」是有道理的 - 因此是錯誤信息。 – 2015-02-10 18:21:10