タグ

ブックマーク / qiita.com/dankogai (8)

  • Swift 2のProtocol-Oriented Programmingっぽい書き方を理解する - Qiita

    func isEven(number: Int) -> Bool { return number % 2 == 0 } let evens = Array(1...10).filter(isEven) print(evens) // [0, 2, 4, 6, 8, 10] 何が古いかというと、いちいち1...10をArrayにしているところ。もうしなくていいんです。そう、Swift 2ならね。 実際、Swift 2では.mapはもうArrayでは定義されてないんです。公式ドキュメントのArray Structure Referenceを見ても、.mapはどこにも見当たりません。 ではどこで定義されているか? Arrayが準拠しているprotocol CollectionType です。実際にCollectionType Protocol Referenceを見てみると、.mapや.filt

    Swift 2のProtocol-Oriented Programmingっぽい書き方を理解する - Qiita
    tokorom
    tokorom 2016/01/29
  • swiftでもテストはTAPで - Qiita

    Swift が opensource 化されてもう一月以上。みなさんテストはどうされてますか? もちろんこの場合XCTestなんてチャラいものは使えません。Linux版にSwift自体はあってもXcodeなんてありませんから。 というわけで、私はずっとTest Anything Protocolを使ってきました。 発祥はPerl Communityですが、別にPerlでなくても使えます。例えばJSの世界ではよく使われているmochaも対応してますし、TAP適合の出力であれば、それをチェックするためのスクリプトproveは、Perlが入っている環境であれば必ず入っているのでOS XとLinux Distroの過半では out-of-box で使えます。 見てのとおりシンプルなものなので、その場で都度実装してもいいですし実際そうしてきたのですが、ずいぶんとSwiftプロジェクトも増えたので、

    swiftでもテストはTAPで - Qiita
    tokorom
    tokorom 2016/01/26
  • swiftのREPLで俺モジュールをimportする方法 - Qiita

    SwiftのREPL、最高。 何が最高かって、あの重いコンダラじゃなくてXcodeを立ち上げなくても使えるところ。Xcode不要なので、Linuxでも動くし。 しかし、perlのuseとかrubyのrequireとかpythonのimport相当のことを、自分の書いたコードに対してやろうとすると一苦労。でも、一旦やり方を掴んでしまえばちょろいもんです。 swift-complexを例に説明します。 「説明は抜きにして、とにかく俺モジュールimportしたいという人は、以下のMakefileを雛形にしてください。 MOD=Complex BIN=main MODSRC=complex/complex.swift complex/exops.swift BINSRC=$(MODSRC) complex/main.swift complex/tap.swift MODULE=$(MOD).swi

    swiftのREPLで俺モジュールをimportする方法 - Qiita
    tokorom
    tokorom 2016/01/26
  • Swift on Linux: Getting Started ASAP - Qiita

    キター! Swift is Open Source - Swift Blog - Apple Developer 理念的にはオープンソースであることが最重要ですが、実地ではApple製品以外の環境も正式サポートされたことが大きいでしょう。これでやっと真の意味での汎用言語となったわけです。 というわけで、早速使ってみましょう。 下準備 Ubuntu 14.04 LTS or Ubuntu 15.10 (64bit) もちろんVMでも構いません。メモリー2GB、仮想ディスク16GBもあれば余裕です。ソースから debugugging symbol までサポートしたフルビルドをしたい場合は、打って変わってメモリー16GBでも足りず、さらに16GBほどswapを足してやっと事なきを得ましたが、バイナリーをダウンロードして使うのであれば最低限で事足ります。 clangのアップデート(14.04 LT

    Swift on Linux: Getting Started ASAP - Qiita
    tokorom
    tokorom 2015/12/10
  • Swift - 1.0 (Xcode 6.0) と 1.1 (Xcode 6.1) 両方に対応する - Qiita

    すでにして Swift 1.0 と Swift 1.1 の Conflict が発生したので、対処法を。 Foo or Foo? 問題となったのは、ここ Failable Initializer これまでは

    Swift - 1.0 (Xcode 6.0) と 1.1 (Xcode 6.1) 両方に対応する - Qiita
  • Swiftの関数の引数は、常に一つ - Qiita

    だとしたら、Swiftではカリー化は不要ということになってしまう。 すなわち、ざっくり言うとカリー化とは複数の引数を1つに減らすことを指します - Swiftで関数のカリー化(currying)入門 Swiftの関数は、つねに一つの値を受け取り、一つの値を返すのだから。 以下のコードを動かしてみれば、それがわかる。 func call<A,R>(f:A->R, a:A)->R { return f(a) } func id(i:Int)->Int { return i } func add(x:Int, y:Int)->Int { return x + y } call(id, 42) // 42 call(add, (21,21)) // 42 上記のcall()は、「『型Aの値を一つだけ取って型Rの値を返す関数』と『型Aの値』を取って『型Rの値』を返す関数」なはずなのに、「IntとIn

    Swiftの関数の引数は、常に一つ - Qiita
    tokorom
    tokorom 2014/07/30
    Haskell勉強会のおかげでこの内容理解できてよかった(それまでカリー化とか知らんかった)
  • Swift - UnsafePointerと上手に付き合う - Qiita

    ああなんてもったいない誤解。 ということでUnsafePointer.alloc()でアンセーフなメモリを確保して、その中に返してもらって、利用後に速やかに破棄するという感じにしかならないようです。 - SwiftからMachのhost_info()を呼び出す(UnsafePointerのキャスト) Cの構造体はそのままSwiftの構造体として使える Cの構造体も、Swiftの構造体と同じ流儀で扱えます UnsafePointer<cstruct>を要求する関数には、&cstructを渡すだけでおk 実際にご覧いただきましょう。 import Darwin // もちろんFoundationでもおk func lastModified(path:String)->String? { var st = stat() // *1 let err = path.withCString { //

    Swift - UnsafePointerと上手に付き合う - Qiita
    tokorom
    tokorom 2014/07/29
    Cの構造体をそのままSwiftの構造体として使える とか 可変長バッファーにSwiftのArrayが使える とか
  • Swiftで無限リスト - Qiita

    を実装してみました。 https://github.com/dankogai/swift-lazylist 過去にも Perl http://blog.livedoor.jp/dankogai/archives/50839189.html JavaScript https://github.com/dankogai/js-list-lazy などでも実装していて、我ながらどれだけ Lazy List が好きなんだと思いますが、 Swiftのそれは格別に気持ちいいです。 以下、READMEから。 Infinite list let ns = lazylist { $0 } // infinite list of natural numbers println(ns.filter{$0 % 2 == 1}.map{$0 * $0}.take(10)) // [1, 9, 25, 49, 81,

    Swiftで無限リスト - Qiita
    tokorom
    tokorom 2014/07/11
    めも
  • 1