2016-03-24 4 views
2

GetSlice()メソッドを使用しようとするとエラーが発生します。F#Deedle GetSlice()エラーが "DateTime型を持つと予想されます"

cl.Rows.GetSlice(DateTime(2014,12,28,20,0,0), DateTime(2014,12,28,23,0,0)) 

エラーは次のとおりです。この式は、DateTimeオプションが必要ですが、ここにはDateTime型があります。このエラーは、(日時(2014,12,28,20,0,0)日時(2014,12,28,23,0,0))上記のコードで

両方のパラメータのために与えられます。ある人が 'DateTimeオプション'のタイプと 'DateTime'のタイプとの間の差異について説明することができます。上記のコードに使用する正しい正しい構文は何ですか?

FsLabバージョン(0.3.17)

+1

[オプション(F#)](https://msdn.microsoft.com/en-us/library/dd233245.aspx)と[オプションの種類](https://fsharpforfunandprofit.com/posts/the) -optption-type /) –

答えて

1

タイプDateTime optionの両方のパラメータを期待GetSlice方法(コンパイラが親切を示しますよう)が、あなただけのDateTimeを提供しています。

コンストラクタSomeを使用し、タイプ't optionの値を作成するには:

cl.Rows.GetSlice(Some (DateTime(2014,12,28,20,0,0)), Some (DateTime(2014,12,28,23,0,0))) 
0

Optionは、特定の型の値をカプセル化するか、それは価値がありませんことを示しているいずれかのタイプです。 F#では、型を書く方法は2つあります:Option<'t>または't optionです。

オプションを使用する主な動機は、タイプセーブとバグのないコードを生成することです。nullと、Exception(たとえば、KeyNotFoundExcpetions)を廃止しました。

+0

私はF#をとても新しくしていて、タイプオプションを見つけました。しかし、私は 'DateTimeオプション'を見たときに接続することができませんでした。私が邪魔になっている最大の問題は、コンパイラーが私にそれが期待していると言っていることの構文を理解することです。私が構文を理解するまで、私は何を入力するかを推測することに任されています。 – rhscJohn

+0

構文を理解できない場合は、概念の初期学習が順調であることを示している可能性があります。優れたリソースhttp://fsharpforfunandprofit.comから、具体的には[このセクションの式と構文](http://fsharpforfunandprofit.com/series/expressions-and-syntax.html)から始めることをお勧めします。 –

+0

@rhscJohn - 「オプションが何であるか」(C#やJavaのバックグラウンドの誰かにとっては新しいことかもしれません)を理解しておらず、F#のタイプシステムとドキュメンテーションの基本についてよく知っているので混乱していると思いました。 私はFyodorに同意します - fsharpforfunandprofit.comは素晴らしい学習リソースであり、私もそれをお勧めします。 –

関連する問題