1 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 04:12:21.08 ID:rEEU5ykv] WWDC2014で発表されたAppleの新言語Swiftについて語りましょう https://developer.apple.com/swift/
386 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:58:38.99 ID:XqFykZgR] C書いてるときには、関数内で特定の処理の塊を { } で囲んでコメント付けたりしてたんだが、 こういうことを Swift では出来なくなったみたいだな。 {} がクロージャとして認識されるから。
387 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:09:55.48 ID:OzgJ1p8p] 文末記号が無い言語は解析ルール次第で出来ることが変わるから信用できない VB9なんかは多項式の途中で改行するとエラーになったりして救えなかった
388 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:24:02.90 ID:fhxWm8Xr] >>386 そういうのは関数内で関数定義して呼び出しちゃえばいいんじゃない? コンパイルされるコードは最適化されちゃって変わんないと思うよ
389 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:24:35.64 ID:fhxWm8Xr] >>387 解析ルールは明示されてるよ
390 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:25:14.43 ID:bTGozmC4] >>381 こ、こんなのであってますか……言語仕様もいまいち分かってなくて コンパイル通るかもわかんないけど…… var hogehoge = "hogehoge" var a : Boolean = let b : Integer = 0b11110000 && let hogehog = "gehogeho"
391 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:26:21.05 ID:bTGozmC4] そもそも、IntegerもBooleanも違うかったわ
392 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:34:00.01 ID:XqFykZgR] お前、言語仕様も分かってないのにグダグダ言ってたのか
393 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:39:35.40 ID:/lL990/k] >>390 2行目の b と : の間で文法エラー
394 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:40:36.38 ID:fhxWm8Xr] >>390 なんかめちゃくちゃだと思うが、 式の途中で改行とかすれば次の行の先頭にインデントとか入るだろうから 行の初めが前の行から継続してるかどうかは自明になると思う
395 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:49:48.50 ID:18Wy6DPo] どーせ瑣末な文法で躓くんだから、c++使い続けたらいいのに
396 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:51:30.46 ID:bTGozmC4] >>392 ( ̄Д ̄)ノ オウッ すまんの試す環境がないから さっき聞いたスペースが入るトコはどこでも改行できるって話を元に考えただけだし IDEでのフォーマットはない前提な 型の名前が間違ってるのは愛嬌で許してくれよ >>393 型との間の:は空白を許さないの?それとも型とコロンの間の空白はきっちゃダメ? 後、letで代入する値が変数じゃなくてリテラルの場合は常にtrueだから もしかしたら怒られる?それとも単に最適化でtrueに変換されるだけかな? 試したい……
397 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:55:14.22 ID:fhxWm8Xr] >>396 IDEのフォーマットが無い前提って、インデント無しのコードを読めってこと? そんなの問題外じゃない? あと、letがBooleanを返す?って他でも書いてる人がいるから調べてるんだけど、 どこかのドキュメントに書いてある?
398 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 19:58:17.00 ID:/lL990/k] if let a = b { } って書き方できるから勘違いしてるんだろう letがBool返すわけではない
399 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:11:52.36 ID:bTGozmC4] とりあえず実物触るまでは全て杞憂らしいことが何となく納得。 if let a = b は The Swift programming languageの頭の方のControl Flowの節で出てて ↓ “If the optional value is nil, the conditional is false and the code in braces is skipped.” 抜粋:: Apple Inc. “The Swift Programming Language”。 iBooks. https://itun.es/jp/jEUH0.l ってなってるから、condition is "false" って値が取れると思ってた。ってか、取れないんだ? 複数の値のnil値判断を&&で出来ると思ってた。
400 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:25:51.95 ID:Ss1X6IjI] var i: Int? = 10 if i { println("i = \(i)") } はオッケー var i: Int = 10 if i { println("i = \(i)") } はアウト〜
401 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:35:36.13 ID:bTGozmC4] >>400 つまり?のついている値が"optional"ってマークされてるものの値を評価してるわけだ。 letの返値じゃなくて、代入された値を評価してる、と。 "optional"な値の場合は、nilはfalse、nil以外がtrueとして評価される、と? "optional"じゃない場合は、条件式で利用できない……か。
402 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:48:52.91 ID:q+iSb4xf] Swiftってアップル製品の環境でしか動かないの?
403 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:50:04.79 ID:N9ZszDAJ] MSがWindowsで動くようにしたらAppleはいつものようにすぐ訴えるし。
404 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:53:59.72 ID:DVEEJUDF] 記念カキコ
405 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:57:26.27 ID:D2wOjwoR] クラス内の変数は全部パブリックになってしまうん?
406 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 21:07:17.88 ID:23MIBYyX] >>397 let a=b のb が値を持つかどうかの判定でBooleanを返すと有るね。 The Basics の Optional Binding You use optional binding to find out whether an optional contains a value if let constantName = someOptional { 元々 if a=b をエラーにするから、代入兼判定としてletを使うようにしたと言う事だろうけど。
407 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 21:20:07.46 ID:Ss1X6IjI] 憶測が多いな 別にletじゃなくてvarでもいいんだけど var a: Int? = 10 if var b = a { println("b = \(b)") }
408 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 21:51:22.48 ID:qTkh2drY] swiftのarrayってlet&unshareで使うのがいいのかな?? appendした後の挙動がバグ臭プンプンする。
409 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:04:27.80 ID:bTGozmC4] >>407 大事なのは Int? の ? だと思うんだが。?のついている型だけが代入時のnil判定に使えるということじゃないの? >>408 後ろはNSMutableArrayじゃなさそう?
410 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:08:28.49 ID:ZaCMtfJy] C++のboost::optionalよりよさげ?
411 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:23:42.09 ID:qTkh2drY] >409 “Assignment and Copy Behavior for Arrays”を読んで欲しいんだけど、 var listA = [1,2,3] var listB = listA listB[0] = 9 ってするとlistA[0]も9になってる。 まぁこれは普通だよね。 だけどこのあと listA.append(4) って要素数が変わる操作をしたら listA[1] = 22 ってしても listB[1] は2のまま。 分かっててもミスりそう。
412 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:32:28.70 ID:bTGozmC4] >>411 これはトラップ過ぎるwwww funcに引数で渡されてきたArrayはどういう扱いなんだろう? 要素追加した瞬間にcopyされて別物か?
413 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:33:26.53 ID:Ss1X6IjI] >>411 ディクショナリだとまた挙動が違うんだよな var dictA = [0:1, 1:2, 2:3] var dictB = dictA dictA[0] = 9 ってやると、dictA[0]は9になるけど、dictB[0]は1のまま
414 名前:デフォルトの名無しさん [2014/06/05(木) 22:39:53.87 ID:O/ymbC/3] Optionalの説明はココが分かり易かった blog.livedoor.jp/rapple_lab/archives/7720544.html
415 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:42:40.01 ID:qTkh2drY] >>413 arrayもdictionaryもstructureなんだからdictionaryの動作が正しいよね。きっと。 arrayのはパフォーマンス上げるためなんだろけどunshareを標準にして欲しい。 >>412 >要素追加した瞬間にcopyされて別物か? 明日試してみるよ
416 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:53:48.76 ID:ZqenSHM0] javaのプリミティブが嫌いだったんだけど swiftは無い?
417 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:54:26.94 ID:ZaCMtfJy] arrayの特別扱いってなんかPHP臭がするんですけど。。。
418 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:54:34.73 ID:qTkh2drY] あとarrayをループさせる時はfor - in より for var i = 0;i < array.count;++ でループさせて array[i] で参照したほうが20%ほど早かった。 この辺もobjective-cと違うよね。
419 名前:デフォルトの名無しさん [2014/06/05(木) 23:02:45.98 ID:sbVpP/3M] うーん var array1 = [1,5,7,4] var array2 = sort(array1, >) この時、array1までもソートされる破壊的な操作なんだけど、 sort(&array1, >) って呼ぶのを強制された方がしっくりくるのだが。
420 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:06:47.17 ID:wJ9V7wb/] やっぱり*は必要だったのだ
421 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:07:49.74 ID:qTkh2drY] >>420 同意!!
422 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:10:47.70 ID:DedpSM9H] 最近の言語ってセミコロンや括弧を無くすことに躍起だけど 文法にambiguousな部分が出てきたりしないのだろうか。
423 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:12:19.01 ID:ZqenSHM0] >>422 よくわかりません、どゆこと?
424 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:15:46.09 ID:Ss1X6IjI] とりあえず、配列にはcopy()とunshare()があることを意識しといた方かよさそう あと関数の引数に配列を渡して操作するきは、inout付きにした方がいいのかな
425 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:15:46.59 ID:XqFykZgR] >>419 破壊されたくなければ、明示的に var array2 = sort(array1.copy(), >) しろって方針なんだろうな。コスト削減のために
426 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:18:00.24 ID:XqFykZgR] でも関数の引数が自動的にコピーとなるような指示詞が欲しいな
427 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:21:06.13 ID:Ss1X6IjI] var array1 = [1,5,7,4] var array2 = array1.copy() array2.sort(>) 若しくは、 var array1 = [1,5,7,4] var array2 = array1 array1.unshare() array2.sort(>) とか
428 名前:デフォルトの名無しさん [2014/06/05(木) 23:27:16.58 ID:ABWTHSvc] てか、破壊されるなら戻り値でArray戻さないでよ、紛らわしい 仮にも標準関数なのに
429 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:27:27.26 ID:lzzD+Ao8] そういうもんだと割り切りゃいいか Effective本的なのが欲しいね。細部の落とし穴が存在しない言語なんて求めるだけ酷だろし
430 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:28:15.04 ID:XqFykZgR] func foo(var a : Int[]) { a.unshare() ...//いろいろな処理 } こうすればいいのか。 ちなみに引数のところから var を抜くとエラーになる。
431 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:45:56.24 ID:XqFykZgR] let listA : Int[] = [1,2,3,4,5,6,7] let listB : Int[] = listA.filter({$0 % 2 == 0}) let listC = filter(listA,{$0 % 2 == 0}) listB は普通の新しい配列なのに、listC は遅延リストなのが面白いな
432 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 23:51:31.90 ID:Ss1X6IjI] 配列みたいなコピーコストの高いやつはデフォルト同じやつ参照でいいんだが ディクショナリは代入した時点でコピーしちゃうみたなんで、おいそれと代入しにくいな 配列よりむしろディクショナリの挙動の方が気になる
433 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:29:37.83 ID:GafzTiNN] Swiftの仕様をまだ全部は見切れてないけど、クラスのSubscripts化とか、Property observer みたいにちょっと新鮮かなと感じる特徴もあるけどね
434 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:35:14.23 ID:lrmBy0jf] subscript って何かと思ったら、C++ の operator[] のオーバーロードみたいなもんかな
435 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:44:38.91 ID:RYqBXsRp] 演算子のオーバーロードできんの? これで他人が読めないコードが書けるな。
436 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:47:05.88 ID:GafzTiNN] でける
437 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:55:20.98 ID:xKXbmGps] 絵文字でな
438 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:59:06.51 ID:0NzWvF7l] たとえばこれがHaskellみたいにどうしてもそういうシンタックスが必要だ、と いうことで新言語作るのならいいけど、新しい言語作りたい病の人が大して意味もない のに既存の言語を適当に交ぜたみたいな新言語作ったら、まあいい加減にしてくれよ、 と思うのが普通でしょ。 Appleの場合なまじプラットフォームとしては力があるから、「これでやります」と 言われたら従うしかない。 いろんな人が迷惑する。それだけにしか使い道のない言語に脳細胞使われちゃうわけで。
439 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 01:16:10.65 ID:xKXbmGps] >>438 選択肢が増えただけだが。 頭悪いな、君は
440 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 01:17:41.85 ID:cHkwjIcW] >>438 まずobj-cが古臭く冗長で無理がきてる、という問題に向き合った成果じゃないの とりあえずの所でいうと、obj-cだって事実上Apple製品以外で使われとらんし obj-cもうちょいどうにかならんのか、というのはユーザサイドから腐るほど言われてた言葉だしなあ それだけにしか使いどころがないダサい言語が、とりあえず使いどころは変わってないけどフレッシュになりました、ってことでしょ
441 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 01:22:28.17 ID:Ynv3Q/53] >>438 ぱっと見た感じ他の言語の寄せ集めだから別に覚える事なんてほとんどないわけだが。
442 名前:デフォルトの名無しさん [2014/06/06(金) 01:24:17.01 ID:M36FOYua] 誰か、Objective-C擁護派は居ないのか? Swift登場以前は居たんだろ?
443 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 01:34:54.40 ID:bHnhPL3c] SwiftでCoreFoundationやQuartzの関数は呼べますか? 例えばCGContextRef を取得して操作したりとかできるんでしょうか?
444 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 01:46:40.68 ID:lrmBy0jf] >>443 このスレを CG で検索してみろ
445 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 02:00:09.31 ID:bHnhPL3c] 出来るもんだな (´∀`)
446 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 02:27:42.23 ID:cHkwjIcW] >>442 や、より簡単な形でとりあえずobj-cで出来ることがだいたい出来るようになってる訳だし相反するものでもないんでないかな smalltalk信奉者なんかで、かつ概念的な語りが好きな方々が一定数残ると思うけどね 皮肉でなく、昔語りをする人は必要だ
447 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 02:34:14.55 ID:QTGzN/i9] 何かgoとかtypescriptが出た時より騒がれてるけど、何が凄いの?
448 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 02:40:41.45 ID:cHkwjIcW] >>447 obj-cランタイム互換でしょ うざがられてたけど仕方ないと思われてた古めかしい設計のobj-cを苦もなく差し替えられる あとc互換っぷりも個人的にはビビってる 低レイヤでなんか色々捗りそう
449 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 02:51:42.76 ID:rzjQXmlP] いまごろランタイムも書き直し中なのかなあ。 AndroidをGoにするのは難しいから またAndroidはもっさりって言われちゃうな
450 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 03:00:34.92 ID:30cQq14w] 今はSwiftScriptかSwiftTalkを開発中
451 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 06:06:55.21 ID:kAncoGTb] >>447 GoなんてGoogle社員が暇な時間に作ってみましたってだけで 別にChromeの中核スクリプトに採用する為のものでもなんでもないからな メンツがメンツだけに一時期注目されたけどあれでも騒がれすぎだった
452 名前:デフォルトの名無しさん [2014/06/06(金) 06:14:19.62 ID:VdkUhq2q] >>451 ↑こいつ知ったかで良くここまで自信まんまんに恥晒せるな すごいわ
453 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 07:38:18.52 ID:1jHAJD54] >>407 varでもよかったんだ ところでbの型ってOptional(型!)だったらりする? >>415 推測だけどGo-langのスライスみたいにArrayはあくまでラッパーで本体は別に存在するんじゃない だから代入した場合本体の参照のみコピーされるのではないかと unshareの機構も合点がいくし >>447 発表した時点で”使える”言語だからじゃないの? あと注目度の高いWWDCの基調講演で発表されたというインパクトもあるかもね
454 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 07:59:08.42 ID:Wfg//q6J] ObjC冗長だって言うけど、Swiftになったら結局コメント書かなきゃいけなくなる予感 ObjCはappleDocコメントとメソッド名で機能は殆んどつたわるからな つかAppleDocとかCocoaPodsとかSwiftに移行するのかな
455 名前:デフォルトの名無しさん [2014/06/06(金) 08:02:22.50 ID:s5X4N2N/] >>453 >>>407 >varでもよかったんだ >ところでbの型ってOptional(型!)だったらりする? bはOptionalにならない。必ず値が入るから。 b = a! と同じ
456 名前:デフォルトの名無しさん [2014/06/06(金) 08:14:54.58 ID:s5X4N2N/] どうでもいいけど var a:Bool? var b = !a! みたいな書き方も出来るのな。 まぁ否定演算子と間違える奴は居ないか
457 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 08:23:58.96 ID:dQ9iK7KV] >>438 Swiftレベルの文法で脳細胞使ってんなよ 初見で書けるだろこんなの
458 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 08:26:07.34 ID:XasNKctc] >>451 実績がないのは事実 と思っていたがdocckerでgo始まったと思ったわ
459 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 08:30:57.55 ID:LzbjDMik] >>457 いつまでもマルチコピペ野郎に反応すんなks
460 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 08:57:10.26 ID:DTdJKogB] Boys, be ambiguous!
461 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 09:32:25.44 ID:NbZ9JiJc] >>446 より簡単に書けるからこそ、後でみてわからなくなりそう array[index] [array objectAtIndex:index] 事前知識なしで意味がとりやすいのは後者
462 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 09:45:58.53 ID:j3uepfFp] >>450 SwiftScript は絶対に出てきそう。 Swiftインタプリタと実現性はどっこいどっこい。 AppleScriptを置き換えてあらゆるものを統一言語で処理する。
463 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 09:46:48.62 ID:+4efFwAW] COBOLの場合 ADD A B GIVING C C = A + B 事前知識なしで意味がとりやすいのは後者 こうですか!? わかりません><
464 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 09:48:04.30 ID:+4efFwAW] あれ、前後まちがえた...
465 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 10:14:11.16 ID:bHnhPL3c] Swiftは関数の引数にラベルを書けるから可読性が落ちることはないと思う。 まぁどっちの場合もプログラマの命名センスに依存するけど 今手元に実行環境ないから確認できなけど、Arrayにも valueAtIndex的なメソッドあるんじゃないかな
466 名前:デフォルトの名無しさん [2014/06/06(金) 10:14:32.43 ID:ueXkqxBK] Objective-Cはオブジェクト指向入門としては分かり易いけど、オブジェクト指向に慣れてくるとモダンオブジェクト指向言語の方が書きやすいんだよなぁ
467 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 10:22:04.34 ID:y58jmSWV] >>432 いやDictionaryの方は素直じゃねえか? 参照だけするなら新しいオブジェクトを増やさない。CopyOnWriteって思想でしょ。 Arrayは中身だけ書き換えるソートみたいな処理があるから、中身変えただけじゃコピーされないように したんじゃねえの? でも中身を書き換えてもコピーされないような特殊メソッドを用意してやったほうが良かった気がするんだよなぁ。 >>461 いやいや、[対象 操作:引数]って構文がノーマルCからかけ離れてるから、一概には…… 30年前くらいにパソコンを始めるとまず学習するBASICでも配列はA(4)みたいにアクセスしてたし。
468 名前:デフォルトの名無しさん [2014/06/06(金) 10:24:52.84 ID:IcDjZ6AK] オブジェクト指向は愚かな考え。 peace.2ch.net/test/read.cgi/tech/1393660194/
469 名前:デフォルトの名無しさん [2014/06/06(金) 10:33:51.88 ID:VHSXa0o7] >>468 人間クラス継承して美少女クラス作るとか言ってる時点でオブジェクト指向理解できてない。 美少女クラス作るなら二次元人クラス継承するに決まってんだろ
470 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 10:50:52.82 ID:N1a6rny2] たとえば postBlog("眠い") だと確実に混乱する postBlog(title: "眠い") とみんな書いてくれるだろうか 半強制的に [self postBlogWithTitle:@"眠い" withBody:nil] とかなっていた方が読みやすいのは私だけか selfとか主語も明示されているし qiita.com/nori0620/items/cf956fea84e82ec2aee5#2-10 ※例示しただけで元記事を否定する意図はありません
471 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 10:53:33.80 ID:lrmBy0jf] >>470 [self postBlog:@"眠い" with:nil] だと確実に混乱する [self postBlogWithTitle:@"眠い" withBody:nil] とみんな書いてくれるだろうか
472 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 10:53:44.46 ID:BvDrvDh3] Swiftってラピュタに出てくるやつかな
473 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 10:57:06.27 ID:DTdJKogB] www.moonmile.net/blog/archives/3580 _name 参照してないから詐欺だよな
474 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 11:00:07.92 ID:N1a6rny2] >>471 オブジェクティブCのいいところって、 下のようなメソッド名に無意識のうちに誘導されるところだと思っていたんだけど、上のような書き方をする人も結構いるんですかね
475 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 11:02:40.60 ID:lrmBy0jf] >>474 470みたいなこと心配してる辺り、お前とお前の周囲はよっぽど低レベルなプログラマばかりだと思ったが
476 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 11:04:41.80 ID:cj6UOPoT] postBlogWithTitle: body: こうだべ
477 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 11:08:44.12 ID:UcUEUerQ] 新人とか派遣がしょっちゅう入れ替わりで入ってくるんだろw
478 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 11:31:18.80 ID:dQ9iK7KV] >>470 もうSwift使うのやめなよ
479 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 11:45:21.84 ID:y58jmSWV] >>474 少なくともAppleの出してるガイドライン的にはしたの書き方になる 上の書き方は悪い例としてあげられている その良いところって、ObjectiveCの、というよりライブラリの出来じゃ?
480 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 11:47:59.73 ID:Tyg3LYFk] そんなに悪いこと言ってるとは思わんけどね でも気をつけないと行けないのはAPI作る側で、利用する側じゃないんだよな func postBlog(title: String) {} だと postBlog("漏らした") としか書けない postBlog(title: "漏らした") と書けるためには func postBlog(#title: String) {} と定義しないと行けない デフォルトと逆にしてほしいね デフォルトでラベル付きで、#付けたらラベル無しがいい しかも、何故かイニシャライザはデフォルトでラベル付きになる class Blog { init(title: String) {} } って書くだけでラベル付きになる let entry = Blog(title: "漏らした") メソッドとイニシャライザでデフォルトが逆で紛らわしい
481 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 11:53:15.28 ID:WrtGDpxm] イニシャライザはObjC側に持ってくとinitWithが補完されるから...とかそういうのが絡んでるのでは
482 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 12:09:31.02 ID:1jHAJD54] 配列添字演算子[]よりObjective-Cのメッセージ式で使う[]の方が よっぽど意味不明だと思うけど >>455 >bはOptionalにならない。必ず値が入るから。 やっぱそうなるのね bにnil再代入出来たらOptional Bindingの意味ないじゃんって思ってたからちょっと気になって >>480 それなら関数名postBlogWithTitle()すればいいんじゃないの?
483 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 12:15:42.34 ID:WrtGDpxm] []はプリプロセッサの名残だからねえ
484 名前:デフォルトの名無しさん [2014/06/06(金) 12:39:11.46 ID:TaxzDts5] 今からXcode新しいの入れようと思うんだけど swiftで作ったアプリはiOS7ターゲットのアプリとしてもうリリースできるの?
485 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 12:53:56.04 ID:WrtGDpxm] SSEとかintrinsicsを使う方法はあるのだろうか
486 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 12:57:56.85 ID:Tyg3LYFk] >>482 >それなら関数名postBlogWithTitle()すればいいんじゃないの? 面倒くさいから1引数で例示してるけど、ラベル付き引数が真価を発揮するのは多引数のときなんで多引数で脳内変換して呼んでくれ func fill(#red: Int, #green: Int, #blue: Int) {} func fill(#hue: Int, #saturation: Int, #lightness: Int) {} と定義して fill(red: 20, green: 30, blue: 40) と呼ぶか func fillRGB(red: Int, green: Int, blue: Int) {} func fillHSL(hue: Int, saturation: Int, lightness: Int) {} と定義して fillRGB(10, 20, 30) と呼ぶか 俺は圧倒的に前者の方がいい ちなみに、うっかり func flll(red: Int, green: Int, blue: Int) { println("RGB") } func fill(hue: Int, saturation: Int, lightness: Int) { println("HSL") } なんて定義すると、一つ目の fill が二つ目の fill で上書きされて、 fill(20, 30, 40) で常に二つ目の HSL の方しか呼び出されないみたい コンパイラも何も注意してくれない… こういううっかりミスをなくすためにもデフォルトでラベル付きにして どうしてもラベル付けたくないときだけ # 付けてラベル無しに出来る仕様の方がいいと思うんだ