トップページ⇒tech
1001コメント296KB

Swiftスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/06/03(火) 04:12:21.08ID:rEEU5ykv
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう
https://developer.apple.com/swift/
0362デフォルトの名無しさん2014/06/05(木) 16:39:16.44ID:N9ZszDAJ
ObjectiveCなんか使わずに初めからC++採用してればよかったんだよ。
0363デフォルトの名無しさん2014/06/05(木) 16:48:43.10ID:X78aNysa
>>361
NSLogは使えるんだよねえ
0364デフォルトの名無しさん2014/06/05(木) 17:00:29.40ID:ssQRlflZ
xcode6だけ早いとこ正規リリースしてAppStoreにあげてくれないかな
iOS8向けの開発をSwiftでやりたいがベータ版の開発環境は使いたくない
0365デフォルトの名無しさん2014/06/05(木) 17:03:54.12ID:sui12ysr
セミコロン省略可はいいね
この銀河系に存在する全言語で採用して欲しい
0366デフォルトの名無しさん2014/06/05(木) 17:15:14.85ID:2XZ0moAz
隣の銀河系のことも考えてやれ
0367デフォルトの名無しさん2014/06/05(木) 17:20:36.18ID:bTGozmC4
>>365
そうなると逆に複数行にわたって1つのstatementを書きたい時はどうなるんだ?
シェルみたいにバックスラッシュで連結かなあ?
semicolon省略に関する記述と、1行に複数statementの時はsemicolon要るって記述は見つけたんだが……
0368デフォルトの名無しさん2014/06/05(木) 17:23:07.17ID:7wqllzhY
省略可じゃなくて禁止にすべき
>>343 とかまだらに残ってて笑った
0369デフォルトの名無しさん2014/06/05(木) 17:24:53.47ID:U2o1cB0T
>>367
試したところスペースが入りうるところでは任意に改行できるみたい
改行前のバックスラッシュはエラー
0370デフォルトの名無しさん2014/06/05(木) 17:26:49.78ID:bTGozmC4
>>369
それ、構文的にstatementの終わりかどうかを判別できてるってことだよね?
だったら、1行に複数statement入れた時も、判別できるからsemicolon不要だと思うんだが……
0371デフォルトの名無しさん2014/06/05(木) 17:28:38.98ID:D0EgXF03
どんだけ読みにくいソース書きたいんだよ!
0372デフォルトの名無しさん2014/06/05(木) 17:29:14.79ID:U2o1cB0T
>>367
consecutive statements on a line must be separated by ';'
というエラーが出るから、構文の区切りは判断してるけど可読性のためにセミコロンを明示的に入れよ
というルールにしていると思われる
0373デフォルトの名無しさん2014/06/05(木) 17:36:11.09ID:3dO8/iia
Swiftってメソッド名を取得するようなプリティーなファンクションある?
0374デフォルトの名無しさん2014/06/05(木) 17:36:25.69ID:bTGozmC4
>>372
それなら、複数行のstatementがどこで終わるかわかりにくいから
可読性のためにsemicolonを入れて欲しいよ……
何か気持ち悪いなぁ
0375デフォルトの名無しさん2014/06/05(木) 17:46:41.07ID:XqFykZgR
>>374
セミコロン入れたいのなら自分で書けば良いだけだろ
変なこと行ってるぞお前
0376デフォルトの名無しさん2014/06/05(木) 18:00:43.18ID:hxrPvcfi
>>362
OS X が BeOS だったらそうなっただろうね。NeXT になったから ObjC。
NeXT は Apple から追い出されたジョブスが Machintosh の有力開発環境だった Smalltalk に親しんでいたから inline Smalltalk を書ける ObjC。
そういう歴史。

>>372
これも Smalltalk からの歴史。Smalltalk ではコロンでは無くて . だけど。
ちなみにどっかの論文で、BASIC や Smalltalk のようなセパレータタイプよりも、C のターミネータタイプの方が学習が容易で間違いが少ないという実験があった。
0377デフォルトの名無しさん2014/06/05(木) 18:01:35.29ID:Ss1X6IjI
例えばこんなワンライナーで

var a = rand() var b, c: Int? b = a % 20 > 10 ? 10 : 20 c = a > 10 ? b : b! + 20

