Swift part10 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/02/20(月) 10:00:13.40ID:ChbPWtRt0
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ

プログラミング言語Swift Part4
http://potato.2ch.net/test/read.cgi/mac/1484763495/

[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad]
http://potato.2ch.net/test/read.cgi/mac/1484217623/

Xcode part14
http://potato.2ch.net/test/read.cgi/mac/1476190499/

Swiftアンチスレ part1
http://echo.2ch.net/test/read.cgi/tech/1458491343/

前スレ
Swift part9
http://echo.2ch.net/test/read.cgi/tech/1476758084/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
12デフォルトの名無しさん (ワッチョイ 8b5b-fFgi)
垢版 |
2017/02/20(月) 21:53:42.29ID:4Xv+kGUd0
>>9
メソッド引数の最後のclosureは()から出して記述できるんでは?
ただ、
DispatchQueue.main.async(execute: { print("dic = ¥(dic)") })

の部分がPlaygroundでは実行されるのに、terminal.appでは実行されない?
13デフォルトの名無しさん (ワッチョイ 8b5b-fFgi)
垢版 |
2017/02/20(月) 22:01:34.57ID:4Xv+kGUd0
>>10
素晴らしい!
dispatchMain()
このグローバル関数が何をしてるのか?ようわからんけど。
2017/02/20(月) 22:05:11.29ID:E/pOlJmJ0
>>12
あらまほんとだ
ラベル関係なく使えるのね
15デフォルトの名無しさん (ワッチョイ 8b5b-fFgi)
垢版 |
2017/02/20(月) 22:12:48.75ID:4Xv+kGUd0
Executes blocks submitted to the main queue.

って事は、
DispatchQueue.main.async(execute: { print("dic = ¥(dic)") })
を実行しているみたいだ。dispatchMain()は。
exit(EXIT_SUCCESS)が無いと、dispatchMain()は永遠に実行待ちするみたい。

しょうが無いので、^Z + kill %1した。
2017/02/20(月) 22:14:47.48ID:SiY39E3I0
while task.state == .running {
RunLoop.current.run(mode: .commonModes, before: .distantFuture)
}
2017/02/20(月) 23:26:54.19ID:SiY39E3I0
extension URLSessionTask {
func wait() {
while state == .running {
RunLoop.current.run(mode: .commonModes, before: .distantFuture)
}
}
}

let task = ...dataTask(...) { ... }
task.resume()
task.wait()

これならdownloadTaskとか他のtaskでも、上のextensionで1つで全部対応できていいと思う
task.wait()だけで済むから、DispatchGroupとかDispatchSemaphoreみたいにenter/leave/signalとかが各所に散らばる面倒臭さもない

DispatchSemaphore使ってsyncDataTaskみたいなのextensionに書く例stackoverflowにあったけど
これでもいいけど他のtask使いたくなったとき、そのtaskのsyncバージョンをまた別に書かないといけないのが面倒臭い
http://stackoverflow.com/a/34308158

dispatchMainはexitの置き場所で困りそう
2つのtask待ち合わせるならどこにexit置くのと考えると問題を先送りしてるだけな気がする
2017/02/20(月) 23:34:47.43ID:6K9wp/bS0
>>4
そうそう
プログラミング言語史上類を見ない最強にエレガントでモダンな至高言語Swiftのスレだよ
Enjoy!
2017/02/21(火) 07:58:47.31ID:eTJT09tJ0
dispatchMain
> Applications ... must not call dispatchMain()

RunLoop
> You should never try to call the methods of an RunLoop object running in a different thread

なんでリファレンスで危ないから使うなって言われてるものを優先して挙げるのか
DispatchWorkItemのサンプルはよ、一番これが「モダン」だと思う
20デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/21(火) 08:14:40.71ID:3Vda5W860
>>19
次の3つのGlobal関数内では使ってはイケナイって書いてある。
今回はOK!

