2015-03-01 4 views
1

у меня есть тип записи:Создать запись экземпляр со значениями по умолчанию

type Person = 
    { 
     Name : string 
     Age : int 
    } 

И мне нужна функция, которая возвращает новые экземпляры этой записи с невыполнением (в C# точки зрения) полей.

я могу сделать это так:

let f = 
    { 
    Name = "" 
    Age = 0 
    } 

, но я хотел бы избежать всех полей перечисления и использовать что-то вроде этого:

let f = new Person 

Есть ли способ сделать это?

+0

* Почему * Вы хотите сделать это? –

ответ

1

unchecked.DefaultOf<'t>. Однако имейте в виду, что записи F # неизменяемы, поэтому это, вероятно, не то, что вы хотите.

+0

Hmm ... по умолчанию возвращение null. Это не ответ на этот вопрос, но это отличное решение для этого https://stackoverflow.com/questions/28790446/what-if-the-best-way-to-return-option-types-by-wcf-service моя проблема! Спасибо – demas

+2

Я думаю, что здесь может быть проблема X-Y. Вы действительно не хотите использовать записи в ситуации, когда они могут быть пустыми, поскольку они неизменяемы –

4

F # позволяет добавлять методы/свойства к записям и дискриминации профсоюзов:

type Person = 
{ 
    Name: string 
    Age: int 
} 
with 
    static member Default = { Name = ""; Age = 0 } 

В FSI:

> Person.Default;; 
    val it : Person = {Name = ""; 
         Age = 0;} 
Смежные вопросы