2012-07-12 13 views
5

Domanda semplicissima Sono sicuro, ma non faccio F # di solito così un po 'nuovo alla sintassi.F # - cosa combacia ... con | :? X come x significa?

Come faccio a leggere il seguente frammento di codice:

 match shape.Fill with 
      | :? PictureBrush as pb -> 
       //.... 

In particolare, non sono sicuro di quello che si riferisce a PictureBrush. Non c'è davvero alcun riferimento ad esso altrove in questo file

risposta

8

Questo il Type Test Pattern.

PictureBrush è un tipo. shape.Fill corrisponde a :? PictureBrush quando la proprietà Fill è assegnabile a quel tipo.

1

È un confronto di tipo. Come typeof (xx) in C#. Quindi abbinalo al tipo di PictureBrush.

+3

Penso che sia più come ['is'] (http://msdn.microsoft.com/en-us/library/scekt9xw (v = vs.110) .aspx). – Daniel

2

Si noti inoltre che lo as consente il binding di una variabile di quel tipo. Pertanto, pb sarà di tipo PictureBrush, ma avrà lo stesso valore identico a quello risolto in shape.Fill.