ぱっと見で瞬時にセンテンスの区切りが分かるならセミコロンはいらんだろうな
0378デフォルトの名無しさん2014/06/05(木) 18:08:39.95ID:bTGozmC4
>>375
いやいや、必須になってるのと任意になっているのでは「他人のコードを読む」ときの
可読性が違うから気にしてんだよ。自分のコードなら入れるって。

1行に複数statementの時は「必須」だから文の切れ目がわかるけど
複数行に1statementの時は「任意」っぽい(?)からわかりにくく「書ける」ってこと。
0379デフォルトの名無しさん2014/06/05(木) 18:15:14.57ID:Ss1X6IjI
複数行に1statementの時に終わりが分かりにくいってことはないと思うぞ
そんなに分かりにくかったら空行なりいれればいいわけだし
0380デフォルトの名無しさん2014/06/05(木) 18:22:25.93ID:bTGozmC4
>>379
だから、自分で書くんだったら注意するって。
実際に見てみたらわかりにくくないってことないのかなぁ?
まぁ、当面はXcodeしかコーディング環境がないからXcodeが上手いこと見せてくれれば問題ないか
0381デフォルトの名無しさん2014/06/05(木) 18:36:08.42ID:fhxWm8Xr
>>380
複数ステートメント1行セミコロン無しでわかり難い例は>>377にレスしてくれてるんだから、
1ステートメント複数行でわかり難い例ってのを具体的に書いてみたら?
0382デフォルトの名無しさん2014/06/05(木) 18:44:38.48ID:U2o1cB0T
Swiftはlongがない代わりにintの長さがマシン依存だからいやんなことになりそう
0383デフォルトの名無しさん2014/06/05(木) 18:52:06.49ID:fhxWm8Xr
長さに依存するような整数はInt64とかInt32みたいに書けばいいんじゃないか?
0384デフォルトの名無しさん2014/06/05(木) 18:55:52.22ID:k17DeP1N
そういやMacはもう64bit環境しかないな。
iOSの方は5sのみ64bitで後は移行中だけど
0385デフォルトの名無しさん2014/06/05(木) 18:56:05.34ID:U2o1cB0T
OSXのC処理系はILP32 or LP64だから、何となく
0386デフォルトの名無しさん2014/06/05(木) 18:58:38.99ID:XqFykZgR
C書いてるときには、関数内で特定の処理の塊を { } で囲んでコメント付けたりしてたんだが、
こういうことを Swift では出来なくなったみたいだな。
{} がクロージャとして認識されるから。
0387デフォルトの名無しさん2014/06/05(木) 19:09:55.48ID:OzgJ1p8p
文末記号が無い言語は解析ルール次第で出来ることが変わるから信用できない
VB9なんかは多項式の途中で改行するとエラーになったりして救えなかった
0388デフォルトの名無しさん2014/06/05(木) 19:24:02.90ID:fhxWm8Xr
>>386
そういうのは関数内で関数定義して呼び出しちゃえばいいんじゃない?
コンパイルされるコードは最適化されちゃって変わんないと思うよ
0389デフォルトの名無しさん2014/06/05(木) 19:24:35.64ID:fhxWm8Xr
>>387
解析ルールは明示されてるよ
0390デフォルトの名無しさん2014/06/05(木) 19:25:14.43ID:bTGozmC4
>>381
こ、こんなのであってますか……言語仕様もいまいち分かってなくて
コンパイル通るかもわかんないけど……

