Swift part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/06/11(水) 14:42:15.02ID:+13mKJ0ZApple Developer
https://developer.apple.com/swift/
Welcome to Swift
https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/
iBooks: The Swift Programming Language
https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
書籍の形にはなってないけどドキュメント
The Swift Programming Language
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
今のところbeta版のXcode 6がSwift対応らしい
https://developer.apple.com/xcode/downloads/
関連スレ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/
前スレ
Swiftスレ
http://peace.2ch.net/test/read.cgi/tech/1401736341/
0573デフォルトの名無しさん
2014/07/08(火) 23:00:38.34ID:IDQCR4dM0574デフォルトの名無しさん
2014/07/08(火) 23:06:19.28ID:1LGDIph+しかもID違う人からw
0575デフォルトの名無しさん
2014/07/08(火) 23:12:13.29ID:vanWZNwy愚痴るのはいいけど、ベータ版ってこんなもんだよ。
プログラミング言語って10年以上掛けて成熟していくもんだけど、Swiftはもっと短い時間で成熟させようとしてるしね。
0576デフォルトの名無しさん
2014/07/08(火) 23:12:18.25ID:i4Jr+ODiOptionalValueはSwiftオリジナルなのかなーとか思ってるんですが。
0577デフォルトの名無しさん
2014/07/08(火) 23:13:10.92ID:IDQCR4dM自分から絡みついてんじゃん
0578デフォルトの名無しさん
2014/07/08(火) 23:20:06.73ID:1LGDIph+>>567 バーカ
>>570 氏ね
>>572 必死だなw
0579デフォルトの名無しさん
2014/07/08(火) 23:20:49.20ID:vanWZNwyoptionalは普通に他言語にあるでしょ。Scalaとか
Javaでさえ(ライブラリレベルだけど)サポートしてるしねぇ
0580デフォルトの名無しさん
2014/07/08(火) 23:26:06.92ID:hjz6cmzUなんか余裕ぶっているのが哀れw明らかにそうじゃなさげなのが見え透いているだけに
いままでの言動から浅さがわかるんだけど、本人にはわからないんだろうなというのは、わかっていたらその浅はかさは出ないだろうからな
というテストに対する反応はどう?
0581デフォルトの名無しさん
2014/07/08(火) 23:28:29.13ID:vanWZNwyRubyの述語のメソッド末尾に?付けたりするセンスと同じでいい感じ。
0582デフォルトの名無しさん
2014/07/08(火) 23:29:01.66ID:1LGDIph+0583デフォルトの名無しさん
2014/07/08(火) 23:29:52.59ID:1ZFygV1q末尾に?を付けるのはC#のNullable Typesをパクっただけ
0584デフォルトの名無しさん
2014/07/08(火) 23:32:41.22ID:vanWZNwy知ってる。でもあれはOptionalsとは意味合いが違うじゃん?
0585デフォルトの名無しさん
2014/07/08(火) 23:36:04.29ID:hjz6cmzUぼくに反するヤツなんてそういるわけなーいって?
いや、違うよ。俺はID:hjz6cmzUだけだよ。可哀想に、なお哀れ
もうよしたほうがいいよw
0586デフォルトの名無しさん
2014/07/08(火) 23:40:14.82ID:1LGDIph+0587デフォルトの名無しさん
2014/07/08(火) 23:41:21.19ID:hjz6cmzU0588デフォルトの名無しさん
2014/07/08(火) 23:43:13.81ID:1LGDIph+0589デフォルトの名無しさん
2014/07/08(火) 23:43:26.78ID:IDQCR4dM0590デフォルトの名無しさん
2014/07/08(火) 23:49:43.10ID:hjz6cmzU0591デフォルトの名無しさん
2014/07/08(火) 23:50:52.87ID:3Wa9eLVllisp由来
0592デフォルトの名無しさん
2014/07/08(火) 23:51:46.48ID:1LGDIph+そろそろ寝るか
0593デフォルトの名無しさん
2014/07/09(水) 00:42:32.08ID:lknlO7J2Swift の Optional の概念は、
ML や Haskell といった静的型付けな関数型言語では一般的なもの
たとえば ML族(SML/OCaml/F#) では Option 型と呼ばれ、
NONE または SOME x という値を持つ
Haskell や Scala では Maybe 型と呼ばれ、
Nothing または Just x という値を持つ
ただし、この Optional という概念は Java や C# のような非関数型言語でも
実装できるけど、それをAppleが(関数型言語ではない) Swift における
言語仕様の一部として公式に取り入れたことは、特筆すべきことだ
あと Apple 固有の事情ではあるけれど、動的型付けと静的型付けを
混在できる(混在させざるをえなかった?)のは、Swift の独自仕様だと思う
0594デフォルトの名無しさん
2014/07/09(水) 00:51:11.73ID:V9xUyLw3まあ、言語仕様自体に組み込まれてるSwiftの方が使い勝手は良さそうだよね
0595デフォルトの名無しさん
2014/07/09(水) 00:53:11.40ID:sDYfLtkS0596デフォルトの名無しさん
2014/07/09(水) 00:55:32.61ID:sDYfLtkS0597デフォルトの名無しさん
2014/07/09(水) 00:58:48.23ID:SDA1RKlKターミナル上でインタプリタlikeに動くのも特筆に値するのでは?
0598デフォルトの名無しさん
2014/07/09(水) 01:01:46.20ID:sDYfLtkS0599デフォルトの名無しさん
2014/07/09(水) 01:20:33.77ID:D+h9bFI00600デフォルトの名無しさん
2014/07/09(水) 01:20:39.12ID:lknlO7J2おぉ Java でも対応されたんだ、知らなかった、ありがとう
というか NullPointerExcption の問題(いわゆる ヌルポ)は、
大昔から指摘され続けていた
これは Java5 で総称型がサポートされた時点で解決できていたハズなのに、
ようやく..... といった感じがする(ラムダ式を待つ必然性は無かったはず)
0601デフォルトの名無しさん
2014/07/09(水) 01:31:07.79ID:CAl1OnKc0602デフォルトの名無しさん
2014/07/09(水) 02:37:40.83ID:V0tl3oDx0603デフォルトの名無しさん
2014/07/09(水) 04:45:29.09ID:ot7dWtX9以下の様なコードを書いてみましたが、img2,img3はmissing argumentと言われビルドできず、
filename()では一応ファイル名がとれているのですが、img1はnilが帰ってきてしまいます。
リファレンスを見てinit(CGImage CGImage: CGImage!)を使えるかと思ったのですが…
var img1 = UIImage(named:r.defaultRepresentation().filename())
var img2 = UIImage(CGImage:r.defaultRepresentation().fullResolutionImage())
var img3 = UIImage(CGImage:r.thumbnail())
xcodeはbeta3を使用していて、実行はシミュレータでの結果になります。
-- 該当部分の全コード(改行を減らすため一部{}等をまとめています)
@IBAction func onClick(sender : AnyObject) {
let block2: ALAssetsGroupEnumerationResultsBlock =
{(r,i,s) in
if(r) {
var img1 = UIImage(named:r.defaultRepresentation().filename())
var img2 = UIImage(CGImage:r.defaultRepresentation().fullResolutionImage())
var img3 = UIImage(CGImage:r.thumbnail())
println("¥(r.defaultRepresentation().filename())")
}}
let block1:ALAssetsLibraryGroupsEnumerationResultsBlock =
{(g,p) in if(g) {g.enumerateAssetsUsingBlock(block2)}}
let l = ALAssetsLibrary()
l.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupAll)
,usingBlock:block1
,failureBlock:{(error) in println("Problem loading albums: ¥(error)")})}
0604デフォルトの名無しさん
2014/07/09(水) 08:58:16.58ID:FvPT3vrYまぁクリスは1.0出した後にやるかもしれなくもないみたいなこと言ってたけど
0605デフォルトの名無しさん
2014/07/09(水) 11:23:39.40ID:NzqKfchI0606デフォルトの名無しさん
2014/07/09(水) 11:43:37.58ID:L1cL1sUsPythonやGolangみたいに標準ライブラリが充実しててほしいんだけど、
Cocoaとかいう中途半端なものがあるからなぁ
0607デフォルトの名無しさん
2014/07/09(水) 12:24:45.48ID:V4w6/u2b動的型付けとライブラリの充実度に関係はないだろ。
あと、Cocoaはアプリ用のライブラリだ。
0608デフォルトの名無しさん
2014/07/09(水) 12:27:24.80ID:BA14jeAU> 動的言語ライクに使えることを目指すのなら
別に目指してないと思うけど。
CocoaのAPIを直接叩けて文法的に洗練されたものを作りたかっただけだろうから、
動的束縛もその限度で使えれば十分でしょ。
0609デフォルトの名無しさん
2014/07/09(水) 12:37:18.51ID:D+h9bFI0一介の開発者風情がApple様のお作りになられたSwiftに文句を垂れるなど100万年早いわ
提供されるものを有り難く使えばいいんだよ
あと見つけたバグはちゃんと報告しとけよ
それがお前に出来るせめてもの恩返しだからな
0610デフォルトの名無しさん
2014/07/09(水) 12:38:43.44ID:zxLhieEhAを継承してBを作って
Bの変数に入れてBのメソッド起動すればBのメソッドが実行されるのは当たり前だけど
Aの変数に入れて同じメソッドを実行するとなぜかスーパークラス(A)の方が呼ばれるという。
あれ?お前Bじゃなかったん?っていう。
実行オーバーヘッド無くすために、それが実際に何のオブジェクトかはガン無視して、変数の型で呼ばれる関数が決まるんだと。
なのでObjective-Cのプロトコルみたいなことができない。
むかしC++でそういう訳わからない目にあって、それ以来、静的言語が大嫌いになった。
0611デフォルトの名無しさん
2014/07/09(水) 12:43:13.50ID:7UJfLcS80612デフォルトの名無しさん
2014/07/09(水) 13:23:31.25ID:9OrXBMkc0613デフォルトの名無しさん
2014/07/09(水) 13:26:44.93ID:7UJfLcS80614デフォルトの名無しさん
2014/07/09(水) 13:35:41.85ID:SDA1RKlK0615デフォルトの名無しさん
2014/07/09(水) 14:21:22.52ID:D+h9bFI00616デフォルトの名無しさん
2014/07/09(水) 14:24:28.53ID:xN5CObL0標準ライブラリで定義されている普通の型なんだけど、
SwiftでそうなっていないのはSwiftのユーザ定義型の表現力が低いのか、
ほかの言語のOptional型より高機能なのか、
ライブラリでできることはライブラリでやるという思想がないのか。
どれなんですか?
0617デフォルトの名無しさん
2014/07/09(水) 14:29:12.89ID:1SU4YkH/お前の知識がないだけ
オーバーライドでググれ
0618デフォルトの名無しさん
2014/07/09(水) 14:31:02.75ID:D+h9bFI0DustとかHaskellって、IntやFloatもOptionalに出来るの?
0619デフォルトの名無しさん
2014/07/09(水) 14:46:50.01ID:T0c7+k+30620デフォルトの名無しさん
2014/07/09(水) 14:48:24.45ID:WHgli7Oz0621デフォルトの名無しさん
2014/07/09(水) 15:03:45.03ID:SDA1RKlK>>616 標準だからこそ、コンパイル時に矛盾を発見できるしARCでプロパティーの監視を出来る。
ライブラリでやったらこう言うルールを適用する事が出来なくなる。
バグが少なくなるしコーディングも楽になる。
0622デフォルトの名無しさん
2014/07/09(水) 15:09:38.96ID:V9xUyLw3おまえ半端な知識でゴミな書き込み撒き散らしすぎ
プログラミング言語について語るのにyacc/lexが何なのか知らないとか有り得ないだろ
0623デフォルトの名無しさん
2014/07/09(水) 15:15:33.69ID:BpA+NCPKvirtualがデフォじゃない時のC++のこと言っているんだろ
virtualがデフォでない時のC++をあげつらって、それが全てと言うのもなんだと思うが
0624デフォルトの名無しさん
2014/07/09(水) 15:17:53.48ID:D+h9bFI0>>>615 LLVMで作ってる。
SwiftのソースコードからLLVMの中間言語へ落とし込む構文解析処理のつもりだったんだけど、
LLVMに構文解析ジェネレータ的なツールがあるってこと?
0625デフォルトの名無しさん
2014/07/09(水) 15:31:29.83ID:D+h9bFI0SwiftもClang使ってるとしたら、どうやらハンドメイドらしいね
ttp://stackoverflow.com/questions/6319086/are-gcc-and-clang-parsers-really-handwritten
0626デフォルトの名無しさん
2014/07/09(水) 15:32:19.69ID:k93gpKQENG: var m = Array<Int>.GeneratorType.Element(1)
0627デフォルトの名無しさん
2014/07/09(水) 15:59:26.87ID:7c6OdUYPなぜかこれは通る
Array<Int>.SliceType.Element(1)
0628デフォルトの名無しさん
2014/07/09(水) 16:21:15.19ID:SDA1RKlKSwing コンパイラのパラメータにclang module のcache pathを指定するオプションが有るから、少なくともclang moduleは使ってるみたい。
Swingは、至る所で型類推を使ってるから、yacc/lexでは無理。
Appleがclangの成果を使うのは自然。
0629デフォルトの名無しさん
2014/07/09(水) 16:35:05.29ID:7c6OdUYP型推論は意味解析部の担当だから、yacc/lex は関係ないべ
0630デフォルトの名無しさん
2014/07/09(水) 16:35:43.55ID:13pwJSHlArray<Int> のシンタックスシュガーが Int[] だったのが [Int] に変更されてる。
この書き方はキモい。
0631デフォルトの名無しさん
2014/07/09(水) 16:38:26.85ID:FvPT3vrY0632デフォルトの名無しさん
2014/07/09(水) 16:41:30.17ID:c4TpZOQ0なんでJavaでGUIしようぜ、みたいな話になってんだよw
0633デフォルトの名無しさん
2014/07/09(水) 16:45:55.08ID:ELx5bFYcバグっぽい
0634デフォルトの名無しさん
2014/07/09(水) 17:09:08.81ID:YSvBHpPH俺は合理的だと思うぜ
辞書の糖衣構文を[Int: String]にしたら、配列を[Int]にするのは自然だろ?
0635デフォルトの名無しさん
2014/07/09(水) 17:32:00.97ID:YSvBHpPH[0] -> [Int]
["key": "value"] -> [String: String]
Haskell辺りの受け売りなんだろうか。
0636デフォルトの名無しさん
2014/07/09(水) 17:34:11.31ID:ICY9ltLE0637デフォルトの名無しさん
2014/07/09(水) 17:47:42.60ID:pbWvCCMuできる。
Rustの場合、メモリ上の表現はタグ+数値になるから、サイズはただのintよりは大きくなる。
Haskellは知らない。
Swiftはどうなるの?
>>621
ARCのプロパティ監視の話は良くわからないけど、
SomeかNoneかのチェック行うのを強制する以上の機能がSwiftにはあるという理解でよい?
0638デフォルトの名無しさん
2014/07/09(水) 17:56:08.44ID:FvPT3vrYただ、SomeType? って書き方とか、if let でバインディングしたりとかの
シンタックスシュガーが用意されていて、そういう意味で言語組込み的
自分で enum MyOpt<T> { case Some(T), None } て感じで同等のものを書けるけど
標準のOptionalほど手軽に使えるようにはならんというだけ
ID: SDA1RKlK は言ってること無茶苦茶なので聞くだけ無駄
0639デフォルトの名無しさん
2014/07/09(水) 18:04:04.07ID:5irmvKQ3あたまおかしいのがいるから気をつけたほうがいいぞ
0640デフォルトの名無しさん
2014/07/09(水) 18:05:15.10ID:IWdr99Ar0641デフォルトの名無しさん
2014/07/09(水) 18:05:54.37ID:SDA1RKlK“you must declare every weak reference as having an optional type.”
抜粋: : Inc、Apple. “The Swift Programming Language.” Apple Inc., 2014-07-03T07:00:00Z. iBooks.
この素材は著作権で保護されている可能性があります。
iBooks Storeでこのブックをご覧ください: https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewBook?id=881256329
0642デフォルトの名無しさん
2014/07/09(水) 22:16:33.41ID:ZBnUrNfyなるほど。
nullable型みたいな書き方をシンタックスシュガーとして提供してるのは素敵ですね。
0643デフォルトの名無しさん
2014/07/09(水) 23:16:05.10ID:9bZjyImW0644デフォルトの名無しさん
2014/07/09(水) 23:41:14.39ID:YYUTfgKISwiftyJsonからの抜粋なんですが
enum JSONValue {
case JNumber(NSNumber)
case JString(String)
case JBool(Bool)
case JNull
case JArray(Array<JSONValue>)
case JObject(Dictionary<String,JSONValue>)
case JInvalid(NSError)
/*省略*/
みたいに定義できて要素別にいろんなオブジェクトを持たせられられたり
var first: JSONValue? {
switch self {
case .JArray(let jsonArray) where jsonArray.count > 0:
return jsonArray[0]
/*省略*/
}
}
}
switch文のcaseの中にwhere区を入れて条件追加指定できたりとか。
こんなの初めて見ました。
0645デフォルトの名無しさん
2014/07/09(水) 23:52:00.81ID:9bZjyImWSwiftのそれに一番似てるのはScalaかな
0646デフォルトの名無しさん
2014/07/09(水) 23:54:49.87ID:sDYfLtkS0647デフォルトの名無しさん
2014/07/09(水) 23:55:12.30ID:V9xUyLw30648デフォルトの名無しさん
2014/07/10(木) 00:00:44.87ID:VGRzIMNM0649デフォルトの名無しさん
2014/07/10(木) 00:34:36.38ID:OizG2bfl言語ヲタ集がプンプンするスレだな
0650デフォルトの名無しさん
2014/07/10(木) 00:42:24.85ID:0msrkDWD0651デフォルトの名無しさん
2014/07/10(木) 00:55:50.19ID:Y0rbSAXSデータ型の一つに直和型というものがある
・直和とは集合を互いに交わりの無い部分集合へ分割することを意味する[数学用語]
・Haskell では代数型と、教科書「型システム入門」ではバリアント型とも ....)
・ 他にレコードやタプルは直積型に分類される
このSwift のswitch文は、この直和型を有効利用するために導入された構文になる
そして、他の人達(>>645-648)が指摘しているように、静的型付けな関数型言語の世界では、
すでに直和型とパターンマッチによる多分岐はありふれた存在になっている
で、ここからが本題なんだけど、直和型というのは関数型言語の専売特許ではなくて、
Pascal(Delphi)におけるレコード型の可変フィール(variant field)や
Adaの可変レコード型(variant record type)として、手続き型では古い時代から知られていた
ところがOOP言語が世の常識となるにつれ、直和型の概念が多くのプログラマから忘れられた
さて、ここで Apple は(関数型言語ではない) Swift で直和型を復活させたことになるのだけど、
これが意味するものは何か、近未来の新言語設計にどんなインパクトを与えるのか.....
なかなか興味深い話題だと思う
0652デフォルトの名無しさん
2014/07/10(木) 01:07:29.71ID:rjypBW2y0653デフォルトの名無しさん
2014/07/10(木) 01:22:21.83ID:O9lWsLgo絶賛コメだけじゃなく冷静な批評でもいいのよ
0654デフォルトの名無しさん
2014/07/10(木) 01:24:54.21ID:9na9WfzA0655デフォルトの名無しさん
2014/07/10(木) 02:33:50.13ID:BC+DaKWG「そんなにAppleが憎いなら使わなくていいのよ?」
で、あたまおかしな人を即パージできるからな。
0656デフォルトの名無しさん
2014/07/10(木) 03:28:17.54ID:E7hqdO7Dエポックメイキングな言語とはいえないよね
他の言語を参考に適当に混ぜてちょっとだけ特色出してみましたw
的な言語
そういう意味では、MSのTypeScriptや、GoogleのGo言語を後追いしたにすぎないね
0657デフォルトの名無しさん
2014/07/10(木) 04:25:12.25ID:maMZBDnX0658デフォルトの名無しさん
2014/07/10(木) 05:51:18.93ID:D385SCPI誰がなんと言おうと、Appleにとって最善の言語となった。
終わり
0659デフォルトの名無しさん
2014/07/10(木) 11:17:45.53ID:Z+u99TiJこんどはARMになってCocoaが葬り去されるんですね楽しみです
0660デフォルトの名無しさん
2014/07/10(木) 11:57:24.05ID:Z+u99TiJhttps://gist.github.com/mattt/f457625af116721ffb57
0661デフォルトの名無しさん
2014/07/10(木) 12:08:09.28ID:WUOyQ2abCocoaはそのままだろ
0662デフォルトの名無しさん
2014/07/10(木) 12:10:20.82ID:jxZKmF3sAPIと言語の違いが分からないような人に近付いちゃダメ。
0663デフォルトの名無しさん
2014/07/10(木) 12:25:15.94ID:Z+u99TiJ0664デフォルトの名無しさん
2014/07/10(木) 12:39:58.73ID:xv3o/8yi現実的には言語とAPIは密接に関係してるから
そのうちSwiftネイティブなAPIセットを作るんじゃねというのは
あながちおかしなこと言ってるわけでもないと思う
0665デフォルトの名無しさん
2014/07/10(木) 12:41:47.50ID:xv3o/8yi0666デフォルトの名無しさん
2014/07/10(木) 13:08:56.63ID:GRhY2avWそれにSwiftから見たCocoaは
Implicitly Unwrapped Optionalだらけの魔界だ
真にType safetyな世界に行くには、1からAPIを作り直すほか無いだろう
0667デフォルトの名無しさん
2014/07/10(木) 13:56:03.17ID:xv3o/8yi0668デフォルトの名無しさん
2014/07/10(木) 14:06:43.59ID:o0OR8ld+as?ではなくas使う時点で危険と認識すればよし
0669デフォルトの名無しさん
2014/07/10(木) 16:18:30.34ID:NUwbDbLiCoreFoundationはどこに位置するの?
0670デフォルトの名無しさん
2014/07/10(木) 16:33:09.15ID:U0c3Ed3Kconvenient initとdesignated initが言語仕様として区別されるとか
super.init を呼びわすれるとコンパイルが通らないとか
0671デフォルトの名無しさん
2014/07/10(木) 16:43:07.44ID:lVukJkUe数学記号のこと言ってるなら
https://devforums.apple.com/message/1000934#1000934
> It's not documented yet, but the set of allowed operator characters
> includes 'math' and 'symbol' characters in the Unicode BMP,
> and operator characters can be augmented with combining characters.
> The full set of supported characters will be documented in one of the following seeds.
0672デフォルトの名無しさん
2014/07/10(木) 16:49:23.73ID:jYdaLKAGうんこの絵文字とかはダメなのか
しかし、こんな機能必要かねぇ
■ このスレッドは過去ログ倉庫に格納されています