UIApplicationMain(_:_:_:_:) (iOS), NSApplicationMain(_:_:) (macOS), or CFRunLoopRun()
21デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/21(火) 08:17:33.97ID:3Vda5W860
>>20
追伸です。
19のコメントは間違ってました。
アプリ内で使うのは良く無いそうです。Terminal.Appで実行する時だけにした方が良いです。
2017/02/21(火) 08:36:49.36ID:EuRy1Wt8d
>>20
その顔文字みたいなのは何なの?...
間違いじゃないなら可読性絶望的すぎじゃね?
2017/02/21(火) 08:42:18.14ID:4QHQyE1ya
それが顔文字に見えるなら、お前そうとう病んでるよ
24デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/21(火) 08:47:28.88ID:3Vda5W860
>>22
セレクタでっせ。
メソッド名とラベルから構成される。ラベルが省略されたセレクタもあって、underscoreで省略可を示す訳だ。
C++で言う、シグネチャだわな。
25デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/21(火) 08:49:53.12ID:3Vda5W860
セレクタを記述できないと、Notificationを扱う事ができないので、mustな!
26デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/21(火) 08:53:52.12ID:3Vda5W860
Overload resolver(メソッド多重定義解決)はセレクタ情報を手掛かりに、どのメソッドを呼び出すのか?解決する訳だ。
参照:C++ FAQ
2017/02/21(火) 08:59:24.03ID:arZsGKioF
Objective-Cのときってもっとわかりやすい表記だったような
2017/02/21(火) 09:23:38.61ID:eTJT09tJ0
ObjCの表記を覚えてない => ObjC使ってない
Swiftの表記を自然に読み取れない => Swift使ってない

うーん、このどうしようもない感
2017/02/21(火) 09:35:17.94ID:HF5TYBzbM
swiftってiosアプリ書く以外であえて選んでるって人いるの?
2017/02/21(火) 09:40:38.00ID:wDwSQYHdd
macアプリ…
2017/02/21(火) 12:37:07.59ID:01HI8sK+d
>>29
IBM.........
2017/02/21(火) 12:40:37.23ID:HroqGx6Ep
>>29
SUZUKI.........
2017/02/21(火) 13:29:54.58ID:h4Mc9UUPM
>>19
current threadのrunloopインスタンスのmethodを呼び出しているのだからまったく問題ないだろ…
2017/02/21(火) 16:29:44.15ID:m+/zu2/z0
1日経って思ったけど、 >>17 じゃtaskを待ってはいるけど
completionHandlerを待ってはいないから >>5 への回答には全くなってなかったね
忘れてくれ
completionHandlerに入った時点でtask.stateは.completedだった
2017/02/21(火) 16:47:25.83ID:IX256A9wp
>>33
他に適したAPIがある上、while state がsleep 並にダサい
無限ループで状態監視とか日曜プログラマでも回避するコードだ
2017/02/21(火) 18:04:35.19ID:aFqTV30T0
特に無限ループがダサいとは思わないけどな
少し低いレイヤーを意識したコードではあると思うけど
2017/02/21(火) 18:08:20.55ID:aFqTV30T0
DispatchWorkItem版
if #availableはguard文だとコンパイル通らなかった‥

if #available(OSX 10.10, *) {
let queue = DispatchQueue(label: "queue", attributes: .concurrent)
let printTask = DispatchWorkItem { print("dic = ¥(dic)") }
let url = URL(string: "http://date.jsontest.com/";)!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let jsonData = data {
printJSON(jsonData)
queue.async(execute: printTask)
}
}

task.resume()
printTask.wait()
exit(EXIT_SUCCESS)

} else {
print("require OSX10.10 or newer"); exit(EXIT_FAILURE);
}
2017/02/21(火) 18:37:29.74ID:m+/zu2/z0
スクリプトモードでメインスレッドでメインキューを待つ方法と、URLSessionで同期的に実行する方法で問題をごっちゃにしてたな
>>5 の質問の本意がどっちにあるのかわからないけど、「スクリプトモードでメインスレッドでメインキューを待つ方法」ならRunLoopを回すのが正しい回答なはず


単純化すれば
DispatchQueue.main.async {
sleep(1)
print("Hello")
}
print("Done")
これでスクリプトモードでどうやって "Hello" を表示させるか
できれば"Hello"→"Done"の順序で

この場合DispatchSemaphore等ではwaitした時点でメインキューに入れた非同期タスクに永久にたどり着けないのでwaitで固まるので誤り
待ってるのも非同期タスクも両方メインだから
let sema = DispatchSemaphore(value: 0)
DispatchQueue.main.async {
sleep(1)
print("Hello")
sema.signal()
}
sema.wait()
print("Done")
2017/02/21(火) 19:10:04.95ID:IX256A9wp
>>36
ttp://swift.sandbox.bluemix.net/#/repl/58ac0f8c861c326c636916bf
一般常識として無限ループの状態監視するやつは死ねと思う
SIGNALが使えないほどの低レイヤーでそれが必要だとしてもsleepは入れる

