1 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 04:12:21.08 ID:rEEU5ykv] WWDC2014で発表されたAppleの新言語Swiftについて語りましょう https://developer.apple.com/swift/
321 名前:デフォルトの名無しさん [2014/06/05(木) 04:40:05.58 ID:82BFuaye] もうアップルの頭の中は 中共>日本なんだな
322 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 04:46:04.60 ID:fa/xOZ3s] 昔はコンピュータに中国語や韓国語があると ウィルスに感染したか!?くらいのイメージだったもんだが、 いつの間にかプレゼンスを奪われましたね、日本。
323 名前:デフォルトの名無しさん [2014/06/05(木) 04:50:03.37 ID:Iunw+H6u] なぁ、なんでconstがletなんだ?
324 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 04:54:18.65 ID:ItySY5z9] これか 無線LANルーター更新でウイルス バッファロー www.chunichi.co.jp/s/article/2014060390170941.html パソコン周辺機器大手のバッファロー(名古屋市)がホームページで掲載していたプログラムが改ざんされ、 更新などのためにこれをダウンロードするとウイルスに感染する状態になっていた。 感染したままインターネットバンキングを利用すると、IDやパスワードが漏れる恐れがある。 同社によると、5月27日午前6時すぎからの約7時間にわたり、 同社の無線LANルーターや外付けハードディスクなどをパソコンで使用するために使う10のプログラムに、 ウイルスが混入していた。発覚後、サービスを停止したが、856件のダウンロードがあったという。 27日午前10時ごろ、利用者から「プログラムを実行したら、中国語のメッセージが表示された」という連絡があり、発覚した。 (後略)
325 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 04:57:52.99 ID:8eoXOyJj] >>323 rustの影響かな?
326 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 06:58:50.41 ID:mQa+SLGK] C++そのまま呼び出せんのかな? いつもOS依存箇所だけはObj-Cで書いて、それ以外はC++でコーディングしてた
327 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 07:18:35.52 ID:XqFykZgR] >>326 C++は流石に無理。CかObj-Cでラップしないと
328 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 07:28:04.45 ID:pksLVqXr] letとか分かりにくいな。constとかfinalはfixがいい
329 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 07:30:14.84 ID:OarRmHyJ] let は恥ずかしくて使えないな
330 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 07:52:58.14 ID:XFIZn5Ul] >>326 受口をextern "C"しておけばそのまま呼び出せるでしょ。 今までもObjective-C++として使ってなかったのなら、そうしてたはず。
331 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 08:01:26.50 ID:OarRmHyJ] 中江有里
332 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 08:51:39.10 ID:BcBKMn/M] let s = 'go'
333 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 08:55:02.24 ID:v0mN5gE+] let it = 'go'
334 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 08:59:59.18 ID:23MIBYyX] >>278 まさにコンピュータ教育を意識して作ったらしい。 Apple's top secret Swift language grew from work to sustain Objective C, which it now aims to replace appleinsider.com/articles/14/06/04/apples-top-secret-swift-language-grew-from-work-to-sustain-objective-c-which-it-now-aims-to-replace Swift の考案者は、LLVM創設者の Chris Lattner だそうだ。 documentation guru と同様に compiler optimization ninja と言う言葉が使われてるのは面白い。 それと dogfooding group (テストグループ)とか、いつも内部で使ってるんだろうな。 すごく面白いから一読を勧める。 特に Swift's Interactive Playgrounds & REPL "I hope that by making programming more approachable and fun, we'll appeal to the next generation of programmers and to help redefine how Computer Science is taught," Lattner stated. Apple notes that the REPL debugging console in Xcode "includes an interactive version of the Swift language built right in. Use Swift syntax to evaluate and interact with your running app, or write new code to see how it works in a script-like environment."
335 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 09:20:29.95 ID:XW7Omk0c] >280 ドキュメントのソース部分以外ほとんど見てないから想像だが export で指定したものが他のモジュールから見えるのだと思われる デフォルトが private で export で指定したものだけ public ? C言語や関数型の言語と同じような指定の仕方か 環境使える人詳しく教えて
336 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 09:28:26.87 ID:23MIBYyX] >>282 出来るだろ。 >>293 0 じゃなくて NULL と同じ >>323 >なぁ、なんでconstがletなんだ? let j = i と言う使い方も有り、必ずしも定数とは限らないから。 これ以降変化しないよと言う定義。
337 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 11:02:18.15 ID:oKmamV8t] let j = i って英語だとどういうニュアンスなんじゃろ
338 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 11:24:31.82 ID:fhxWm8Xr] 単純にiをjにするってニュアンスじゃないの? 直接的には、iがimmutableってニュアンスは無いと思うけど、 いまはimmutableな変数をなるべく使うべしって流れがあるからletにその役目を与えて、 mutableには別のvarって構文を用意したと Rustはimmutableもmutableもletで宣言するけどデフォルトはimmutableで、 mutableな変数を定義するときにはlet mutとかするねえ
339 名前:デフォルトの名無しさん [2014/06/05(木) 12:46:01.63 ID:VmoRAZhY] letは値や式に一時的に名前を付けるイメージじゃないかな。数学で言うところの〜と置く、みたいな。letって言葉を使ってるのはHaskellとかの関数型言語に合わせたんじゃないだろうか。 varはvariable=変数=変化するもので、容れ物や箱やメモリそのものみたいなイメージ。 mutableかimmutableかの違いだけにみえて、内部実装的にもかなり取り扱いが違うんじゃないかと予想。
340 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 13:01:00.00 ID:/748C5a2] letはBASICの代入文を思い出す
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 同意!!