第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

模式匹配對象分解在Vavr中的列表中

模式匹配對象分解在Vavr中的列表中

慕尼黑8549860 2022-09-07 17:44:23
是否有任何選項可以在 vavrs 集合上應(yīng)用對象分解?即來自scala的類似下面的代碼片段:val x = List(1, 2, 3)val t = x match {  case List(a, b, c) => (a, b, c)}(在此示例中,我們將列表轉(zhuǎn)換為元組)我在這里看到了一些類似于我的情況的例子,https://github.com/vavr-io/vavr/issues/1157 但看起來當(dāng)前的語法不同,甚至是不可能的。
查看完整描述

2 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗 獲得超9個贊

Vavr Lists就像在許多函數(shù)式程序中一樣,由一個head(單個元素,稱為Cons)和一個tail(另一個列表)組成,可以在第一個元素上匹配(而不是最后一個,除非通過反轉(zhuǎn)列表),盡管這將比Scala / Haskell更詳細(xì)。此外,雖然您可以在前3個元素上進行匹配,但您只能捕獲第一個元素:


var t = Match(x).of(

  Case($Cons($(), $Cons($(), $Cons($(), $()))), (a, tail) -> Tuple(a, tail.head(), x.get(2)))

);

模式匹配的Vavr文檔及其局限性:


當(dāng)前的 API 做出了一個折衷方案,即所有模式都匹配,但只有根模式被分解。


編輯:如果您想要列表中的3個元素,那么您需要確保第三個元素之后的尾部是空列表(稱為Nil):


var t = Match(x).of(

  Case($Cons($(), $Cons($(), $Cons($(), $Nil()))), (a, tail) -> Tuple(a, tail.head(), x.get(2)))

);


查看完整回答
反對 回復(fù) 2022-09-07
?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗 獲得超5個贊

JMPL是一個簡單的java庫,它可以使用Java 8功能模擬一些功能模式匹配。此庫還支持解構(gòu)模式


   Figure figure = new Rectangle();


   let(figure, (int w, int h) -> {

      System.out.println("border: " + w + " " + h));

   });


   matches(figure).as(

      Rectangle.class, (int w, int h) -> System.out.println("square: " + (w * h)),

      Circle.class,    (int r)        -> System.out.println("square: " + (2 * Math.PI * r)),

      Else.class,      ()             -> System.out.println("Default square: " + 0)

   );


   foreach(listRectangles, (int w, int h) -> {

      System.out.println("square: " + (w * h));

   });

解構(gòu)類必須具有一個或多個提取方法。它們必須標(biāo)記為注釋@Extract。必須輸出參數(shù)。由于基元類型的基元和包裝器不能通過引用傳遞,因此我們必須使用IntRef,F(xiàn)loatRef等包裝器。


   @Extract

   public void deconstruct(IntRef width, IntRef height) {

      width.set(this.width);

      height.set(this.height);

   }      


查看完整回答
反對 回復(fù) 2022-09-07
  • 2 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號