ループ中にsleep入れないなら死ぬし、sleep入れるなら本末転倒だよねー
2017/02/21(火) 19:13:38.94ID:lTdRkQq/M
ビジーループと無限ループをごっちゃにして死ねとかアホか
2017/02/21(火) 19:17:25.53ID:IX256A9wp
いや、だからsleep入れろって言ってるだろw
2017/02/21(火) 20:44:27.44ID:5UhBXSO50
RunLoopのSwift実装読んだけど酷過ぎじゃね
returnAfterSourceHandledを強制trueにして
ブロッキングキューの利点ぶち壊すとか意味分からん

別実装で書いてみた
http://swift.sandbox.bluemix.net/#/repl/58ac26055d046936d91eba1c
2017/02/21(火) 21:21:46.46ID:5UhBXSO50
CFRunLoopRunInMode(,,false)がポンコツでなければ
キューが空の間はセマフォのwait等と同様に
待機状態になるはずでCPUは消費しない
2017/02/21(火) 21:33:17.76ID:jelvKUPR0
PR出してみたら?コードがあるなら前スレのAffineTransformよりはマシなレビューが期待できそう
2017/02/21(火) 21:58:36.49ID:5UhBXSO50
出すとしたら
https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/NSRunLoop.swift#L149
> CFRunLoopRunInMode(modeArg, ti, true)

ここの第3引数も指定出来て,
CFRunLoopRunInModeの戻り値をenumに入れ替えて返す
runのオーバーロード追加を要求するくらいか

とはいえコンソール系でのテスト実行以外では
UIApplicationMain等に任せる所だし放置になるのでは
2017/02/21(火) 22:21:50.16ID:jelvKUPR0
ならいらねーなw
2017/02/22(水) 08:12:05.22ID:l4ZVTbpn0
お疲れ様でした
2017/02/22(水) 12:33:22.98ID:pE0UWB3Fd
>>5
質問と直接関係ないけど

この文脈でのsleep()はc言語の、つまりPOSIX APIのsleep()が呼び出されると思うんだよな

無自覚にインラインCになっちゃうって、便利なのか?、危険なのか?
49デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/22(水) 12:36:17.73ID:XTvCwCCI0
>>48
Thread Type Method sleep(forTimeInterval:)
こんなのもあるね。秒単位ね。
50デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/22(水) 12:38:33.65ID:XTvCwCCI0
import class Foundation.Thread
RxSwiftのソース眺めてたら、見たことの無いimport文発見。

これに関してどっかに記述あるかなぁ?
51デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/22(水) 12:40:01.01ID:XTvCwCCI0
import class文を使えばコンパイル時間を短縮できたり、バイナリサイズを小さくできるのかな?
2017/02/22(水) 12:58:12.17ID:3150ESkMp
import Foundation // 42500 byte
import Foundation.NSData // 42484 byte
import class Foundation.NSData // 42500 byte
let data = NSData()

swiftc -O でビルド、なんで減るんだよwww
ABI安定(予定)の4で変わるだろうし、あんま意味ないな
2017/02/22(水) 13:12:01.50ID:T1tKwjPzH
名前空間の汚染だけじゃないの
でも種別を明記するのは定義側がうっかり変更されたときにすぐ気づくためかな
2017/02/22(水) 14:14:24.74ID:IUFwtIZk0
ABI安定は延期されたけど
2017/02/22(水) 14:35:19.19ID:3150ESkMp
Evolution/README読む限りだとSwift 4 Stage 1に入ってるぞ?MLでも特に上がってないよな
今更リスケしても気にしないけども

それはそれとして、Stage 2が切られてStage1/2にソース互換性ないよってのに笑った
もうSwift5としてリリースすればいいじゃんよ...
56デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
垢版 |
2017/02/22(水) 14:40:41.89ID:XTvCwCCI0
>>51
>import class
GRAMMAR OF AN IMPORT DECLARATION

import import kind module.symbol name
import module.submodule

