AndroidもiOSもC#で書けるようになればいいのに。
Xamarinはなんか生理的に受け付けないのでなしで。
しかし,実際に実装するにあたっても可読性のために同じようなところに改行を入れるとおもいます.
という記述が気になったので、実際に実装してみました。
Bookmark
の構造が分からないから、NSDate
のbookmarked
とBOOL
のisHotentry
を持つクラスだと仮定します。
- (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って実際にはNSObject
やNSArray
の恩恵を受ける必要があるので、「純粋なSwift」そのものはいまのところ微妙だなーと思ってます。
あと、blocksはAppleによる「C言語」の拡張なので、blocksの可読性が悪いのを理由にObjective-CディスってSwift持ち上げてるのはなんか虚しい。しかも両方とも仕様作ったのはAppleですよ…。