WWDC 2014でのスライド'Advanced Swift'に不動点コンビネータを使った見事な方法が載っていたので問題を簡潔にしてメモしておきます.情報をくれた@Ushio@githubさんに感謝. letだけでは無理 letを(letrecのように)使って let fib = {(n: Int) -> Int in return n < 2 ? n : fib(n - 1) + fib(n - 2) }
概要 Swiftでも、rubyのBenchmarkのように簡単に処理時間を計算するメソッドを書いた。 このメソッドを使うと、アプリの速度改善に役立つ。 Benchmarkクラス import Foundation class Benchmark { // 開始時刻を保存する変数 var startTime: NSDate var key: String // 処理開始 init(key: String) { self.startTime = NSDate() self.key = key } // 処理終了 func finish() { let elapsed = NSDate().timeIntervalSinceDate(self.startTime) as Double let formatedElapsed = String(format: "%.3f", elapsed) pr
Swift の Array / Dictionary は最適化なしでは遅い (Xcode 6.1 / iOS 8.1 更新) Swift の Array/Dictionary は最適化なしでコンパイルした場合, 実行速度が遅くなります. NSMutableArray/NSMutableDictionary と比べてもかなり遅い結果となります. テストコード この問題をテストするために単純なサンプルコードを作成しました. NSMutableArray と Swift の Array にそれぞれ 1,000,000 個の要素を追加するコードと, NSMutableDictionary と Swift の Dictionary に 100,000 個の要素を追加するコードです. OS X の Swift は現時点で Beta とされているため, iOS アプリケーションとして作成しました. 利用
ObjectiveCで用意されていた関数や,ObjectiveC関連の情報をあさっていると,頻繁にクロージャに出くわす. [hogeSuccess:^{ hogehoge; }]; よく,クロージャとかブロック構文とか呼ばれるヤツだ. ^自体はブロックと呼ばれるもので,これを関数の引数に渡しているから,ブロック変数とか呼ばれていたりする. 使用方法は関数の引数に限らず,他のところでも使えるのだが,とりあえずこれをブロック変数として使っているメソッドが,結構いっぱい用意されている. swiftでクロージャが定義されているメソッドを呼ばなきゃいけないときや,自分でクロージャを使いたいことがよくあるのでメモしておく. 引数を取らないクロージャをsiwftで // 定義 func hogeSuccess(success:()->Void) { // なんか処理 success() } // 呼び出
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く