2015-05-28 7 views
6

pochodzę z C# i znaleźć się w miłości z F # składni dopasowywania wzorców jak to prostsze niż C# switch i sposób bardziej użyteczne. Lubię go używać tak często, jak to możliwe, czy jest jakiś performance lub jakakolwiek inna wada do używania go w dziwny sposób, jak w tym przykładzie?Nadużywanie wzorzec dopasowania

match 0 with 
|_ when a<b -> a 
|_ -> b 
+7

To nadmiernie gadatliwy i zapewne nie idiomatyczne, ale to nie ma żadnego gorszą wydajność niż 'if'. – ildjarn

Odpowiedz

6

W tym konkretnym przypadku nie będzie kary za wyniki. Jest bardzo prawdopodobne, że kara za wyniki będzie również nieobecna w innych przypadkach, ale absolutnie pewna, że ​​będziesz musiał spojrzeć na wygenerowany kod za pomocą czegoś takiego jak ILSpy.

Muszę też dodać, że jak użyć F #, przekonasz się, że if/then/else jest również bardzo ładne. W języku C#, if/else czuje się trochę niezręcznie, ponieważ nie może być używany jako wyrażenie, ale w F # tak nie jest, a więc niezręczność wkrótce znika.

let x = if a < b then a else b 

Nawet czyta się jak zwykły angielski! :-)