3

次のように、インデックスが奇数の場合は true を返し、偶数の場合は false を返すカスタム タグを登録しました。

class OddEvenTag: BasicTag {
    let name = "OddEven"

    func run(arguments: ArgumentList) throws -> Node? {
        guard
            arguments.count == 1,
            let index = arguments[0]?.int
            else { return Node(nil) }
        print(index, index & 1)
        return Node((index & 1) == 1)
    }
}

print ステートメントは、満足のいく良い出力を生成します。

0 0
1 1
2 0
3 1
...

ただし、リーフ ファイルの #loop 内でカスタム タグを使用すると、次のようになります。

#OddEven(offset){hello}##else(){bye}

常に hello をインスタンス化します。return ステートメントに false をハードコーディングしようとしましたが、結果は変わりません。以前に (より複雑な) カスタム タグを使用したことがあるので、それらが機能することはわかっています。

ご参考までに、タグを使用して、グリッドの行の背景色を交互に変更したいと思います。

4

1 に答える 1