[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/15 14:01 / Filesize : 227 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Swiftスレ



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
同意!!






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<227KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef