スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

F#によるLinq to Obj入門 (4) First FirstOrDefault ElementAt等

First,Last,ElementAtはそれぞれ、最初、最後、n番目の要素を返します。
 
例 
 
>seq[11;12;13;14;15].First();;
val it : int = 11
> seq[11;12;13;14;15].Last();;
val it : int = 15
> seq[11;12;13;14;15].ElementAt(2);;
val it : int = 13
 
なおElementAtでは最初が0項目になることに留意してください。
また対応する項が存在しないときは例外が発生します。
例外を発生させずに、デフォルト値を対応させたい場合にはFirstOrDefault等を利用します。
なおデフォルト値は型によって異なります。
 

 
> seq[5;6].FirstOrDefault();; 
val it : int = 5
 
> (seq[]:seq<int>).FirstOrDefault();; 
val it : int = 0
 
なおこれは次のようにもできます。
 
> (seq<int>[]).FirstOrDefault();; 
val it : int = 0 
 
 
> (seq[]:seq<float>).FirstOrDefault();; 
val it : float = 0.0
 
> (seq[]:seq<string>).FirstOrDefault();; 
val it : string = null
 
LastOrDefault,ElementAtDefaultも同様です。
 
Singleは項数が1の数列から、要素だけを抜き出します。
 
> seq[5].Single();;
val it : int = 5
 
> seq["abc"].Single();;
val it : string = "abc"
 
項数が1以外のシークエンスに適用すると例外が発生します。その場合に例外を発生させずにデフォルト値を対応させたい場合はSingleOrDafultを利用します。
 
Seqモジュールで対応するものを書きだしておきます。
 
First            <-> Seq.head
FirstOrDefault   <-> 対応するものなし
Last             <-> 対応するものなし
LastOrDefault    <-> 対応するものなし
ElementAt        <-> Seq.nth
ElementAtDefault <-> 対応するものなし
Single           <-> 対応するものなし
SingleOrDefault  <-> 対応するものなし
 
なおSeq.singletonというのがありますが、これは値から、「その値一つだけを項とするシークエンス」を返すものです。
 

 
> Seq.singleton 3;;
val it : seq<int> = seq [3]
 
> Seq.singleton 'c';;
val it : seq<char> = seq ['c']    
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

No title

(seq[]:seq<int>)
は、
seq<int>[]
でもOK(以下同)ですよ。

No title

ども、ありがとうございます。本文の方に追加させていただきました。

No title

ごめんなさい、カッコは、Linq の方のメソッドの場合省略できませんね。
Seq.empty<int>.FirstOrDefault()
は、カッコなしでもOKです。(補完が効かないけど)
プロフィール

T GYOUTEN

Author:T GYOUTEN
F#と英単語とフリーソフトと読書に興味があります。
ホームページでフリーソフトも公開しています。どぞ御贔屓に。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
フリーエリア
フリーエリア
blogram投票ボタン
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。