ちゃんと書いてあるのね
2017/02/22(水) 14:52:08.92ID:atJ0ccfza
お前ら、今日学校は休みなの?
2017/02/22(水) 16:12:50.34ID:T1tKwjPzH
春休みだよ
59デフォルトの名無しさん (ワッチョイ 8b5b-fFgi)
垢版 |
2017/02/22(水) 21:15:19.95ID:2Tf2dKVi0
>>57
俺は職場からカキコしてる。
今はもちろん、自宅で寝る前だけど。
60デフォルトの名無しさん (スップ Sd7f-6x/Q)
垢版 |
2017/02/22(水) 21:23:54.82ID:SjZ14kj8d
>>59
カキコって何?
2017/02/22(水) 21:28:38.28ID:T1tKwjPzH
夏期講習だよ
2017/02/22(水) 21:29:18.39ID:FvFs5ugG0
生みの親が辞めた言語にしがみついてる人達のスレはここですか?
2017/02/22(水) 22:33:30.18ID:T1tKwjPzH
あきらめたら試合終了だよ
2017/02/22(水) 22:34:36.26ID:3150ESkMp
カキコって何年ぶりに見ただろうか
おっちゃん、ちょっと感慨深いぜ
2017/02/22(水) 22:49:26.78ID:TTVI91Rf0
>>62
自動制御を追求しにいった彼が
後に再登場してSwiftをDriftに進化させる王道展開を待つわ
2017/02/23(木) 08:06:48.33ID:RSteN8D40
パピコはまだみる
67デフォルトの名無しさん (スプッッ Sd4a-N8zA)
垢版 |
2017/02/23(木) 08:18:54.84ID:ft7494bRd
初カキコ、ドモッ…

だっけ?
68デフォルトの名無しさん (ワッチョイ 533c-JtgB)
垢版 |
2017/02/23(木) 08:23:03.50ID:KoyZyoDT0
今はなんていうんだ?
送信ボタンを押してるとか言えばいいのか?
2017/02/23(木) 08:59:05.67ID:0TBdMr700
rustライクなメモリ管理は本気だったのか
https://github.com/apple/swift-evolution/blob/master/README.md

まだ正式なプロポーサル上がってないけど、Stage1でABIレベルで仕様入れて、Stage2で文法決定なんかね
2017/02/23(木) 10:46:16.10ID:ohiXm4Od0
>>65
Ryzenのように?
でも、彼も自動運転に行っちゃったよ
2017/02/23(木) 12:56:53.57ID:dRZrz+vDp
shared_ptrを文法糖衣したARC同様に、unique_ptrを文法糖衣したナニカになる予感
それだけならアポーでも出来るだろうし、ObjCへのバックポートも可能だからアリだろ
2017/02/23(木) 22:43:45.10ID:YqEjQjyTM
何も書かなくて良いのに糖衣といえるのか
73デフォルトの名無しさん (ワッチョイ bfc9-LZzl)
垢版 |
2017/02/24(金) 09:25:16.26ID:/HtdY5ya0
>>70
Ted KremenekさんがRelease Managerやってるよ。Swift4の。
2017/02/25(土) 07:58:58.53ID:5NvJoEP20
至高の言語Swiftはどこまでアップデートが続くのかな
至高中の至高に達するのはいつ?
2017/02/25(土) 10:16:39.25ID:A9nIMvuga
すでに至高の域には達してるだろ
今は最後のピストン運動が激しくなって絶頂に向かってるところだ
2017/02/25(土) 12:16:56.70ID:xXEZYycv0
クリスだけ先に抜けちゃったけどな
2017/02/25(土) 12:25:30.42ID:hUBRL+mAp
1年後?のSwift 4 Stage 2で言語仕様の破壊変更加えて
2年後のSwift5でコード下位互換を保証して
4年後のSwift6でコード下位互換をしつつ、文法のブラッシュアップしてようやく至高に至る

そこまでswiftコミュニティが死んでなければだけど、AppleとIBMは諦めろと思う
荒らしに来てる子たちはまだまだ遊べるよ、やったね
2017/02/25(土) 13:12:00.62ID:vyst4/NK0
至高ってどっち向けに至高かで全然違うとは思うが、、、

FortranもCも進化をやめる気が無いのを見ると
いつまでも変化し続けるんだろうね、言語って
COBOLは知らん


