なるようになるかも

力は多くの場合、その人の思いを超えない。

AndroidもiOSもC#で書けるようになればいいのに。

Xamarinはなんか生理的に受け付けないのでなしで。

しかし,実際に実装するにあたっても可読性のために同じようなところに改行を入れるとおもいます.

という記述が気になったので、実際に実装してみました。

Bookmarkの構造が分からないから、NSDatebookmarkedBOOLisHotentryを持つクラスだと仮定します。

- (Bookmark *)latestHotEntry:(NSArray *)bookmarks
{
    NSPredicate *latestHotEntry = [NSPredicate predicateWithFormat:@"SELF.isHotentry = YES AND SELF.bookmarked = SUBQUERY(%@, $b, $b.isHotentry = YES).@max.bookmarked", bookmarkes];
    return [[bookmarkes filteredArrayUsingPredicate:latestHotEntry] lastObject];
}

そんなに冗長な記述にならない気がします。

NSPredicateの公式ドキュメントの雑っぷりとか、@maxの存在なんてほとんど誰も覚えてないとかそういうのは考慮してないので、実用的に使えるかは微妙ですけど。

Swiftって実際にはNSObjectNSArrayの恩恵を受ける必要があるので、「純粋なSwift」そのものはいまのところ微妙だなーと思ってます。

あと、blocksはAppleによる「C言語」の拡張なので、blocksの可読性が悪いのを理由にObjective-CディスってSwift持ち上げてるのはなんか虚しい。しかも両方とも仕様作ったのはAppleですよ…。

参考資料