firstとは?

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Game }

first_sample_device := class(creative_device):

    OnBegin<override>()<suspends>:void=
        Numbers := array{0, 1, 2, 3, 4, 5}

        if:
            FirstEvenNumber :=
                first:
                    Element : Numbers
                    Mod[Element, 2] = 0
        then:
            Print("The first even number in (Numbers) is: {FirstEvenNumber}")
        else:
            Print("There are no even number")

まずは簡単な例から紹介します。firstは配列を分解し条件を記述できます。そして、その条件を満たした最初の要素を返す簡単な式です。

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Game }

first_sample_device := class(creative_device):

    OnBegin<override>()<suspends>:void=
        Numbers := array{0, 1, 2, 3, 4, 5}

        if:
            EvenNumbers := 
                for:
                    Element : Numbers
                    Mod[Element, 2] = 0
                do:
                    Element
            FirstEvenNumber := EvenNumbers[0]
        then:
            Print("The first even number in (Numbers) is: {FirstEvenNumber}")
        else:
            Print("There are no even number")

先ほどのコードは、このように書き換えることも可能です。

分解と一致

first式の簡単な仕組みを解説します

まずは分解

for式と同じく、「Element : Array」の形式で配列やgeneratorを展開することができます。

条件チェック

first式内では条件を記述できます。

一致する最初だけを取り出す

分解し、条件をチェックし、式が失敗せずに終わると、firstはその時点での要素を返します。今回は偶数である場合に条件を満たして式が成功するため、その最初の偶数である「2」がFirstEvenNumberに入ります。

おまけ

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Game }

first_sample_device := class(creative_device):

    OnBegin<override>()<suspends>:void=
        Numbers := array{0, 1, 2, 3, 4, 5}

        if:
            FirstEvenNumber :=
                first:
                    Element : Numbers
                    Mod[Element, 2] = 0
                do:
                    Element
        then:
            Print("The first even number in (Numbers) is: {FirstEvenNumber}")
        else:
            Print("There are no even number")

for式と形式を合わせるために、doで明示的に取り出す要素を指定することができます。first単体の場合は、そのインデント内の最後を返すのですが、doを指定すると、do内の要素を返すようになります。

送信中です