var hogehoge = "hogehoge"
var a : Boolean = let b :
Integer = 0b11110000 && let
hogehog = "gehogeho"
0391デフォルトの名無しさん2014/06/05(木) 19:26:21.05ID:bTGozmC4
そもそも、IntegerもBooleanも違うかったわ
0392デフォルトの名無しさん2014/06/05(木) 19:34:00.01ID:XqFykZgR
お前、言語仕様も分かってないのにグダグダ言ってたのか
0393デフォルトの名無しさん2014/06/05(木) 19:39:35.40ID:/lL990/k
>>390
2行目の b と : の間で文法エラー
0394デフォルトの名無しさん2014/06/05(木) 19:40:36.38ID:fhxWm8Xr
>>390
なんかめちゃくちゃだと思うが、
式の途中で改行とかすれば次の行の先頭にインデントとか入るだろうから
行の初めが前の行から継続してるかどうかは自明になると思う
0395デフォルトの名無しさん2014/06/05(木) 19:49:48.50ID:18Wy6DPo
どーせ瑣末な文法で躓くんだから、c++使い続けたらいいのに
0396デフォルトの名無しさん2014/06/05(木) 19:51:30.46ID:bTGozmC4
>>392
( ̄Д ̄)ノ オウッ すまんの試す環境がないから
さっき聞いたスペースが入るトコはどこでも改行できるって話を元に考えただけだし
IDEでのフォーマットはない前提な
型の名前が間違ってるのは愛嬌で許してくれよ

>>393
型との間の:は空白を許さないの?それとも型とコロンの間の空白はきっちゃダメ?
後、letで代入する値が変数じゃなくてリテラルの場合は常にtrueだから
もしかしたら怒られる?それとも単に最適化でtrueに変換されるだけかな?

試したい……
0397デフォルトの名無しさん2014/06/05(木) 19:55:14.22ID:fhxWm8Xr
>>396
IDEのフォーマットが無い前提って、インデント無しのコードを読めってこと?
そんなの問題外じゃない?

あと、letがBooleanを返す?って他でも書いてる人がいるから調べてるんだけど、
どこかのドキュメントに書いてある?
0398デフォルトの名無しさん2014/06/05(木) 19:58:17.00ID:/lL990/k
if let a = b {
}

って書き方できるから勘違いしてるんだろう
letがBool返すわけではない
0399デフォルトの名無しさん2014/06/05(木) 20:11:52.36ID: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値判断を&&で出来ると思ってた。
0400デフォルトの名無しさん2014/06/05(木) 20:25:51.95ID:Ss1X6IjI
var i: Int? = 10
if i {
 println("i = \(i)")
}

はオッケー

var i: Int = 10
if i {
 println("i = \(i)")
}

はアウト〜
0401デフォルトの名無しさん2014/06/05(木) 20:35:36.13ID:bTGozmC4
>>400
つまり?のついている値が"optional"ってマークされてるものの値を評価してるわけだ。
letの返値じゃなくて、代入された値を評価してる、と。
"optional"な値の場合は、nilはfalse、nil以外がtrueとして評価される、と?
"optional"じゃない場合は、条件式で利用できない……か。
0402デフォルトの名無しさん2014/06/05(木) 20:48:52.91ID:q+iSb4xf
Swiftってアップル製品の環境でしか動かないの?
0403デフォルトの名無しさん2014/06/05(木) 20:50:04.79ID:N9ZszDAJ
MSがWindowsで動くようにしたらAppleはいつものようにすぐ訴えるし。
0404デフォルトの名無しさん2014/06/05(木) 20:53:59.72ID:DVEEJUDF
記念カキコ
0405デフォルトの名無しさん2014/06/05(木) 20:57:26.27ID:D2wOjwoR
クラス内の変数は全部パブリックになってしまうん?
0406デフォルトの名無しさん2014/06/05(木) 21:07:17.88ID: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を使うようにしたと言う事だろうけど。
0407デフォルトの名無しさん2014/06/05(木) 21:20:07.46ID:Ss1X6IjI
憶測が多いな
別にletじゃなくてvarでもいいんだけど

var a: Int? = 10
if var b = a {
println("b = \(b)")
}
0408デフォルトの名無しさん2014/06/05(木) 21:51:22.48ID:qTkh2drY
swiftのarrayってlet&unshareで使うのがいいのかな??
appendした後の挙動がバグ臭プンプンする。
0409デフォルトの名無しさん2014/06/05(木) 22:04:27.80ID:bTGozmC4
>>407
大事なのは Int? の ? だと思うんだが。?のついている型だけが代入時のnil判定に使えるということじゃないの?
>>408
後ろはNSMutableArrayじゃなさそう?
0410デフォルトの名無しさん2014/06/05(木) 22:08:28.49ID:ZaCMtfJy
C++のboost::optionalよりよさげ?
0411デフォルトの名無しさん2014/06/05(木) 22:23:42.09ID: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のまま。
分かっててもミスりそう。
0412デフォルトの名無しさん2014/06/05(木) 22:32:28.70ID:bTGozmC4
>>411
これはトラップ過ぎるwwww
funcに引数で渡されてきたArrayはどういう扱いなんだろう?
要素追加した瞬間にcopyされて別物か?
0413デフォルトの名無しさん2014/06/05(木) 22:33:26.53ID:Ss1X6IjI
>>411 ディクショナリだとまた挙動が違うんだよな

