2012-07-12 11 views
5

Bardzo proste pytanie Jestem pewien, ale nie robię F # zwykle tak trochę nowego w składni.F # - co pasuje ... do | :? X jako x oznacza?

Jak mogę przeczytać poniższy fragment kodu:

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

Konkretnie, nie jestem pewien, co PictureBrush dotyczy. Tak naprawdę nie ma żadnego odniesienia do tego pliku w tym pliku:

Odpowiedz

8

To jest Type Test Pattern.

PictureBrush to typ. shape.Fill pasuje :? PictureBrush, gdy właściwość Fill jest przypisywana do tego typu.

1

Jest to porównanie typów. Podobnie jak typeof (xx) w języku C#. Dopasuj się do typu PictureBrush.

+3

Myślę, że bardziej przypomina ['is'] (http://msdn.microsoft.com/en-us/library/scekt9xw (v = vs.110) .aspx). – Daniel

2

Należy również zauważyć, że as pozwala na powiązanie zmiennej z tego typu. Tak więc pb będzie typu PictureBrush, ale będzie miał dokładnie taką samą wartość, jak to, do którego zostało rozwiązane shape.Fill.