c++はもはや俺には理解できない領域まで到達してるが
さらに進化を加速しようとしている
変化速度で至高を目指しているのか?
2017/02/25(土) 13:15:45.72ID:9rgS5/VKp
>>76
クリストスだけで先に逝っちゃったに空目した
80デフォルトの名無しさん (ワッチョイ 7f5b-JtgB)
垢版 |
2017/02/26(日) 19:53:22.76ID:ywDEPWcp0
WWDC2017まであと3ヶ月ちょっとにまで迫って来た。
Swift3.1ももうそろそろXcode8.3と共に出荷かな!
2017/02/27(月) 07:56:29.46ID:JlIWpVbu0
Swift 4 Stage 1 すらWWDCには間に合いそうにないな
言語仕様の破壊はもう気にしてないから、betaやってた頃みたいに半年周期でリリースしてくれよなぁ
2017/02/27(月) 12:43:01.65ID:gJTX31H50
究極の言語たちとの戦いは続く……
2017/02/27(月) 22:04:34.17ID:S02AV9TBd
至高と究極と最強と最高と極限と元祖と本家で戦うんですね
2017/02/27(月) 22:24:59.63ID:duMjIsYep
自ら限界を定めてしまったらそこで発展は終わってしまうからな
2017/02/28(火) 12:37:12.05ID:+hx/19pVd
直感的な文法と安全性を兼ね備えたパーフェクト言語のスレはここですか
86デフォルトの名無しさん (スプッッ Sd4a-moPN)
垢版 |
2017/02/28(火) 12:39:25.27ID:rcWZYEudd
クラスの配列のディープコピーのやり方を教えてちょんまげ。

助けて太い人っ!
2017/02/28(火) 13:13:31.25ID:KiqJd28Qp
敬虔にググりたまへ
さすれば汝に福音が齎されるであろう
アーメン
2017/02/28(火) 14:31:53.07ID:ydx77xTP0
ここで文字列の扱いを議論してた荒らしがrustスレに行って暇になったなぁ
文法の固定されたrustより、文法があと5年は変わり続けることが約束されたswiftの方が面白いのに...
三項演算子とか{}ブロックとか、基礎的な文法はswiftならまだまだ変わりうるぜ?
2017/02/28(火) 17:06:29.89ID:XVJCzCfXd
さすが至高の言語swift
2017/03/01(水) 08:24:41.29ID:8bxhIAJup
>>89
そんなんじゃ誰も釣れないだろ、、、
もっと頑張れ
2017/03/04(土) 06:31:40.70ID:kx5I/idI0
コードガールコレクションはまだか?
2017/03/04(土) 07:14:04.97ID:WzJG/JYs0
超絶至高言語Swift
93デフォルトの名無しさん (アウアウオー Sabf-0QZk)
垢版 |
2017/03/05(日) 10:30:38.29ID:Nn8WRk/za
var a = 0
var b = 0
var array = [a, b]
a = 1
array[0] ←これを1にしたい
array[1] = 10
b ←これを10にしたい

どうすればいい?
2017/03/05(日) 10:33:08.38ID:4SdvbjFEa
そんなことできる言語はないと思うけど
なんでそんなことしたいの?
2017/03/05(日) 10:49:38.94ID:oTFtJ+xbd
>>93
ちょっと何言ってっかわかんないっすね
96デフォルトの名無しさん (アウアウオー Sabf-0QZk)
垢版 |
2017/03/05(日) 11:01:41.19ID:Nn8WRk/za
複数のIntやCGFloat(クラスではない型)を、個別でアクセスと、配列化してインデックスでアクセスを出来るようにして、状況に応じて切り替えたいのです。C言語ならポインタの配列にすればよいのですが、Swiftでどうやるのかなと思いまして。

int a = 0;
int b = 0;

int *arr[2];
arr[0] = &a;
arr[1] = &b;

a = 1;
printf("%d¥n", *arr[0]); ←1が出る

*arr[1] = 10;
printf("%d¥n", b); ←10が出る
2017/03/05(日) 11:18:30.10ID:4SdvbjFEa
なんだ、ポインター使いたいのか

UnsafeMutablePointer
とかググると使いかた出てくるよ
2017/03/05(日) 11:21:57.99ID:4SdvbjFEa
こんな感じで

typealias IntPointer = UnsafeMutablePointer<Int>

var a_ptr = IntPointer.allocate(capacity: 1)
var b_ptr = IntPointer.allocate(capacity: 1)
a_ptr.pointee = 0
b_ptr.pointee = 0