var dictA = [0:1, 1:2, 2:3]
var dictB = dictA
dictA[0] = 9

ってやると、dictA[0]は9になるけど、dictB[0]は1のまま
0414デフォルトの名無しさん2014/06/05(木) 22:39:53.87ID:O/ymbC/3
Optionalの説明はココが分かり易かった
http://blog.livedoor.jp/rapple_lab/archives/7720544.html
0415デフォルトの名無しさん2014/06/05(木) 22:42:40.01ID:qTkh2drY
>>413
arrayもdictionaryもstructureなんだからdictionaryの動作が正しいよね。きっと。
arrayのはパフォーマンス上げるためなんだろけどunshareを標準にして欲しい。

>>412
>要素追加した瞬間にcopyされて別物か?
明日試してみるよ
0416デフォルトの名無しさん2014/06/05(木) 22:53:48.76ID:ZqenSHM0
javaのプリミティブが嫌いだったんだけど
swiftは無い?
0417デフォルトの名無しさん2014/06/05(木) 22:54:26.94ID:ZaCMtfJy
arrayの特別扱いってなんかPHP臭がするんですけど。。。
0418デフォルトの名無しさん2014/06/05(木) 22:54:34.73ID:qTkh2drY
あとarrayをループさせる時はfor - in より for var i = 0;i < array.count;++
でループさせて array[i] で参照したほうが20%ほど早かった。
この辺もobjective-cと違うよね。
0419デフォルトの名無しさん2014/06/05(木) 23:02:45.98ID:sbVpP/3M
うーん

var array1 = [1,5,7,4]
var array2 = sort(array1, >)

この時、array1までもソートされる破壊的な操作なんだけど、

sort(&array1, >)
って呼ぶのを強制された方がしっくりくるのだが。
0420デフォルトの名無しさん2014/06/05(木) 23:06:47.17ID:wJ9V7wb/
やっぱり*は必要だったのだ
0421デフォルトの名無しさん2014/06/05(木) 23:07:49.74ID:qTkh2drY
>>420
同意!!
0422デフォルトの名無しさん2014/06/05(木) 23:10:47.70ID:DedpSM9H
最近の言語ってセミコロンや括弧を無くすことに躍起だけど
文法にambiguousな部分が出てきたりしないのだろうか。
0423デフォルトの名無しさん2014/06/05(木) 23:12:19.01ID:ZqenSHM0
>>422
よくわかりません、どゆこと?
0424デフォルトの名無しさん2014/06/05(木) 23:15:46.09ID:Ss1X6IjI
とりあえず、配列にはcopy()とunshare()があることを意識しといた方かよさそう
あと関数の引数に配列を渡して操作するきは、inout付きにした方がいいのかな
0425デフォルトの名無しさん2014/06/05(木) 23:15:46.59ID:XqFykZgR
>>419
破壊されたくなければ、明示的に
var array2 = sort(array1.copy(), >)
しろって方針なんだろうな。コスト削減のために
0426デフォルトの名無しさん2014/06/05(木) 23:18:00.24ID:XqFykZgR
でも関数の引数が自動的にコピーとなるような指示詞が欲しいな
0427デフォルトの名無しさん2014/06/05(木) 23:21:06.13ID: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(>)

とか
0428デフォルトの名無しさん2014/06/05(木) 23:27:16.58ID:ABWTHSvc
てか、破壊されるなら戻り値でArray戻さないでよ、紛らわしい
仮にも標準関数なのに
0429デフォルトの名無しさん2014/06/05(木) 23:27:27.26ID:lzzD+Ao8
そういうもんだと割り切りゃいいか
Effective本的なのが欲しいね。細部の落とし穴が存在しない言語なんて求めるだけ酷だろし
0430デフォルトの名無しさん2014/06/05(木) 23:28:15.04ID:XqFykZgR
func foo(var a : Int[]) {
a.unshare()
...//いろいろな処理
}
こうすればいいのか。

