Swift part3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/07/23(水) 11:46:48.42ID:x29J8vdYApple Developer
https://developer.apple.com/swift/
Welcome to Swift
https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/
iBooks: The Swift Programming Language
https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
書籍の形にはなってないけどドキュメント
The Swift Programming Language
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
Swift Standard Library Reference
https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/SwiftStandardLibraryReference/
Swift Blog
https://developer.apple.com/swift/blog/
Resources (Xcode 6が無料でダウンロードできる)
https://developer.apple.com/swift/resources/
関連スレ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/
帰ってきた動的言語 VS 静的言語(代表Swift)
http://peace.2ch.net/test/read.cgi/tech/1401809550/
前スレ
Swiftスレ
http://peace.2ch.net/test/read.cgi/tech/1401736341/
Swift part2
http://peace.2ch.net/test/read.cgi/tech/1402465335/
0071デフォルトの名無しさん
2014/08/15(金) 14:53:58.04ID:HBtdHn8gお騒がせ
0072デフォルトの名無しさん
2014/08/15(金) 14:59:37.87ID:Lne+Px+X靖国、
逝こう。
0073デフォルトの名無しさん
2014/08/15(金) 15:17:20.80ID:IEcKMmncそれだとハッシュ値計算が重くなるよ。
単純な数値計算が望ましいから、Javaみたいにするのが無難
0074デフォルトの名無しさん
2014/08/15(金) 15:21:15.99ID:IEcKMmncいやだから、StringのhashValue変えることに意味無いんだって。
この場合、XORでなく、他の方法でハッシュ値求めればいいだけだよ
0075デフォルトの名無しさん
2014/08/15(金) 15:35:30.99ID:ZaXPBhtEそれをインスタンスを作るたびに計算をさせていたらクソ遅いとかw
0076デフォルトの名無しさん
2014/08/15(金) 15:47:01.00ID:HBtdHn8gもうSipHash 2-4で実装しなおした
0077デフォルトの名無しさん
2014/08/15(金) 16:14:55.16ID:IEcKMmncなどほどHashDoSか
でもSwiftってiOS/OSX向けだからDoS攻撃されることなくね?
あと、スクリプト言語はともかく、Obj-C並みの速度で動作するSwiftへのパフォーマンスの影響はいかほどなんだろう。
0078デフォルトの名無しさん
2014/08/16(土) 00:47:57.07ID:XlNU51V90079デフォルトの名無しさん
2014/08/16(土) 08:42:21.65ID:DXpV4TuM0080デフォルトの名無しさん
2014/08/17(日) 11:21:02.10ID:NRGjpcdUvar d = ["a": 10, "b": "BBB"]
d["C"] = "123"
ちなみに、こっちはOKでした。
var d:[String: Any]= ["a": 10, "b": "BBB"]
d["C"] = "123"
0081デフォルトの名無しさん
2014/08/17(日) 13:19:14.20ID:V8SXHhEtstruct S {
var a: Int = 0 {
didSet {
println("a did set: ¥(a)")
b = a + 1
}
}
var b: Int = 0 {
didSet {
println("b did set: ¥(b)")
a = b + 1
}
}
}
var s = S(a: 0, b: 0)
s.a = 1
a did set: 1
b did set: 2
a did set: 3
b did set: 4
a did set: 5
b did set: 6
a did set: 7
…
0082デフォルトの名無しさん
2014/08/17(日) 13:26:01.14ID:V8SXHhEt上は Foundation.NSDictionary になるからダメ
下は Swift.Dictionary<String, Any> だからおk
ちな
var d = ["a": 10, "b": "BBB"].mutableCopy()
d.setObject("123", forKey: "C")
println(d.description)
{
C = 123;
a = 10;
b = BBB;
}
NSMutableDictionaryにしてもSwiftのsubscript持ってないから使いにくいね
0083デフォルトの名無しさん
2014/08/17(日) 13:29:48.59ID:V8SXHhEtNSMutableDictionary でも subscript 使えたわw
var d = ["a": 1, "b": "2"].mutableCopy() as NSMutableDictionary
d["c"] = 9
println(d)
0084デフォルトの名無しさん
2014/08/17(日) 13:31:26.48ID:V8SXHhEtvar d = ["a": 1, "b": "2"] as NSMutableDictionary
d["c"] = 9
println(d)
連レススマソ
0085デフォルトの名無しさん
2014/08/17(日) 13:37:39.60ID:Oy9xGDlU型変換のサンプルとしてなら解るが
0086デフォルトの名無しさん
2014/08/17(日) 14:03:51.32ID:K7CnHZGx問題は、リテラルで暗黙的にSwift.Dictionary を 作ろうとした時に、typoでFoundation.NSDictionary に なってしまい、さらにその行ではエラーにならない可能性がある、という点だと思います
0087デフォルトの名無しさん
2014/08/17(日) 14:31:33.29ID:6prtFSikTypo も多いだろうし
0088デフォルトの名無しさん
2014/08/17(日) 14:34:39.04ID:NRGjpcdUレス感謝
リテラルだとNSDictionaryになる場合があるんですね
なんか分かりにくいですね。もうちょっとわかりやすい規則性だといいんですが...
0089デフォルトの名無しさん
2014/08/17(日) 14:51:16.87ID:LfZg7/6zvalueをAnyObjectにするとDictionaryになる。
おそらく、Obj-Cとの互換性のためじゃないかと思う。(NSDictionaryのvalueはAny扱いだろうから)
StackOverflowでも同じ話題が出てる
http://stackoverflow.com/questions/24023622/swift-dictionary-bug
0090デフォルトの名無しさん
2014/08/17(日) 14:53:42.48ID:LfZg7/6z0091デフォルトの名無しさん
2014/08/17(日) 15:03:23.86ID:LfZg7/6z連レス失礼
0092デフォルトの名無しさん
2014/08/17(日) 15:47:24.27ID:V8SXHhEtAnyやAnyObjectは祖先クラスじゃないから、[1, "a"]ってしたときに共通の祖先クラスがなくてSwiftの世界じゃ型を決められない
共通の祖先クラスがあればちゃんと型推論働く
class Sup {}
class SubA : Sup {}
class SubB : Sup {}
class SubC : Sup {}
var arr = [SubA(), SubB()] // <-ちゃんと[Sup]型になる
arr.append(SubC()) // [Sup]型だからSubCも突っ込める
0093デフォルトの名無しさん
2014/08/17(日) 21:19:17.58ID:QzjnpziEvar i = 10
for i in 1...5 {
println(i)
}
println(i)
0094デフォルトの名無しさん
2014/08/17(日) 23:11:23.64ID:n698S0JW0095デフォルトの名無しさん
2014/08/17(日) 23:23:32.70ID:GikCLa8j無理があるな
0096デフォルトの名無しさん
2014/08/17(日) 23:28:28.38ID:Dhvcldox警告がないことがクソな理由がわからん
0097デフォルトの名無しさん
2014/08/17(日) 23:33:37.07ID:LfZg7/6z何か問題あるのか?
for文の中でだけiはカウントされているのに?
0098デフォルトの名無しさん
2014/08/17(日) 23:34:59.76ID:QzjnpziEvar i = 10
for i=0; i<=5; i++ {
println(i)
}
println(i)
0099デフォルトの名無しさん
2014/08/17(日) 23:36:24.94ID:LfZg7/6zvar i = 10
for var i=0; i<=5; i++ {
println(i)
}
println(i)
0100デフォルトの名無しさん
2014/08/17(日) 23:41:12.49ID:tBLxxj+B0101デフォルトの名無しさん
2014/08/17(日) 23:43:25.37ID:LfZg7/6z>>99は新たに変数を定義している。for-inも同じ
って違い
0102デフォルトの名無しさん
2014/08/17(日) 23:50:58.64ID:QzjnpziE0103デフォルトの名無しさん
2014/08/18(月) 00:11:33.88ID:En9s5gLv○糞理解力すぎて恥ずかしくなったからもう寝るわ
0104デフォルトの名無しさん
2014/08/18(月) 02:59:27.51ID:O5wid4ZY0105デフォルトの名無しさん
2014/08/18(月) 09:45:40.90ID:AEgSkInFいろいろと粗が目立つ
開発者からのフィードバックも膨大に溜まってんだろ
こなれてくるまでには2,3年はかかるか
0106デフォルトの名無しさん
2014/08/18(月) 14:58:59.79ID:AbutQB81ライブラリの整備は多少時間がかかるかもしれないが
0107デフォルトの名無しさん
2014/08/18(月) 15:16:48.80ID:+QBXrcY+これcも同じだけど。スコープとか知らんの?
0108デフォルトの名無しさん
2014/08/18(月) 15:18:22.93ID:kU0z26/tつうかどうしてアホー言語っていちいち字面をキモくしなきゃ気がすまないんだ
0109デフォルトの名無しさん
2014/08/18(月) 15:26:28.48ID:r8tHn57o0110デフォルトの名無しさん
2014/08/18(月) 15:44:54.29ID:7O3aXnPzいわばTPOっていう?w
0111デフォルトの名無しさん
2014/08/18(月) 15:50:06.54ID:AbutQB81それが嫌ならこんなのどうだ?好きなの使え
for i in 0...5 {}
0112デフォルトの名無しさん
2014/08/18(月) 15:52:47.66ID:r8tHn57oってそういやbeta5が出てたな
0113デフォルトの名無しさん
2014/08/18(月) 15:53:32.18ID:IXyCPeCcfor i=0; i<=5; i++ {
println(i)
}
println(i)
これを for in を使って書くとしたら...
0114デフォルトの名無しさん
2014/08/18(月) 16:16:23.42ID:DYjOgIx2swiftにコミットするのやめてくれんかのう
0115デフォルトの名無しさん
2014/08/18(月) 16:21:49.19ID:AbutQB81a <= b の範囲は a ... b のまま
0116デフォルトの名無しさん
2014/08/18(月) 16:43:01.98ID:nVnuxrx8Cのfor文の丸括弧を取っ払っただけだし,C++,C#,Javascriptでも同種の構文があるんだが。
何にも知らないんだね。
0117デフォルトの名無しさん
2014/08/18(月) 16:46:35.71ID:r8tHn57ofor文で <= 使うのはかなり特殊なケースだから勘違いしちゃったよ
まあこう書くと反論する人いるだろうからこのへんでー
0118デフォルトの名無しさん
2014/08/18(月) 21:16:14.69ID:jy6904iqぎゃくに、ちょこまか変えてるのが今はウザい
しかも、つけてもコンパイルとおるって言う
じゃあ何でとったっていう
0119デフォルトの名無しさん
2014/08/18(月) 21:19:53.54ID:WWtz0eQIしばらくSwift書いてObjCに戻ったらセミコロンがもの凄くかったるく感じる
0120デフォルトの名無しさん
2014/08/18(月) 21:42:59.44ID:En9s5gLvaaa(); bbb()
こんな風に一行で書くには;がいるわけ
今は省けるもんは省くのがトレンドだからね(型推論にしても)
でも、Swiftは無闇に省いているわけではない。
例えば、ifなどの制御構文のブロックとか、return句とかは必須だ。
0121デフォルトの名無しさん
2014/08/18(月) 21:43:56.75ID:jy6904iqそうだ、それがうぜー
全部つければ何も考えなくていいのに
0122デフォルトの名無しさん
2014/08/18(月) 21:47:40.83ID:En9s5gLvそのうち慣れて何も考えなくても書けるようになるよ。
0123デフォルトの名無しさん
2014/08/18(月) 21:50:27.90ID:jy6904iqところで、if文ブロックとreturnにセミコロンが必要ってのはどこに書いてあったっけ?
0124デフォルトの名無しさん
2014/08/18(月) 21:53:11.65ID:jy6904iq今リファレンス読んでみたけど、>>120の1行目だけ正しいね
0125デフォルトの名無しさん
2014/08/18(月) 21:56:58.04ID:jy6904iq一行にまとめて書く場合以外は
0126デフォルトの名無しさん
2014/08/18(月) 22:01:50.19ID:En9s5gLvちゃうちゃう、制御文にブロックが必要ってこと
Swiftでは以下のようには書けない
//-------
if (a.hasPrefix("s"))
doSomething()
// これはOK
if (a.hasPrefix("s")) { doSomething() }
//-------
あと、Rubyみたいにどこでもreturnが省けるわけではないということ
//------
func empty() -> String { return "" } // return必須
class SomeClass {
var aaa:String { return "AAA" } // return 必須
}
let f:()->String = { "aaa" } // クロージャは式のみの場合returnを省ける
let f2:()->String = { var a = "aaa"; return a } // こっちはreturn必須
//------
セミコロンにしても、締めるところは締めていると言うことを言いたかったんや。
0127デフォルトの名無しさん
2014/08/18(月) 22:16:02.11ID:jy6904iqなるほど、そういうことか
全部セミコロンの話かと思ってた
どうもありがとう
にしても、
if (a.hasPrefix("s"))
doSomething()
はやりそうだなぁ
Cでも、単文でも極力{ }でくくるようにはしてるけど
0128デフォルトの名無しさん
2014/08/18(月) 22:33:45.06ID:WWtz0eQI0129デフォルトの名無しさん
2014/08/18(月) 23:24:23.43ID:TotxymUgあれ、一目見ておかしいと思わないの? { } でくくっても同じだろ
0130デフォルトの名無しさん
2014/08/19(火) 00:02:18.38ID:dGN2Xh51あんな重要なとこまともにテストしてないのがおかしい
0131デフォルトの名無しさん
2014/08/19(火) 13:57:12.16ID:c6AsXCDxhttp://news.livedoor.com/article/detail/9157615/
「2014年前半のインパクトはもう圧倒的にSwiftの登場。これは間違いなく普及する」と小飼氏が断言する理由は、次の5つに集約されるそうだ。
【1】既存環境の言語との高い互換性
【2】他の言語の“負の遺産”を捨てている
【3】優れたリファレンス
【4】iOSエンジニアをアセンブラ領域まで進出させる可能性
【5】クローズドから始めてオープンへというAppleの戦略意図を感じる
0132デフォルトの名無しさん
2014/08/19(火) 14:08:21.75ID:sBhGF3j60133デフォルトの名無しさん
2014/08/19(火) 14:28:29.94ID:c6AsXCDx0134デフォルトの名無しさん
2014/08/19(火) 15:16:25.26ID:0B3vcACg0135デフォルトの名無しさん
2014/08/19(火) 15:25:47.81ID:sBhGF3j60136デフォルトの名無しさん
2014/08/19(火) 15:38:00.06ID:0B3vcACg俺の書くコードの質と、dankogaiが書くコードには何の関係もないよ。
以前
http://blog.livedoor.jp/dankogai/archives/51767934.html
で偉そうなこと書いてその後こてんぱんにやられてたが、少なくとも404 Blog Not Foundに書かれるコードは糞コードだらけだ。
0137デフォルトの名無しさん
2014/08/19(火) 15:57:36.88ID:sBhGF3j6どこがどういう理由で糞なのか参考までに教えて頂けると助かります。
0138デフォルトの名無しさん
2014/08/19(火) 16:00:56.56ID:muSpSvbP下までスクロールするとブラウザがフリーズした
0139デフォルトの名無しさん
2014/08/19(火) 16:13:13.66ID:lLkg1CgN404で見たこと無い。 Swift のコードはほとんどQiitaだろ
最近Swiftばかり
0140デフォルトの名無しさん
2014/08/19(火) 16:19:24.69ID:lLkg1CgN0141デフォルトの名無しさん
2014/08/19(火) 16:24:34.18ID:0B3vcACg何年前って2012年の記事だろ。
> Swift のコードはほとんどQiitaだろ
あ、そうなの?dankogaiのまともなコードがあるならリンクよろしく。まあないと思うけどな。
0142デフォルトの名無しさん
2014/08/19(火) 16:27:25.14ID:sBhGF3j60143デフォルトの名無しさん
2014/08/19(火) 16:33:02.29ID:0B3vcACgなんかPerlの貢献度が高かったらしいのは知ってるが。
0144デフォルトの名無しさん
2014/08/19(火) 16:39:53.20ID:sBhGF3j6ゲームは作ってないけど
0145デフォルトの名無しさん
2014/08/19(火) 16:58:08.56ID:lLkg1CgNSwiftが出たのは6月だぞ
Qiitaも見たこと無いでコードの話をするなんて変なの 最も纏まったコードは無いけど
リンクも何もQiita Swift dankogai で検索すれば沢山出てくるから自分で見ろよ
0146デフォルトの名無しさん
2014/08/19(火) 19:08:01.93ID:b1cKAETJ場合によりけり。こと言語関連に限っては2年はそう昔の話ではないだろう
単に流行だけを追いかけてるだけなら 2年も前の話なんてカビが生えて かもしれないがな
0147デフォルトの名無しさん
2014/08/19(火) 19:09:17.26ID:TLaA01XG0148デフォルトの名無しさん
2014/08/19(火) 20:08:11.95ID:V8/7iNdrPatch pleaseでいいんじゃね。
swiftスレらしくswiftのコードに粘着してくれ。
0149デフォルトの名無しさん
2014/08/19(火) 21:19:55.30ID:c6AsXCDx6月以降だけを見ても404の方は数本、Qiitaの方はSwiftだけでも沢山書き込んでる
404は四方山話、コードならQiita
そんな404の古い四方山話を持ち出しても意味無いだろ Perlがもはや坂を転げ落ちてることは本人が良く知ってるだろう
SwiftでJSONとか参考になったよ
コードに文句つけるならSwiftのコードについて意見しろよ
0150デフォルトの名無しさん
2014/08/19(火) 21:49:44.49ID:aN7BQ+Qxhttp://qiita.com/dankogai/items/2d19b8352183cca3461f
var st = stat() // *1
let err = path.withCString { // *2
lstat($0, &st) // *3
}
わざわざ withCString 使うことない
C の const char* には String そのまま渡せる
var st = stat()
let err = lstat(path, &st)
0151デフォルトの名無しさん
2014/08/19(火) 21:56:15.35ID:FQGd2orm小飼弾ばっかり注目されて悔しいニダ
実名で有益なことやってる奴見ると腹立つニダ
0152デフォルトの名無しさん
2014/08/19(火) 22:09:32.82ID:b1cKAETJ0153デフォルトの名無しさん
2014/08/19(火) 22:20:56.13ID:dii/unFmまた色々言語仕様変更したらしいじゃねーか
0154デフォルトの名無しさん
2014/08/19(火) 22:25:06.20ID:RLzZhY/k今回はあんま変更ないじゃん。細かい改良がメインだし
Xcodeでリンクが上手く行かないって問題がなんぼか出ているようだが
0155デフォルトの名無しさん
2014/08/19(火) 22:32:15.29ID:Laa9BX+Vいや、話の趣旨が、C言語の素のデータ型とSwiftとの連携の話なんで
そこは、withCStringでいいでしょ
その後の、withUnsafePointer にも繋がってくわけだし
0156デフォルトの名無しさん
2014/08/19(火) 23:43:35.67ID:I0aXY+SD0157デフォルトの名無しさん
2014/08/20(水) 00:56:55.99ID:9QzdPeJo0158デフォルトの名無しさん
2014/08/20(水) 00:59:22.66ID:+uPYMsWLの *3 の下の
while fgets(&linebuf, Int32(linebufsize-1), fp) {
ここでエラーが出るようになったけど何が変わったんだっけ?
0159デフォルトの名無しさん
2014/08/20(水) 08:51:55.37ID:Nj3MsvBs0160デフォルトの名無しさん
2014/08/20(水) 10:09:10.39ID:+uPYMsWLtype 'UnsafeMutablePointer<Int8>' does not conform to protocol 'BooleanType'
fgetsのreturnが char * でBooleanじゃないよと言ってるんだね
0161デフォルトの名無しさん
2014/08/20(水) 10:27:10.15ID:xEVixHuY> SwiftでJSONとか参考になったよ
え、あのコードで参考になっちゃうんだ
0162デフォルトの名無しさん
2014/08/20(水) 10:40:51.47ID:3XEuOnAAなるよ
0163デフォルトの名無しさん
2014/08/20(水) 10:51:38.06ID:+uPYMsWLSwiftで面倒なJSONの取り扱いをさらに10倍便利にするclass JSON
http://qiita.com/dankogai/items/e3d9882f4d25bc44cc03
0164デフォルトの名無しさん
2014/08/20(水) 11:27:17.95ID:Nj3MsvBs0165デフォルトの名無しさん
2014/08/20(水) 12:32:27.86ID:+uPYMsWL“Optionals no longer implicitly evaluate to true when they have a value and false when they do not, to avoid confusion when working with optional Bool values.
Instead, make an explicit check against nil with the == or != operators to find out if an optional contains a value.”
0166デフォルトの名無しさん
2014/08/20(水) 12:47:51.13ID:IR8yJSUh関係無い
fgets の戻り値は UnsafeMutablePointer<Int8>
UnsafeMutablePointer が BooleanType じゃなくなったのは Beta 6 から
0167デフォルトの名無しさん
2014/08/20(水) 12:52:10.49ID:IR8yJSUhBeta 6 から BooleanType じゃなくなったのは AutoreleasingUnsafeMutablePointer の方だった
UnsafeMutablePointer は Beta 4 までは UnsafePointer で LogicValue プロトコルを実装してたが、
Beta 5 で UnsafeMutablePointer に名前が変更されると同時に BooleanType (Beta 4 以前での LogicValue) じゃなくなった
0168デフォルトの名無しさん
2014/08/23(土) 17:17:29.30ID:nymJgeS4Swiftもオワコンか
0169デフォルトの名無しさん
2014/08/23(土) 17:37:04.91ID:aRrEsiH9今は使ってる層と使っていない層とがはっきり別れている時期
使ってる層は練習で忙しいしβをわきまえてる
使っていない層は話題に乏しい
正式リリースになれば本も出るしスクールもあちこちで開講されるだろうから賑やかになるだろう
0170デフォルトの名無しさん
2014/08/23(土) 17:39:31.87ID:IHW9XXMfObjective-Cでいいんだもん
Windows8出たばっかでWindows9とかいってるMSみたく
いらんもん出すのが流行ってんのか?
■ このスレッドは過去ログ倉庫に格納されています