Quantcast
Channel: tyoshikawa1106のブログ
Viewing all articles
Browse latest Browse all 1436

SFDC:Winter'24のIterable による For ループ内での反復処理の簡略化を試してみました

$
0
0

Winter'24のIterable による For ループ内での反復処理の簡略化を試してみました。Apexコードで新しくできるようになった書き方です。

Iterable による For ループ内での反復処理の簡略化


書き方は次のような感じ。

MyIterable


public class MyIterable implements Iterable<String> {

    private List<String> strings {get; set;}

    public MyIterable(List<String> strings) {
        this.strings = strings;
    }

    public Iterator<String> iterator() {
       return this.strings.iterator();
    }
}
MyIterableTest


@IsTest
private class MyIterableTest {
    
    private static User testAdminUser = new User(Id = UserInfo.getUserId());

    @IsTest static void testIterableForLoop() {
        
        System.runAs(testAdminUser) {

            List<String> strings = new List<String>{'Hello','World'};

            Test.startTest();
            
            for (String str : new MyIterable(strings)) {
                System.debug(str);
            }

            Test.stopTest();
        }
    }
}

※実際のテストクラスではdebug処理は必要ありませんが..
※forの中でnew MyIterableとやっていますがforの外でnewするやり方でもOK。


Apexクラスでimplements Iterableを宣言することでリストに対して処理行うクラスを作ることができますが、今回そのクラスの中でforループが使えるようになった感じかと思います。


Iterableクラスについてはこちら。

カスタムイテレーター


ちなみ現在List型とSet型が使えますが、Set型が使えるようになったのはSummer'23のころということでした。

Set 種別での Iterable インターフェースの使用

おまけ1

最初winter'25のつもりでチェックしてたけど、einter24でした。25でできるようになったのはこの部分。


おまけ2

Trailheadのハンズオンを進めていたときに次のエラーが発生しました。


ハンズオンの方は大文字小文字の違いもチェックされるみたいです。海外のコミュニティで同様のやりとりをしていました。


Viewing all articles
Browse latest Browse all 1436

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>