ちなみに引数のところから var を抜くとエラーになる。
0431デフォルトの名無しさん2014/06/05(木) 23:45:56.24ID: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 は遅延リストなのが面白いな
0432デフォルトの名無しさん2014/06/05(木) 23:51:31.90ID:Ss1X6IjI
配列みたいなコピーコストの高いやつはデフォルト同じやつ参照でいいんだが
ディクショナリは代入した時点でコピーしちゃうみたなんで、おいそれと代入しにくいな
配列よりむしろディクショナリの挙動の方が気になる
0433デフォルトの名無しさん2014/06/06(金) 00:29:37.83ID:GafzTiNN
Swiftの仕様をまだ全部は見切れてないけど、クラスのSubscripts化とか、Property observer みたいにちょっと新鮮かなと感じる特徴もあるけどね
0434デフォルトの名無しさん2014/06/06(金) 00:35:14.23ID:lrmBy0jf
subscript って何かと思ったら、C++ の operator[] のオーバーロードみたいなもんかな
0435デフォルトの名無しさん2014/06/06(金) 00:44:38.91ID:RYqBXsRp
演算子のオーバーロードできんの?
これで他人が読めないコードが書けるな。
0436デフォルトの名無しさん2014/06/06(金) 00:47:05.88ID:GafzTiNN
でける
0437デフォルトの名無しさん2014/06/06(金) 00:55:20.98ID:xKXbmGps
絵文字でな
0438デフォルトの名無しさん2014/06/06(金) 00:59:06.51ID:0NzWvF7l
たとえばこれがHaskellみたいにどうしてもそういうシンタックスが必要だ、と
いうことで新言語作るのならいいけど、新しい言語作りたい病の人が大して意味もない
のに既存の言語を適当に交ぜたみたいな新言語作ったら、まあいい加減にしてくれよ、
と思うのが普通でしょ。

Appleの場合なまじプラットフォームとしては力があるから、「これでやります」と
言われたら従うしかない。
いろんな人が迷惑する。それだけにしか使い道のない言語に脳細胞使われちゃうわけで。
0439デフォルトの名無しさん2014/06/06(金) 01:16:10.65ID:xKXbmGps
>>438
選択肢が増えただけだが。
頭悪いな、君は
0440デフォルトの名無しさん2014/06/06(金) 01:17:41.85ID:cHkwjIcW
>>438
まずobj-cが古臭く冗長で無理がきてる、という問題に向き合った成果じゃないの
とりあえずの所でいうと、obj-cだって事実上Apple製品以外で使われとらんし

obj-cもうちょいどうにかならんのか、というのはユーザサイドから腐るほど言われてた言葉だしなあ

