• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Javen-Studio 咖啡小屋

            http://javenstudio.org - C++ Java 分布式 搜索引擎
            Naven's Research Laboratory - Thinking of Life, Imagination of Future

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              24 隨筆 :: 57 文章 :: 170 評(píng)論 :: 4 Trackbacks

            4.3         Select SelectMany 的比較(Select vs. SelectMany

            Select 操作符需要轉(zhuǎn)換函數(shù)(transform function)用來為信息源序列(source sequence)中的每一個(gè)值(each value)產(chǎn)生一個(gè)值(produce one value)。如果你的轉(zhuǎn)換函數(shù)返回了一個(gè)自己也是一個(gè)序列的值,它等于(is up to)消費(fèi)者(consumer)手工地(manually)穿越(traverse)子序列(sub-sequences)。例于,考察下面的程序,使用已存在的 String.Split 方法分拆這些字符串成一段段的部分(breaks strings into tokens):

             

            string[] text = "Albert was here"
                              
            "Burke slept late"
                              
            "Connor is happy" }
            ;

            var tokens 
            = text.Select(s => s.Split(' '));

            foreach (string[] line in tokens)
                
            foreach (string token in line)
                    Console.Write(
            "{0}.", token);

             

            運(yùn)行這段程序,將打印出如下的文本:

             

            Albert.was.here.Burke.slept.late.Connor.is.happy.

             

            理想情況下(Ideally),我們希望我們的查詢返回一個(gè)包含一個(gè)個(gè) token 段的結(jié)合的序列(coalesced sequence),而不是暴露(exposed)中間的(intermediatestring[] 給消費(fèi)者(consumer)。為了達(dá)到這個(gè)目的(To achieve this),我們使用 SelectMany 操作符而不用 Select 操作符。SelectMany 操作符使用起來比 Select 更簡單。它們不同的(differs in)地方是轉(zhuǎn)換函數(shù)(transform function)被期望返回一個(gè)序列,然后才再 SelectMany 操作符展開來(expanded by)。這里是一段我們用 SelectMany 重寫的程序:

             

            string[] text = "Albert was here"
                              
            "Burke slept late"
                              
            "Connor is happy" }
            ;

            var tokens 
            = text.SelectMany(s => s.Split(' '));

            foreach (string token in tokens)
                Console.Write(
            "{0}.", token);

             

            使用 SelectMany 引起每一個(gè)中間的序列(each intermediate sequence)像普通賦值的一部分(part of normal evaluation)一樣被展開(expanded)。

             

             

             

             

            待續(xù), 錯(cuò)誤難免,請(qǐng)批評(píng)指正,譯者Naven 2005-10-24

            posted on 2005-10-25 03:01 Javen-Studio 閱讀(3567) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产成人无码精品久久久性色| 国产精品久久久香蕉| 97精品伊人久久久大香线蕉| 精品无码久久久久国产| 久久免费国产精品一区二区| www性久久久com| 亚洲日本va午夜中文字幕久久| 久久精品国产亚洲av麻豆色欲| 国产精品99久久久久久宅男| 成人久久免费网站| 久久免费香蕉视频| 国产一级做a爰片久久毛片| 久久午夜福利电影| 91精品国产高清91久久久久久| 国产精品gz久久久| 国产一久久香蕉国产线看观看| 亚洲美日韩Av中文字幕无码久久久妻妇| 久久香蕉超碰97国产精品| 亚洲欧美久久久久9999| 日韩精品久久久久久| 激情伊人五月天久久综合| 中文字幕无码精品亚洲资源网久久| 久久精品国产色蜜蜜麻豆| 99re这里只有精品热久久| 精品久久久中文字幕人妻| 久久99毛片免费观看不卡| 久久久久女人精品毛片| 狼狼综合久久久久综合网| 久久久久久精品免费免费自慰| 日本高清无卡码一区二区久久| 麻豆精品久久精品色综合| 国产精品久久久久久久| 色综合久久夜色精品国产| 久久久久亚洲AV成人网人人软件| 精品999久久久久久中文字幕| 亚洲精品乱码久久久久久中文字幕 | 无码精品久久久天天影视| 热久久国产欧美一区二区精品 | 久久精品国产亚洲AV影院| 18禁黄久久久AAA片| 欧美黑人激情性久久|