タグ

ブックマーク / qiita.com/omochimetaru (3)

  • UTF-8をデコードするオートマトンの実装 - Qiita

    オートマトンを実装するための方法として、ある状態において、どの文字を受け取ったら、次の状態がどれであるかを表で表現する事ができます。今入力として1バイト受け取ることを考えると、1バイトは0-255の256通りなので、状態を整数で表すとして、以下のように2次元配列で表現できます。 static const signed char trans[][0x100] = { { /* S0 0 1 2 3 4 5 6 7 8 9 a b c d e f */ /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, /* 3

    UTF-8をデコードするオートマトンの実装 - Qiita
  • Swiftのエラーハンドリングはなぜ最先端なのか - Qiita

    Swiftのエラーハンドリングは他のメジャーなプログラミング言語のどれとも異なる新しい仕様を持っています。特に、検査例外を持っているのですが、これはJavaで採用された以降はほとんどの言語で採用されていないため、現代では否定されている過去の間違いだったと広く認識されていると思います。そのため、Swiftユーザーで無い人は、検査例外という言葉をみた瞬間に興味を失ってしまうため、その詳細がなかなか世の中に伝わっていないと感じています。一方、私はこんなSwiftのエラーハンドリングをとても気に入っていて、様々な言語の進化の歴史を踏まえた産まれた最も優れた最先端の仕様だと思っています。この記事ではその考えを説明します。 Javaのエラーハンドリング Javaは検査例外を持っています。これにより、あるメソッドがエラーを送出するかどうかを関数のシグネチャとして静的に表明できます。 // 検査例外の例

    Swiftのエラーハンドリングはなぜ最先端なのか - Qiita
  • SwiftのToll-Free Bridgeの実装を読む - Qiita

    Toll-Free Bridgeとは Objective-CにはToll-Free Bridgeという仕組みがありました。 これは、C言語のライブラリであるCoreFoundationと、 Objective-CのライブラリであるFoundationの間で、 対応するクラス同士でバイナリ互換性があり、 ポインタを強制キャストすることでどちらにもなる、という不思議なものです。 下記にNSDataをCFDataとして扱うサンプルを示します。 // コンパイル: clang -framework Foundation a.m #import <Foundation/Foundation.h> int main(int argc, char * argv[]) { @autoreleasepool { NSData * data = [[NSData alloc] initWithBytes: "

    SwiftのToll-Free Bridgeの実装を読む - Qiita
    a2ikm
    a2ikm 2015/12/13
  • 1