F # Дискриминированные профсоюзы по сравнению с иерархиями классов C #

У меня есть следующий код:

public abstract class A ...
public class B : A ...
public class C : A ...

void my_fct(A x) {
  if (x is B) { block_1 }
  else if (x is C) { block_2 }
  else { block_3 }
}

, и мне интересно, если это хороший перевод от F #

type a = B | C
let my_fct x =
  match x with
  | B -> ( block_1 )
  | C -> ( block_2 )
  | _ -> ( block_3 )

??

7
задан Brian 7 September 2011 в 15:38
поделиться