У меня есть следующий код:
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 )
??
block_3
никогда не может быть выполнено во фрагменте F# (алгебраические типы данных закрыты, насколько я знаю), так почему же он там? Кроме того, я единственный, кто думает, что перевод должен использовать полиморфизм? - person   schedule 07.09.2011