タグ

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

  • 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
    gin0606
    gin0606 2016/02/24
  • 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
    gin0606
    gin0606 2015/08/07
    ふむーん
  • Swift - Xcode 6.1-Beta2 における変更点 - Qiita

    というわけでつつがなくMacBook Airより高いキョダiPhone128GBを予約するやいなや、YosemiteがDP8に、XCodeが6.1-Beta2になっていたので。 Swiftが1.1に 1.0が出たばかりだというのになんとも気が早いことです。Xcodeも6.1こそ命ということでしょうね。 Beta6より引き続き… Optional型に関するさらなる改良はずっとやっているみたいです。 Failable Initializer で、1.0と1.1で最も変わったのがこれでしょう。これまでは

    Swift - Xcode 6.1-Beta2 における変更点 - Qiita
    gin0606
    gin0606 2014/09/16
  • Swift - Xcode 6 Beta 6 における変更点 - Qiita

    Xcode6 Beta5からまだ2週間ですが、Xcode6 Beta6が登場しています。この調子で二週間ごとにベータ版出すのかなApple... というわけで前回に引き続き、ダウンロード待ちの手慰みに。 Xcode 6 beta 6 Release Notes Optional型に関するさらなる改良 Foundation APIにおけるOptional型の見直しがさらに進んでいます。T!の多くが、nilを取りうる場合はT?、そうでない場合はTへと変更されています。間違いを見つけた方は、“#IUO”をSubjectに含めた上でRadarでご報告ください。なお、T!のまま据え置かれているものに関しては報告不要です。Appleでも把握しています。 T?であるべきところがTとなっている場合、以下のように明示的にOptional型を指定して代入したのち直ちにアンラップすることで回避できます。 var

    Swift - Xcode 6 Beta 6 における変更点 - Qiita
    gin0606
    gin0606 2014/08/19
  • Swift - Xcode 6 Beta 5 における変更点 - Qiita

    DLに時間がかかっているので待ち時間の手慰みに。 Xcode 6 beta 5 Release Notes Optional型に関する改良 UIView, NSView, UIFont, そして UIApplicationDelegate の optional 準拠が向上し、 implicitly unwrapped optionals がほぼ取り除かれました OptionalはEquatableプロトコル準拠でなくても==ないし==でnilとの比較ができるようになりました Optionalは(以前はLogicValueと命名されていた)BooleanType準拠ではなくなりました。今後はvariable != nilと明示する必要があります。 ImplicitlyUnwrappedOptionalにはまだBooleanTypeの属性が残されています。今後取り除かれる予定です。 x!を通し

    Swift - Xcode 6 Beta 5 における変更点 - Qiita
    gin0606
    gin0606 2014/08/05
  • Swift - 等しさとせつなさと型の強さと - Qiita

    Swiftの関数の引数は、常に一つ だとしたら、Swiftではカリー化は不要ということになってしまう。 もちろん、そんなことはない。 求めているのは、「n-tupleを引数とする関数を、1-tupleづつ引数を受け取り、n個受け取った時点ではじめて値を返す関数にすること」である。 例えばこんな風に。 import Darwin // for log(Double) func logWithBase(base:Double)->Double->Double { return { x in log(x) / log(base) } }

    Swift - 等しさとせつなさと型の強さと - Qiita
    gin0606
    gin0606 2014/07/31
  • Swiftで面倒なJSONの取り扱いをさらに10倍便利にするclass JSON - Qiita

    Swiftで面倒なJSONの取り扱いを10倍便利にするSwiftyJSONをもってしても、まだJavaScriptよりも面倒だったのが悔しかったので書きました。 https://github.com/dankogai/swift-json/ Synopsis AnyObjectなSwiftオブジェクトも、こうして JSON Stringにできます。 let obj:[String:AnyObject] = [ "array": [JSON.null, false, 0, "",[],[:]], "object":[ "null": JSON.null, "bool": true, "int": 42, "double": 3.141592653589793, "string": "a α\t弾\n?", "array": [], "object": [:] ], "url":"http:/

    Swiftで面倒なJSONの取り扱いをさらに10倍便利にするclass JSON - Qiita
    gin0606
    gin0606 2014/07/16
  • SwiftでJavaScript - Qiita

    案ずるより書くが易し… Swiftのウリの一つは(Objective-)?Cに直アクセスできることですが、それが意味するのは、JavaScriptに直アクセスできるということでもあったのです。 とりあえずJS使うだけなら こんだけ。 import JavaScriptCore let ctx = JSContext() let ary = [0, 1, 2, 3] var jsv = ctx.evaluateScript( "\(ary).map(function(n){return n*n})" ) println(jsv) var a = jsv.toArray() println(a) はい。見てのとおり、import JavaScriptCoreして、JSContext()でJSの実行環境をこしらえて、それに.evaluateScript()でStringわせれば、おしまい。 実

    SwiftでJavaScript - Qiita
    gin0606
    gin0606 2014/07/11
  • Swiftの関数はファーストクラスである--とは限らない - Qiita

    ここQiitaには初投稿の弾です。 Swiftにおいて、関数はファーストクラス、つまり関数は第一級関数であることはすでに皆さんご存知のとおりです。つまり、 func f(x:XType)->RType { var result:RType // .... return result }

    Swiftの関数はファーストクラスである--とは限らない - Qiita
    gin0606
    gin0606 2014/06/28
  • 1