var array = [a_ptr, b_ptr]

a_ptr.pointee = 1
print(array[0].pointee) ←1が出る

array[1].pointee = 10
print(b_ptr.pointee) ← 10が出る

a_ptr.deallocate(capacity: 1)
b_ptr.deallocate(capacity: 1)
2017/03/05(日) 11:28:57.98ID:4SdvbjFEa
Alloc/Dealloc 使わないバターン

typealias IntPointer = UnsafeMutablePointer<Int>

var a = 0
var b = 0
var a_ptr = IntPointer(&a)
var b_ptr = IntPointer(&b)

var array = [a_ptr, b_ptr]

a_ptr.pointee = 1
print(array[0].pointee) ←1が出る

array[1].pointee = 10
print(b_ptr.pointee) ←10が出る
100デフォルトの名無しさん (アウアウオー Sabf-0QZk)
垢版 |
2017/03/05(日) 11:44:51.09ID:Nn8WRk/za
ああ、>>99だと、ほぼそのまま置き換えできますね。ありがとうございます。
2017/03/05(日) 12:06:49.29ID:Nn8WRk/za
pointeeを隠蔽してこうなりました。

struct IntPointerStruct {
var a_ptr: IntPointer
var b_ptr: IntPointer

subscript(index: Int) -> Int {
get {
switch index {
case 0: return a_ptr.pointee
case 1: return b_ptr.pointee
default: return 0
}}
set {
switch index {
case 0: a_ptr.pointee = newValue
case 1: b_ptr.pointee = newValue
default: break
}}}}

var a = 0
var b = 0
var array = IntPointerStruct(a_ptr: &a, b_ptr: &b)
a = 1
print(array[0]) ←1が出ます!!
array[1] = 10
print(b) ←10が出ます!!

これにするか >>99にするか、作りながら判断します。ありがとうございました。
2017/03/05(日) 12:16:18.70ID:EQCsqksH0
さすが、>>96のシンプルな表記がクッソごちゃごちゃな表記になるね
でもエレガントなのさ
Swiftだからね
103デフォルトの名無しさん (ワッチョイ db5b-0QZk)
垢版 |
2017/03/05(日) 12:28:46.65ID:BaPS9EAx0
>>99
素晴らしい!

import Foundation
var a = NSNumber(value: 1)
var b = NSNumber(value: 2)

var ar = NSMutableArray()
ar.add(a)//, b])//(array: [a, b])
ar.add(b)//, b])//(array: [a, b])
a = 3
print(ar)
print(a)
NSNumber使えばできるのか?と思いきや、失敗!
2017/03/05(日) 13:34:52.66ID:EQCsqksH0
Swift最高!!!!!!!!!
2017/03/05(日) 13:55:13.01ID:Awv6PdXpp
UnsafePointer周りの公開IFは2.0から3.0までですら二転三転したから信用して使わない方が良いぞ、多分また変わる
Xcodeの自動コンバートでサポートしきれない変更だったから毎度手間だった

その覚悟をもって遊ぶなら楽しいオモチャではある
すごく日曜プログラマ向け
2017/03/05(日) 14:19:22.96ID:xyCUFaW+d
そもそもSwift自体が意識高い日曜プログラマー向けなんだから気にしない気にしない
2017/03/05(日) 14:37:19.10ID:rxgD3rR00
>>78
他の言語は基本後方互換はそのままだから
別にいいんだけど

swiftは後方互換がなくなるからな
そこは根本的に違う
2017/03/05(日) 14:56:08.46ID:X99UGKjOa
どの言語もメジャーバージョンアップ時には完全後方互換じゃない気がするが
ただ、頻度が少ないだけで
2017/03/05(日) 14:59:33.17ID:k0Z4Rrjg0
完全広報五感の縛りは進化を妨げる
ツールでコンバートさせるswiftとアプローチは正解
さすが至高の言語swich
2017/03/05(日) 16:21:43.23ID:Awv6PdXpp
はっはっは
マイナーバージョンアップで互換性を壊すのがswiftだ
そんじゃそこらの言語と一緒にして貰っちゃ困るぜ?
2017/03/05(日) 17:00:49.02ID:f1XixyjT0
ExpressibleByIntegerLiteral使えばもうちょいシンプルにできる?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況