1 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 04:12:21.08 ID:rEEU5ykv] WWDC2014で発表されたAppleの新言語Swiftについて語りましょう https://developer.apple.com/swift/
341 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 13:01:33.97 ID:/lL990/k] 日本のプログラミング教育はSwiftでいいんじゃね 世界でiPhoneシェア一番高い国だし
342 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 13:04:11.37 ID:ICYd1xse] togetter.com/li/675599 >Swiftの関数はHaskell風。これはいい。マシン語が透けて見える。CPUの歓声が聞こえてきそうだ
343 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 13:07:28.65 ID:23MIBYyX] Appleの新プログラミング言語、Swiftを使って半日くらいでFlappy Birdのクローンが書けた jp.techcrunch.com/2014/06/05/20140604a-developer-cloned-flappy-bird-using-apples-new-programming-language-swift-in-a-matter-of-hours/ 以前の開発言語、Objective-Cに比べて、Swiftに新たに備えられた高度な機能がデベロッパーの生産性を大きく向上させるだろうという予測が実証されたかたちだ。 Murrayは実際に使ってみて「新しくiOSアプリの開発に取り組むプログラマーに対してハードルを下げる「というAppleの目標は達成されたと考えている。 Murrayによれば、Swiftの大きなメリットの一つはPlaygroundsと呼ばれる機能だという。 ここではコードを編集しながら、それが実際にどう動作するかをリアルタイムで見ることができる。 「4時間よりはかかったが9時間まではかかっていない。ログによると空のフォルダーからデモが作動するようになるまで9時間近くかかっているが、その間に食事もしたし、子供を寝かしつけたりしていたのでね」と語った。 ソースコード https://github.com/fullstackio/FlappySwift
344 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 13:11:20.47 ID:fhxWm8Xr] >>343 まだシンタックスハイライト対応してないのかwがんばれGithubちゃんw
345 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 13:41:38.15 ID:5c6Sl3cl] 多分constじゃないのはletが代入の可否を返す式だからだと思うよ if let it = go {it.foo()}(実質「goがnilじゃない場合foo()を実行」と同義) みたいな使い方するみたいだし >>267 言語的に特別扱いしないでC言語周りが使えるのは何気に凄いな
346 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 14:00:04.98 ID:epSx9FaU] ifの比較と代入間違える凡ミスをなくすための let強制だとしたらいくらなんでもやり過ぎだな
347 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 14:01:03.50 ID:fhxWm8Xr] >>345 letが値を返す式というわけじゃ無いと思うが自分は確かめるすべが無い Language Reference見る限りifの次に式か宣言の両方が書けるということになってる let 〜は宣言で、宣言は式じゃないから let a = let b = 0 みたいには書けないんじゃないかな?
348 名前:デフォルトの名無しさん [2014/06/05(木) 15:40:25.97 ID:MTRKCqc9] オブジェクト指向は愚かな考え。 peace.2ch.net/test/read.cgi/tech/1393660194/
349 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 15:41:28.90 ID:N9ZszDAJ] 要するにいろいろパクってみたが、 何のための言語がよく分らないものができたってかんじか。 >非常に軽快に動くことが特徴であり、 特徴でもなんでもないし。
350 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 15:48:43.38 ID:23MIBYyX] >>349 どこが?
351 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 15:53:18.65 ID:bTGozmC4] 4月にDevProgram切れたの放置してたけどSwiftだけやってみてえ……7800円払うのは負けだよなぁ……
352 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 15:59:18.60 ID:N9ZszDAJ] >>350 おまのレスを読んでもガッカリ感しか感じない。 JavaやC#を超える衝撃的な「何か」はないのか?
353 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:04:29.96 ID:/lL990/k] つ 驚き最小の原則
354 名前:デフォルトの名無しさん [2014/06/05(木) 16:14:34.40 ID:VmoRAZhY] パラダイムを変革するとか新しい考え方を導入するとか考えてないと思う。 OSXやiOSで開発する上で必要なものや便利なものをまとめ上げた言語だと思う。 考え方としてはDSLにちかいんじゃないかな。
355 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:17:17.84 ID:XqFykZgR] Cの関数を簡単に呼べるのが凄いわ
356 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:19:40.60 ID:7wqllzhY] つまり30~40年後に Swift 老害としてCOBOLerのような地歩を固めるのだ
357 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:19:51.45 ID:N9ZszDAJ] むしろ呼び出したくないだろ。 コードにCのprintfが混ざってるなんて勘弁してくれ。
358 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:22:50.06 ID:EQvmYwTS] Cのライブラリを利用できるんだぜ
359 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:25:17.28 ID:X78aNysa] なんかprintfとかfprintfはどうやっても呼べないんだよね あれって実体がマクロだったりしたっけ
360 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:30:26.15 ID:sui12ysr] 利点はわりとフツーの字面で iナンタラの開発ができるということに尽きるのではなかろうか objective-cなんか使わされるよりははるかにましな気が
361 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:32:44.37 ID:EQvmYwTS] >>359 可変長引数だめなんか
362 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:39:16.44 ID:N9ZszDAJ] ObjectiveCなんか使わずに初めからC++採用してればよかったんだよ。
363 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 16:48:43.10 ID:X78aNysa] >>361 NSLogは使えるんだよねえ
364 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:00:29.40 ID:ssQRlflZ] xcode6だけ早いとこ正規リリースしてAppStoreにあげてくれないかな iOS8向けの開発をSwiftでやりたいがベータ版の開発環境は使いたくない
365 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:03:54.12 ID:sui12ysr] セミコロン省略可はいいね この銀河系に存在する全言語で採用して欲しい
366 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:15:14.85 ID:2XZ0moAz] 隣の銀河系のことも考えてやれ
367 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:20:36.18 ID:bTGozmC4] >>365 そうなると逆に複数行にわたって1つのstatementを書きたい時はどうなるんだ? シェルみたいにバックスラッシュで連結かなあ? semicolon省略に関する記述と、1行に複数statementの時はsemicolon要るって記述は見つけたんだが……
368 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:23:07.17 ID:7wqllzhY] 省略可じゃなくて禁止にすべき >>343 とかまだらに残ってて笑った
369 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:24:53.47 ID:U2o1cB0T] >>367 試したところスペースが入りうるところでは任意に改行できるみたい 改行前のバックスラッシュはエラー
370 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:26:49.78 ID:bTGozmC4] >>369 それ、構文的にstatementの終わりかどうかを判別できてるってことだよね? だったら、1行に複数statement入れた時も、判別できるからsemicolon不要だと思うんだが……
371 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:28:38.98 ID:D0EgXF03] どんだけ読みにくいソース書きたいんだよ!
372 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:29:14.79 ID:U2o1cB0T] >>367 consecutive statements on a line must be separated by ';' というエラーが出るから、構文の区切りは判断してるけど可読性のためにセミコロンを明示的に入れよ というルールにしていると思われる
373 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:36:11.09 ID:3dO8/iia] Swiftってメソッド名を取得するようなプリティーなファンクションある?
374 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:36:25.69 ID:bTGozmC4] >>372 それなら、複数行のstatementがどこで終わるかわかりにくいから 可読性のためにsemicolonを入れて欲しいよ…… 何か気持ち悪いなぁ
375 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:46:41.07 ID:XqFykZgR] >>374 セミコロン入れたいのなら自分で書けば良いだけだろ 変なこと行ってるぞお前
376 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:00:43.18 ID:hxrPvcfi] >>362 OS X が BeOS だったらそうなっただろうね。NeXT になったから ObjC。 NeXT は Apple から追い出されたジョブスが Machintosh の有力開発環境だった Smalltalk に親しんでいたから inline Smalltalk を書ける ObjC。 そういう歴史。 >>372 これも Smalltalk からの歴史。Smalltalk ではコロンでは無くて . だけど。 ちなみにどっかの論文で、BASIC や Smalltalk のようなセパレータタイプよりも、C のターミネータタイプの方が学習が容易で間違いが少ないという実験があった。
377 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:01:35.29 ID:Ss1X6IjI] 例えばこんなワンライナーで var a = rand() var b, c: Int? b = a % 20 > 10 ? 10 : 20 c = a > 10 ? b : b! + 20 ぱっと見で瞬時にセンテンスの区切りが分かるならセミコロンはいらんだろうな
378 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:08:39.95 ID:bTGozmC4] >>375 いやいや、必須になってるのと任意になっているのでは「他人のコードを読む」ときの 可読性が違うから気にしてんだよ。自分のコードなら入れるって。 1行に複数statementの時は「必須」だから文の切れ目がわかるけど 複数行に1statementの時は「任意」っぽい(?)からわかりにくく「書ける」ってこと。
379 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:15:14.57 ID:Ss1X6IjI] 複数行に1statementの時に終わりが分かりにくいってことはないと思うぞ そんなに分かりにくかったら空行なりいれればいいわけだし
380 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:22:25.93 ID:bTGozmC4] >>379 だから、自分で書くんだったら注意するって。 実際に見てみたらわかりにくくないってことないのかなぁ? まぁ、当面はXcodeしかコーディング環境がないからXcodeが上手いこと見せてくれれば問題ないか
381 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:36:08.42 ID:fhxWm8Xr] >>380 複数ステートメント1行セミコロン無しでわかり難い例は>>377 にレスしてくれてるんだから、 1ステートメント複数行でわかり難い例ってのを具体的に書いてみたら?
382 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:44:38.48 ID:U2o1cB0T] Swiftはlongがない代わりにintの長さがマシン依存だからいやんなことになりそう
383 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:52:06.49 ID:fhxWm8Xr] 長さに依存するような整数はInt64とかInt32みたいに書けばいいんじゃないか?
384 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:55:52.22 ID:k17DeP1N] そういやMacはもう64bit環境しかないな。 iOSの方は5sのみ64bitで後は移行中だけど
385 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:56:05.34 ID:U2o1cB0T] OSXのC処理系はILP32 or LP64だから、何となく
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 ぱっと見た感じ他の言語の寄せ集めだから別に覚える事なんてほとんどないわけだが。