Swift part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/06/11(水) 14:42:15.02ID:+13mKJ0ZApple 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
今のところbeta版のXcode 6がSwift対応らしい
https://developer.apple.com/xcode/downloads/
関連スレ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/
前スレ
Swiftスレ
http://peace.2ch.net/test/read.cgi/tech/1401736341/
0233デフォルトの名無しさん
2014/06/23(月) 17:09:38.07ID:IjFKX6YYObjCでゲッタに書く処理といえば遅延初期化が典型的だったけど、それは@lazyでできる
他にゲッタで値を変える必然性のあるケースって何かあるだろうか
0234デフォルトの名無しさん
2014/06/23(月) 20:07:54.04ID:bY8lx62F自分自身を呼び出したら無限ループするのもあたりまえ
0235デフォルトの名無しさん
2014/06/23(月) 22:44:10.74ID:yZxj5sEO0236デフォルトの名無しさん
2014/06/23(月) 22:45:58.55ID:knxG2Zrc0237デフォルトの名無しさん
2014/06/23(月) 22:52:46.74ID:yZxj5sEO[Objective-C retain];
}
0238デフォルトの名無しさん
2014/06/23(月) 23:38:38.48ID:BKKkXYpeObject
subclass: #Example
instanceVariableNames: 'value'
classVariableNames: ''
poolDictionaries: ''
category: 'Example'.
! Example methodsFor: 'Accessing' !
value
^ value ifNil: [ value := 0 ].
!
value: aNumber
value := aNumber.
!!
Accessingで値を取り出す時値を書き換えるってのは、割りと古典的な方法なんだけどね。
objectが重要じゃなくて値が重要って場合は別解としてこういう使い方もあるけど。
! Example methodsFor: 'Accessing' !
value
^ value ifNil: [ 0 ].
!
value: aNumber
value := aNumber.
!!
0239デフォルトの名無しさん
2014/06/24(火) 00:13:09.22ID:o+ts05fh0240デフォルトの名無しさん
2014/06/24(火) 00:16:28.10ID:o+ts05fh0241デフォルトの名無しさん
2014/06/24(火) 00:21:29.84ID:nsfoMIba古典的だから
0242デフォルトの名無しさん
2014/06/24(火) 09:52:46.32ID:AAHBTYvg0243デフォルトの名無しさん
2014/06/25(水) 21:58:00.07ID:79R/fCgLSwiftもそろそろオワコンか
0244デフォルトの名無しさん
2014/06/25(水) 22:26:41.23ID:8AOeuyaK信者混じりの初速がおかしかっただけでしょう
アクセスコントロールはよ
シングルトン書きにくくてもにょる
0245デフォルトの名無しさん
2014/06/25(水) 22:55:47.78ID:yyfslmCP0246デフォルトの名無しさん
2014/06/25(水) 23:18:47.49ID:79R/fCgL0247デフォルトの名無しさん
2014/06/26(木) 00:50:20.58ID:ifBtr7TRenum < …いゃぁっ!! やっぱり無理だようっ、まだ列挙子だもん、デザパタなんて入らないよぅぅっツ!!
enum < うぅ…ま、満足してくれた? アクセス制御ちゃんが来てくれないからって…無理しちゃいけないよ…はぅ…
なんでもない
今、近場の病院をググってる所だ安心しろ
0248デフォルトの名無しさん
2014/06/26(木) 06:00:34.87ID:fv8mroUT0249デフォルトの名無しさん
2014/06/26(木) 23:33:31.01ID:BVAAIzQvいい加減Singleton卒業しろよ。
保守しづらくてたまらんわ。
0250デフォルトの名無しさん
2014/06/26(木) 23:39:50.30ID:WAwEPjdj0251デフォルトの名無しさん
2014/06/26(木) 23:42:07.98ID:qPqjUHLv0252デフォルトの名無しさん
2014/06/26(木) 23:59:18.79ID:BVAAIzQvSingletonと違ってMonostate patternで
作ったclassのobjectは
他のclassのobjectと置き換えが容易。
並列処理を新たに追加する場合や、
複数のobjectが必要になった場合なんかは特に助かる。
0253デフォルトの名無しさん
2014/06/27(金) 00:49:08.49ID:9hXQR0vqつか置き換え要求があり得るならばシングルトン一択では?
多分お互いの考えてる想定ケースが違うんだろうけど
続く二行がなおのこと意味不明
最後のなんか、そもそもシングルトンもモノステートも適用しちゃいかんだろ
0254デフォルトの名無しさん
2014/06/27(金) 00:54:10.86ID:CRdQJr4Y0255デフォルトの名無しさん
2014/06/27(金) 01:25:11.37ID:6uE5vYGa0256デフォルトの名無しさん
2014/06/27(金) 01:28:29.47ID:bk/xChkn0257デフォルトの名無しさん
2014/06/27(金) 06:16:05.51ID:/tBLbKnnオブジェクト指向は愚かな考え。
http://peace.2ch.net/test/read.cgi/tech/1393660194/
0258デフォルトの名無しさん
2014/06/27(金) 07:58:35.16ID:bmd/FTib時代はDI(Dependency Injection)だよ。
疎結合になって保守しやすいし、テストも書きやすくなる。
ていうか、Javaの世界ではとっくにDIが当たり前だから。
いまだにフレームワークでもSingletonなんて使ってるのはObj-Cだけ。
0259デフォルトの名無しさん
2014/06/27(金) 08:13:09.44ID:3Ogs4WPv0260デフォルトの名無しさん
2014/06/27(金) 08:32:48.24ID:jMn+w+Bh0261デフォルトの名無しさん
2014/06/27(金) 09:51:17.33ID:CmsfI9Sw0262デフォルトの名無しさん
2014/06/27(金) 10:05:50.14ID:BbQZN6SMオブジェクト指向だったらなにが必要かって
考えたオブジェクト指向フレームワークの中身がCって形だから
書き方が冗長になる以外は「最近の言語の新機能だぁ!」
みたいなのだいたい再現できるよね。
0263デフォルトの名無しさん
2014/06/27(金) 10:49:17.65ID:iTSjXKIwsharedFoo とか defaultBar とか
0264デフォルトの名無しさん
2014/06/27(金) 12:57:01.86ID:cQ+q76Vpそんなもん存在せんぞ
0265デフォルトの名無しさん
2014/06/27(金) 13:04:18.24ID:5Q+HtdSG0266デフォルトの名無しさん
2014/06/27(金) 13:23:23.08ID:cQ+q76VpshareFooやdefaultBarで検索してもそんなもん出てこない。
0267デフォルトの名無しさん
2014/06/27(金) 13:27:17.30ID:5Q+HtdSGお前がそう思うんならそうなんだろうな
お前の中ではな
0268デフォルトの名無しさん
2014/06/27(金) 13:49:32.26ID:W1qQ5+Xl0269デフォルトの名無しさん
2014/06/27(金) 17:00:40.07ID:iTSjXKIw本気で言ってそうでヤバいなお前
0270デフォルトの名無しさん
2014/06/27(金) 17:23:52.29ID:pR5dE5tVどうやってグローバル変数でシングルトンの代わりをするんだよ
0271デフォルトの名無しさん
2014/06/27(金) 17:25:27.50ID:CRdQJr4Y0272デフォルトの名無しさん
2014/06/27(金) 20:50:53.32ID:02IBmcrSそういうセリフは、シングルトンをグローバル変数の替わり以外で使ってる人だけが言うべき
0273デフォルトの名無しさん
2014/06/27(金) 21:04:07.92ID:RdmQ7muW新参か?
0274デフォルトの名無しさん
2014/06/27(金) 21:10:17.31ID:GbdV8FAONSUserDefaultsとNSFileManagerはシングルトンじゃないよ
0275デフォルトの名無しさん
2014/06/27(金) 21:11:15.91ID:ASBax8F10276デフォルトの名無しさん
2014/06/27(金) 22:32:21.50ID:TatRAlv+? 268にお前ん中ではなって言えば良かったって話?
0277デフォルトの名無しさん
2014/06/27(金) 23:04:31.16ID:B7q6S9HD決まって何がしたいのか説明不足だからな
他所ならともかく2chじゃ煙たがられる
0278デフォルトの名無しさん
2014/06/27(金) 23:32:16.42ID:5Q+HtdSG0279デフォルトの名無しさん
2014/06/29(日) 08:40:06.96ID:wFk5OUc50280デフォルトの名無しさん
2014/06/30(月) 00:44:34.70ID:3lwG7vbW0281デフォルトの名無しさん
2014/06/30(月) 01:06:27.05ID:2Uifxpzhふ〜ん、この為にJava to Object-Cなんて作ってたのか。
この流れだと、Java to Swiftも出てきそうだな。
iOSユーザを取り込みたいんだろうな。
0282デフォルトの名無しさん
2014/06/30(月) 01:21:22.38ID:qZLVrmNH0283デフォルトの名無しさん
2014/06/30(月) 01:27:17.53ID:2e+iCNCB0284デフォルトの名無しさん
2014/06/30(月) 01:32:39.92ID:CGk8SAom0285デフォルトの名無しさん
2014/06/30(月) 02:47:02.02ID:o++cUP1Q部分文字列の切り取りもやけにめんどくさい
糞すぎる
0286デフォルトの名無しさん
2014/07/01(火) 09:14:05.17ID:Spoe+hFiなんかモダン言語の特徴を取り入れたとか言ってるわりには、いろいろ糞だよね
0287デフォルトの名無しさん
2014/07/01(火) 09:50:58.67ID:oY1WpWsO書き捨て用途も多いスクリプト言語と違って、Swiftはアプリケーション構築が第一最大の目的だからそんなもの要らん
0288デフォルトの名無しさん
2014/07/01(火) 10:45:28.17ID:FsIt2ttm>>286 これだけは仕様追加されるまで待つしかないな。 どうして最初から入れなかったのか不思議でしょうがない。
文字列関係は大幅な仕様追加が有るはず。 早ければゴールデンマスター辺りで第1段
0289デフォルトの名無しさん
2014/07/01(火) 12:15:57.46ID:OoZ2DZwm真面目なプログラムならその通りだが、
学習時やパイロット、簡易テストなんかの折にヒアドキュメントがあると楽だとは思うね。
0290デフォルトの名無しさん
2014/07/01(火) 13:43:27.02ID:FsIt2ttmちょっとしたThunk youメッセージとか、処理結果表示とか。
サーバサイドのプログラム用途ではかなり重要な機能だよ。
別ファイルにして一番困るのが埋め込み変数が評価されない事
例えば
var a=1
str="aは\(a)だよ" //今はインラインだから埋め込まれる
println("#1 a=\(a) "+str) //#1 a=1 aは1だよ
a=2
println("#2 a=\(a) "+str) //#2 a=2 aは1だよ
//「aは\(a)だよ」 と言うファイルを別に作ってstrに読み込んだとしよう
str="aは\\(a)だよ" //aは\(a)だよ と等価
a=3
println("#3 aは\(a) "+str) //#3 aは\(a)だよ 文字列としてしか評価されない
自分で埋め込み変数で分離して実行時に結合とかすれば似たような事は出来るが美しくない。
0291デフォルトの名無しさん
2014/07/01(火) 14:24:10.63ID:oY1WpWsO0292デフォルトの名無しさん
2014/07/01(火) 14:49:41.78ID:B592/H3e結局いろいろやろうとしたらCocoaの糞みたいなライブラリを使わなきゃなんねーみたいだな
Obj-C使うのと大して変わんねーじゃねーか
いや、むしろObjCとSwiftを行ったり来たりする手間が増えた分、糞度が増した感じだな
0293デフォルトの名無しさん
2014/07/01(火) 15:11:46.08ID:H8OdYCOpつutf16count
この名前にしたのは、UTF-16のカウントだよサロゲートペアは考慮しないよ、ってのを明確にするためだと思う。
サロゲートペア考慮した文字列をカウントするメソッドをlengthにすればいいじゃんと思うかもだが、NSStringがすでにlengthプロパティ持ってる。
0294デフォルトの名無しさん
2014/07/01(火) 16:54:57.26ID:HKbfE0uoみんなワガママ言いたい放題だな。
0295デフォルトの名無しさん
2014/07/01(火) 18:30:17.98ID:xH+GAfzKScalaのJavaに由来する糞な部分を叩くのがワガママだというのとは訳が違う
0296デフォルトの名無しさん
2014/07/01(火) 19:06:31.76ID:8cxNwtXUApple がランタイム(Cocoa)を自由にいじれる訳ないだろう
これまでの ObjC デベロッパを切り捨てるはずもない
Microsoft が Win32API/COM を捨て .Net を強く推そうとしても、
いつまでたってもデベロッパが .Net へ移行しないから
Win32API を切り捨てられないのと同じ
Swift の登場を受けて OSX/iOS 開発に初めて手をだした奴等が
ObjCランタイムにとまどうのは理解するけど、
従来からのObjCデベロッパにとって Swift の道は最良に近い選択肢
0297デフォルトの名無しさん
2014/07/01(火) 19:07:30.23ID:8cxNwtXU0298デフォルトの名無しさん
2014/07/01(火) 19:18:16.51ID:B592/H3eしかも、型が違うもんだから、相互変換が必要とか
使う側は、今使ってる変数が、SwiftのStringなのか、NSStringなのか、Arrayなのか、NSArrayなのか意識しながら
コーディングしないといけない
このカオスっぷりは、結局、新参者を遠ざけることになるんじゃねーの?
0299デフォルトの名無しさん
2014/07/01(火) 19:26:24.15ID:oY1WpWsO合理的な段階は踏むけど、出来る限り早くObjective-Cは捨てられると思うよ
いままでも色んな場面でそうして来た
0300デフォルトの名無しさん
2014/07/01(火) 19:36:43.80ID:8cxNwtXUいいんじゃねえの
ObjCプログラマなら、文字列変数の型が char * なのか
NSString なのかは、常に意識してるから慣れたものだし
C が Swift に代わっただけで、そのメリットは大きい
どのみちデータ型でつまずくようなレベルだと、
Java/C#/C++ の静的OOPに慣れたデベロッパには
Smalltalk由来のメソッド動的束縛は理解できないから、
消えてくれたほうが世の為
0301デフォルトの名無しさん
2014/07/01(火) 19:41:21.00ID:B592/H3e強力なSwitch文とEnum、それとStructが使えることと、Genericsのサポートぐらいか
あと、Arrayのソートが早い?んだっけ? 試してないけど。絵文字変数とか別にどーでもいいし
その他はあまり文法的なメリットは感じないな。つか大して変わんない。
どっちみちアプリ作るにはCocoaのクラスがいるし。
クロージャにしても、Obj-CならBlocksがあるし、perform〜系の呼び出しや、callbackが素で使えるのもObj-Cの方が使い勝手がいい
Carbon APIの呼び出しもObj-CからTall-freeで呼び出せる
ん〜っ、なんだかなぁ
実際、どーなんだろ、同じアプリをObj-CとSwiftで書くなら、Swiftの方が何倍早いとかデータあるのかね?
Flapybirdのソース見たけど、あれObj-Cで書いても大して記述量変わんねーよね?ほとんどSpritKitの呼び出しだし
0302デフォルトの名無しさん
2014/07/01(火) 19:56:30.70ID:9nsBHmdy0303デフォルトの名無しさん
2014/07/01(火) 20:07:43.29ID:B592/H3e0304デフォルトの名無しさん
2014/07/01(火) 20:11:02.02ID:oY1WpWsOその分テストも減らせて開発スピードも上がるんじゃね
記述量とかどうでもいい
0305デフォルトの名無しさん
2014/07/01(火) 20:32:54.59ID:FsIt2ttmこれだけ基礎がしっかりしてれば後はお化粧の話。
Objective-Cのライブラリを当面そのまま使い、徐々にSwift likeに合わせて行くんだろ。
手始めにNSStringをStringの拡張として使える様にしてるから、Stringでフォーマットも使える。 言語仕様に入れられないのは若干のUnicodeの処理の違いを最終的にどう辻褄を合わせるかがきまらないからだろう。
0306デフォルトの名無しさん
2014/07/01(火) 20:36:44.49ID:l9yjQtpJあと、条件式のかっこがなかったりとか微妙に違う感出してるとこ
ObjC残しとくくせに紛らわしいんだよ
0307デフォルトの名無しさん
2014/07/01(火) 20:40:25.90ID:l9yjQtpJわかる表記になってて、個人的には、なれればむしろ、レガシーなCと共存関係が
わかりやすくて好きだったんだけどな
文字列の操作がめんどいって声があるなら、そこだけ+で出来るようにちょいへん
してくれたらよかった
0308デフォルトの名無しさん
2014/07/01(火) 20:52:13.49ID:YM4fCUiI0309デフォルトの名無しさん
2014/07/01(火) 21:05:05.42ID:B592/H3eそれでなくても、年1回のOSのバージョンアップとCocoaのDeprecated攻撃でもうへとへとなんだよ
0310デフォルトの名無しさん
2014/07/01(火) 21:24:35.06ID:/YDQ45k+いや、おそらくdeprecatedの嵐はいよいよ激しくなるんじゃねーの?
当分はSwift自体の拡張や仕様変更も相当あるだろうし
CocoaもSwiftベースに書き換えられるんだろうから。
もともと建て増し建て増しでどうにもならなくなったObjC2.0じゃ
この先進化のさせようがないってんでSwiftに乗り換えることにしたんだろうし。
0311デフォルトの名無しさん
2014/07/01(火) 21:26:59.14ID:B592/H3e0312デフォルトの名無しさん
2014/07/01(火) 21:30:55.29ID:oY1WpWsO0313デフォルトの名無しさん
2014/07/01(火) 21:39:04.99ID:B592/H3e0314デフォルトの名無しさん
2014/07/01(火) 21:56:32.31ID:pwV/PQsP0315デフォルトの名無しさん
2014/07/01(火) 22:05:25.96ID:/YDQ45k+Appleは乗り換えるとは言ってないけど、将来的には乗り換えるつもりだろうと思っているよ。
二つの言語を同水準でサポートし続ける理由がないし、
ObjCをこの先もずっとサポートしていくつもりならわざわざSwiftを導入して
移行に伴う混乱を誘発する理由もないから。
Appleが何も言っていない以上は違う意見の人を説得できるとは思ってない。
乗り換えるなんてことはありえないと思うなら俺とは前提が違うってことだね。
0316デフォルトの名無しさん
2014/07/01(火) 22:17:11.06ID:l9yjQtpJ0317デフォルトの名無しさん
2014/07/01(火) 22:18:26.53ID:fEVjLc77それ……消えるの……Swiftになるフラグ……
0318デフォルトの名無しさん
2014/07/01(火) 22:27:11.00ID:B592/H3eObj-Cを切り捨てるってことは今後最低でも10年は無いと思うけどね
C言語の構文やデータ構造がそのままの文法で書けるってだけでも価値がある
Appleがらみのライブラリだけでなく、Unixの膨大なライブラリもあるし
WWDCでも、Obc-Cの既存コードをSwiftで書き換えることはお勧めしないって言ってたし
それやるなら既存コードはそのままにして、新機能だけSwiftで書けって言ってたし
今の所はまだObj-Cが消える可能性より、Swiftが残る可能性の方があやしい
Appleがやっぱやめましたって言う可能性もあるし、ユーザーがついてこなくて自然消滅の可能性だってある
0319デフォルトの名無しさん
2014/07/01(火) 22:40:41.30ID:FsIt2ttmObject-Cと言う言語が消える事は無いが、ライブラリなど徐々にSwiftに移行していくだろうな。
当然の流れ。
今後のSwiftは言語の若干の手直し(拡張)とライブラリ群の整備だろうな。
0320デフォルトの名無しさん
2014/07/01(火) 22:47:36.43ID:/YDQ45k+ああ、俺もあとどれぐらいでObjCが消えるかなんて分からない。
10年より先かもしれないしもっと早いかもしれない。
今後の情勢次第でSwiftが消える可能性があるだろうと言われればそうかもしれないとしか言えない。
少なくとも現時点のAppleは、いずれ乗り換えるつもりでSwiftを発表したんだろうと思うというだけ。
あとWWDCで既存コードの書き換えが推奨されないというのは俺も知ってるけど
似たような話はretain/releaseを手動でやってるコードからGCへの移行でも言われていた。
「今問題なく動いているものをいじるな」というだけの話で、
AppleがObjCとSwiftを今後どうするつもりかという話とは関係ないと思う。
0321デフォルトの名無しさん
2014/07/01(火) 22:51:53.67ID:l9yjQtpJ>C言語の構文やデータ構造がそのままの文法で書けるってだけでも価値がある
これはほんとそうだよな
以前、Cでπの多倍長計算のコードを書いてたことがあって、それをCocoaアプリに
仕立て上げてみた時も、コアの計算アルゴリズムの部分はほぼファイルコピーで
UI部分だけObjective-Cで書いてアプリが出来上がったとき、Objective-Cの
素晴らしさを実感したことを今でも覚えてる
Cocoaは、最初Objective-Cって何だよっておもってCocoa-Javaから始めたくち
だったけど、Objective-Cが実はCなんだと(正確にはC+OOP)だと気づいたとき
一気に障壁が下がってそれ以降すんなりObjective-Cでコーディングできてた
Modernさという意味ではSwiftに劣るけど、やっぱObjective-Cが好きなのかも
.mファイルの中に、Cの関数とObj-Cのメソッドが並んでるコードは最初気持ち
悪かったけど、ある意味最も自然な形で拡張された素直な言語だなと思う
0322デフォルトの名無しさん
2014/07/01(火) 23:08:31.21ID:yfeDN/3+#( 1 2 3 ) do:
[ :each |
].
Smalltalkなら20年前に出来てたこんな機能が、
Objective-C 2.0 で新機能扱いとかウンザリ。
0323デフォルトの名無しさん
2014/07/01(火) 23:09:00.30ID:g+9FQYl7iOS関連ってOSSが多くて(特にUI)、質も高い。
そして、OSS書いてる人たちが結構な割合で、少なくとも新規プロジェクトはSwiftで書くのではないかと思う。
0324デフォルトの名無しさん
2014/07/01(火) 23:14:39.02ID:l9yjQtpJおれもSwiftもちょっと嗜んじゃおうかなw
0325デフォルトの名無しさん
2014/07/01(火) 23:21:33.88ID:Qf/S0Wzj0326デフォルトの名無しさん
2014/07/01(火) 23:23:50.43ID:B592/H3eSwiftで使う場合は、Obj-Cみたいにヘッダーだけ参照ってわけにいかないし
0327デフォルトの名無しさん
2014/07/01(火) 23:24:59.14ID:tLoVbtUq0328デフォルトの名無しさん
2014/07/01(火) 23:28:23.59ID:l9yjQtpJやっぱCってすげーって思う。それだけ蓄積されてる資産も大きいし
0329デフォルトの名無しさん
2014/07/02(水) 01:50:36.64ID:gjMteLus0330デフォルトの名無しさん
2014/07/02(水) 03:22:32.57ID:0X8S8x1qあのソース見て一日で書けたのはSwiftじゃなくてSpriteKitのおかげじゃんって思った
0331デフォルトの名無しさん
2014/07/02(水) 05:58:15.54ID:wD3UzLWLたぶん、Swiftでのみしか利用できない様々なAPIとか、環境とかがどんどん増えて自然にそっちに多数の人は誘導されてくんじゃないかな。
0332デフォルトの名無しさん
2014/07/02(水) 07:18:04.99ID:Q2HfdUEvSwiftの場合そもそもプラットフォームが残ってるのかという問題がなあ
iPhoneやMacが健在だとしても、もっとサーバーサイド比率が大きくなって
クライアント側は簡易なスクリプトが僅かに残ってるだけになってそう
■ このスレッドは過去ログ倉庫に格納されています