2016-03-01 20 views
6

to możliwe, aby potokować pierwszy parametr w funkcję wielu parametrów? npPierwszy parametr parametru F # pipe

date = "20160301" 

Jest to możliwe zamontowanie date do

DateTime.ParseExact( , "yyyyMMDD", CultureInfo.InvariantCulture) 

Odpowiedz

9

Jako @yuyoyuppe wyjaśnia w his/her answer, nie można podłączyć bezpośrednio do ParseExact, ponieważ jest to metoda, a tym samym nie curry.

To często dobrym rozwiązaniem, aby zdefiniować nassza funkcję sieciowego, ale można również rury do anonimowej funkcji, jeśli tylko jest to potrzebne lokalnie:

let res = 
    date |> (fun d -> DateTime.ParseExact(d, "yyyyMMdd", CultureInfo.InvariantCulture)) 

który daje DateTime wartość:

> res;; 
val it : DateTime = 01.03.2016 00:00:00 
7

Z this:

metody zwykle użyć formę mijających krotkę argumentów. Osiąga to wyraźniejszy wynik z perspektywy innych języków .NET, ponieważ krotka forma pasuje do sposobu przekazywania argumentów w metodach .NET.

Ponieważ nie można curry funkcję, która akceptuje krotki bezpośrednio, będziesz musiał zawinąć ParseExact to zrobić:

let parseExact date = DateTime.ParseExact(date, "yyyyMMDD", CultureInfo.InvariantCulture) 

Może niepowiązanych, ale argumenty wyjściowe może być związany tak:

let success, value = Double.TryParse("2.5") 

Należy zauważyć, że TryParse akceptuje krotkę z drugim argumentem jako byref.

Powiązane problemy