2. 2 安達 勇一 • 2013/12 入社 • TwitterID: @UsrNameu1 • Github: https://github.com/ UsrNameu1 • Blog: http://dev.classmethod.jp/ author/yad • ここ半年はサーバーサイドメイン
2015/3/29 Developers.IO 2015 Developers Day D-1 Session資料Read less
FPやHaskellのモナドをSwiftを使って説明してみたけど、過去のものなので今はあまり参考にならないかも。それと内容的にも少し修正が必要。Read less
Monads for functional programming - Philip Wadler セクション2のメモ。セクション2では、シンプルな評価器を構成することにより、モナドを導入し、修正に強い評価器を構成するのにモナドが使用できることが説明されている。 環境 Xcode 8.0 Swift 3.0 準備 forget inpure world バリエーション0:基本的な評価器 項を定数 con(Int) か 項の商 div(Term, Term) で定義する。 enum Term { case con(Int) indirect case div(Term, Term) } ログのために CustomStringConvertible を準拠させる。 extension Term: CustomStringConvertible { var description: String
Pattern Matching, Part 4: if case, guard case, for case May 16, 2016 Updated: Oct 17, 2016 7 minute read — Also available in: 🇨🇳 Chinese Now that we’ve revisited the various syntaxes for pattern matching in part 1, part 2 and part 3, let’s finish this blog post series with some advanced syntax using if case let, for case where and all! Let’s use what we saw in previous articles and apply them al
Accelerate.Framework + Swift Accelerate フレームワークは線形代数の計算を始めとし、音声、信号処理に応用の効くフーリエ変換や画像処理などでハイパフォーマンスな計算処理を提供します。 このフレームワーク内では OS X / iPhone で用いられている Intel, ARM などの CPU の SIMD 命令を用いて計算が最適化されています。 Accelerate フレームワーク自体は iOS のフレームワークのなかでも比較的低レイヤな位置づけであるため、フレームワークを直接叩くような実装を開発者が行うことはまれです。 とはいえ、重量級の計算をアプリケーションのロジック部で行う際に、SIMD による最適化の恩恵が得られるにも関わらず、それを行わないのは宝の持ち腐れと言えます。 Surge はこの低レイヤな位置づけにある Accelerate フレームワ
はじめに 非同期プログラミングを行う時など、ある関数にコールバック関数(クロージャー)を渡していく手法がSwiftの界隈では広く行われている。ただ、コールバック関数の中でさらにコールバック関数を受け取るような処理を行うと、すぐにコールバック地獄と呼ばれるコールバック関数が大量にネストする状態になって、プログラムの見通しが悪くなってしまう恐れがある。そこで、この記事ではContと呼ばれるデータ構造を紹介し、それによってコールバック関数をデータ構造に隠蔽する方法について考える。この記事で紹介するソースコードは次のリポジトリに置かれている。 https://github.com/y-yu/Cont-in-Swift この記事を読んで何か疑問に思った点や改善点などがあれば、気軽にコメントなどで教えて欲しい。 コールバック関数を使った足し算 コールバック関数を受け取るような関数は、主にネットワーク通
Xcode7(Swift2) でデバッグビルドの時だけデバッグ出力して、プロダクションビルドの時はセキュリティのためデバッグログを削る方法のメモ。 このコードにより、print, debugPrintln, NSLogの出力を制御することができます。 事前準備 XcodeプロジェクトのBuild Settings → Swift Compiler → Other Swift Flags の Debug に「-DDEBUG」を追加して下さい。 コード AppDelegate.swift の冒頭に以下のグローバル関数を追加します。 他のファイルのほうがわかりやすければAppDelegate以外でも大丈夫です。 // リリースビルドでprint, debugPrintを無効化 func print(object: Any) { #if DEBUG Swift.print(object, term
これまで Objective-C で開発をしていたとき、デバッグ時のみ実行したいコードは以下のように記述していました。 試しに #if DEBUG ... と書いてみましたが期待した動作をしません。 Apple のドキュメントをよく読むと以下のように書いてあります。 Swift code and Objective-C code are conditionally compiled in different ways. Swift code can be conditionally compiled based on the evaluation of build configurations. Build configurations include the literal true and false values, command line flags, and the platfo
// Java List<String> strings = new ArrayList<String>(); ArrayList インスタンスを ArrayList 型の変数として取り回すことはめずらしく、スーパータイプである List 型として扱います。これによって、 ArrayList なのか LinkedList なのかという実装の違いを気にすることなく一般的な List としてコードを書くことができ、再利用性が高まります。 Swift では Array も Set もみんな Sequence プロトコルを満たしており、同じように Array や Set を一般的な Sequence 型として扱いたいことがあります。 Swift のプロトコルはジェネリクスの代わりに associatedtype を使うので、構文上 Sequence<String> のようには書けません。しかし、型
この記事ははてなデベロッパーアドベントカレンダー2015の16日目の記事です.昨日は id:motemen の エンジニア寿司を支える技術 - Hatena Developer Blog でした. こんにちは.id:yashigani_w です. はてなでは定期的に開発合宿があり,好きな開発言語を試したり,普段仕事では一緒にならないメンバーとサービス開発をすることができます. 今年の合宿で私が所属したチームでは,node.jsとtypescriptを使い,Webサービスを開発しました. 私は普段iOSアプリ開発を担当しているので,あまりサーバサイドの実装をすることはありませんし,JavaScriptもあまり得意ではないのですが,開発合宿の機会を使って新たな技術に挑戦してみました. 合宿を前に技術的に不安を抱えていた私は,あるチームメンバーに「事前になにを学んでおけばいいか」と訪ねたところ,
導入 Swiftでは通常のプロトコルは変数の型として使用することができますが、 型パラメータ(associated type)を持つジェネリックなプロトコルの変数は作れません。 非ジェネリックな例 protocol Hogeable { func hoge() -> Int } struct HogeCat: Hogeable { func hoge() -> Int { return 1111 } } let cat = HogeCat() let hogeable: Hogeable = cat // コンパイルOK protocol Fugable { typealias Element func fug() -> Element } struct FugaDog: Fugable { func fuga() -> Int { return 2222 } } let dog = Fu
Objective-Cに替わる新しいプログラミング言語Swiftの登場 WWDC2014で発表された新しいプログラミング言語Swiftでできることを紹介したいと思います。 今までとこれから Swift使うとこんなにコードが短くなるぜという例です。 今まで これから 確かにスマートですね。 言語ガイドをダウンロード iBookでガイドを読めますのでダウンロードしてみましょう。 変数の宣言 varは変数、letは定数 var myVar = 42 myVar = 50 let myConst = 42 コントロール if,switch,for-in,for,while,do-while let individualScores = [76, 43, 103, 87, 12] var teamScore = 0 for score in individualScores { if score >
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く