それだけにしか使いどころがないダサい言語が、とりあえず使いどころは変わってないけどフレッシュになりました、ってことでしょ
0441デフォルトの名無しさん2014/06/06(金) 01:22:28.17ID:Ynv3Q/53
>>438
ぱっと見た感じ他の言語の寄せ集めだから別に覚える事なんてほとんどないわけだが。
0442デフォルトの名無しさん2014/06/06(金) 01:24:17.01ID:M36FOYua
誰か、Objective-C擁護派は居ないのか?
Swift登場以前は居たんだろ?
0443デフォルトの名無しさん2014/06/06(金) 01:34:54.40ID:bHnhPL3c
SwiftでCoreFoundationやQuartzの関数は呼べますか?
例えばCGContextRef を取得して操作したりとかできるんでしょうか?
0444デフォルトの名無しさん2014/06/06(金) 01:46:40.68ID:lrmBy0jf
>>443
このスレを CG で検索してみろ
0445デフォルトの名無しさん2014/06/06(金) 02:00:09.31ID:bHnhPL3c
出来るもんだな (´∀`)
0446デフォルトの名無しさん2014/06/06(金) 02:27:42.23ID:cHkwjIcW
>>442
や、より簡単な形でとりあえずobj-cで出来ることがだいたい出来るようになってる訳だし相反するものでもないんでないかな
smalltalk信奉者なんかで、かつ概念的な語りが好きな方々が一定数残ると思うけどね
皮肉でなく、昔語りをする人は必要だ
0447デフォルトの名無しさん2014/06/06(金) 02:34:14.55ID:QTGzN/i9
何かgoとかtypescriptが出た時より騒がれてるけど、何が凄いの?
0448デフォルトの名無しさん2014/06/06(金) 02:40:41.45ID:cHkwjIcW
>>447
obj-cランタイム互換でしょ
うざがられてたけど仕方ないと思われてた古めかしい設計のobj-cを苦もなく差し替えられる

あとc互換っぷりも個人的にはビビってる
低レイヤでなんか色々捗りそう
0449デフォルトの名無しさん2014/06/06(金) 02:51:42.76ID:rzjQXmlP
いまごろランタイムも書き直し中なのかなあ。
AndroidをGoにするのは難しいから
またAndroidはもっさりって言われちゃうな
0450デフォルトの名無しさん2014/06/06(金) 03:00:34.92ID:30cQq14w
今はSwiftScriptかSwiftTalkを開発中
0451デフォルトの名無しさん2014/06/06(金) 06:06:55.21ID:kAncoGTb
>>447
GoなんてGoogle社員が暇な時間に作ってみましたってだけで
別にChromeの中核スクリプトに採用する為のものでもなんでもないからな
メンツがメンツだけに一時期注目されたけどあれでも騒がれすぎだった
0452デフォルトの名無しさん2014/06/06(金) 06:14:19.62ID:VdkUhq2q
>>451
↑こいつ知ったかで良くここまで自信まんまんに恥晒せるな
すごいわ
0453デフォルトの名無しさん2014/06/06(金) 07:38:18.52ID:1jHAJD54
>>407
varでもよかったんだ
ところでbの型ってOptional(型!)だったらりする?

>>415
推測だけどGo-langのスライスみたいにArrayはあくまでラッパーで本体は別に存在するんじゃない
だから代入した場合本体の参照のみコピーされるのではないかと
unshareの機構も合点がいくし

>>447
発表した時点で”使える”言語だからじゃないの?
あと注目度の高いWWDCの基調講演で発表されたというインパクトもあるかもね
0454デフォルトの名無しさん2014/06/06(金) 07:59:08.42ID:Wfg//q6J
ObjC冗長だって言うけど、Swiftになったら結局コメント書かなきゃいけなくなる予感
ObjCはappleDocコメントとメソッド名で機能は殆んどつたわるからな
つかAppleDocとかCocoaPodsとかSwiftに移行するのかな
0455デフォルトの名無しさん2014/06/06(金) 08:02:22.50ID:s5X4N2N/
>>453
>>>407
>varでもよかったんだ
>ところでbの型ってOptional(型!)だったらりする?

bはOptionalにならない。必ず値が入るから。

b = a!

と同じ
0456デフォルトの名無しさん2014/06/06(金) 08:14:54.58ID:s5X4N2N/
どうでもいいけど

var a:Bool?
var b = !a!

みたいな書き方も出来るのな。
まぁ否定演算子と間違える奴は居ないか
0457デフォルトの名無しさん2014/06/06(金) 08:23:58.96ID:dQ9iK7KV
>>438
Swiftレベルの文法で脳細胞使ってんなよ
初見で書けるだろこんなの
0458デフォルトの名無しさん2014/06/06(金) 08:26:07.34ID:XasNKctc
>>451
実績がないのは事実
と思っていたがdocckerでgo始まったと思ったわ
0459デフォルトの名無しさん2014/06/06(金) 08:30:57.55ID:LzbjDMik
>>457
いつまでもマルチコピペ野郎に反応すんなks
0460デフォルトの名無しさん2014/06/06(金) 08:57:10.26ID:DTdJKogB
Boys, be ambiguous!
0461デフォルトの名無しさん2014/06/06(金) 09:32:25.44ID:NbZ9JiJc
>>446
より簡単に書けるからこそ、後でみてわからなくなりそう

array[index]
[array objectAtIndex:index]

事前知識なしで意味がとりやすいのは後者
■ このスレッドは過去ログ倉庫に格納されています