2ちゃんねる★スマホ版★■掲示板に戻る■全部1-最新50

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

1 :
2017/02/20(月) 10:00:13.40 ID: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
2 :
デフォルトの名無しさん (ワッチョイ 7ba1-vagz)
2017/02/20(月) 11:06:31.94 ID:Gb72M66o0
< `∀´>ニダー
3 :
2017/02/20(月) 13:14:50.34 ID:mI2RJMjC0
さて、また荒らしと文字列の扱いについて談笑しようじゃないか
4 :
2017/02/20(月) 13:18:27.57 ID:ij1Njg09d
極上の言語のスレはここかな?
5 :
デフォルトの名無しさん (ワッチョイ 8bc9-ykbm)
2017/02/20(月) 16:05:25.21 ID:IDSTiL890
WebAPIを叩く最小限のコードを書いています。
Terminal.Appで実行したところ、動くには動くのですが、最後のsleep文をコメントアウトすると、結果が表示されません。
sleep文はダサいので、うまい具合にbackgroundで実行中のThreadを待ち合わせる方法は無いでしょうか?なお、Swift3.0.2です。

import Foundation
var dic: Any = ["": ""]

func printJSON(_ data: Data) {
do {
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
dic = json
print(json)
} catch {
print("parse error!")
}

}
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)
DispatchQueue.main.async(execute: { print("dic = ¥(dic)") })
//mainスレッドを捕まえて実行
}
}
task.resume()
print("OK")
sleep(1) // 1秒待つ
6 :
2017/02/20(月) 17:57:22.66 ID:E/pOlJmJ0
Dispatch Group使ってwaitするか
DispatchWorkItem使ってwaitするか
かな
7 :
2017/02/20(月) 18:12:47.50 ID:mI2RJMjC0
NSConditionでの実装例
ttp://swift.sandbox.bluemix.net/#/repl/58aab29626c3ba5cbe1d44ee

文字列でなんやかんや話してたエロい人たちがより良い例を出してくれると信じてる
8 :
2017/02/20(月) 20:20:31.52 ID:jVgNOv8dd
>>5
Sleep()がカッコ悪いのでsyncで呼ぶ
9 :
2017/02/20(月) 21:23:20.98 ID:E/pOlJmJ0
let task = URLSession.shared.dataTask(with: url) { data, response, error in

動きがなんかおかしいと思ったら
これcompletionHandler設定できてないような
10 :
2017/02/20(月) 21:45:53.42 ID:E/pOlJmJ0
最後にdispatchMain()を追加して明示的にexit()すればいいみたい
http://stackoverflow.com/questions/31944011/how-to-prevent-a-command-line-tool-from-exiting-before-asynchronous-operation-co

#! /usr/bin/env swift
import Foundation

var dic: Any = ["": ""]

func printJSON(_ data: Data) {
do {
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
dic = json
print(json)
} catch {
print("parse error!")
}

}

let url = URL(string: "http://date.jsontest.com/")!
let task = URLSession.shared.dataTask(with: url, completionHandler: { data, response, error in
if let jsonData = data {
printJSON(jsonData)
DispatchQueue.main.async(execute: {print("dic = ¥(dic)"); exit(EXIT_SUCCESS)})
}
})

task.resume()
print("OK")
dispatchMain()
11 :
2017/02/20(月) 21:51:31.66 ID:E/pOlJmJ0
関係ないけどこの外部ステートへの依存の仕方はちょっと気持ち悪く感じる
var dic: Any = ["": ""]
12 :
デフォルトの名無しさん (ワッチョイ 8b5b-fFgi)
2017/02/20(月) 21:53:42.29 ID:4Xv+kGUd0
>>9
メソッド引数の最後のclosureは()から出して記述できるんでは?
ただ、
DispatchQueue.main.async(execute: { print("dic = ¥(dic)") })

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

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

しょうが無いので、^Z + kill %1した。
16 :
2017/02/20(月) 22:14:47.48 ID:SiY39E3I0
while task.state == .running {
RunLoop.current.run(mode: .commonModes, before: .distantFuture)
}
17 :
2017/02/20(月) 23:26:54.19 ID: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置くのと考えると問題を先送りしてるだけな気がする
18 :
2017/02/20(月) 23:34:47.43 ID:6K9wp/bS0
>>4
そうそう
プログラミング言語史上類を見ない最強にエレガントでモダンな至高言語Swiftのスレだよ
Enjoy!
19 :
2017/02/21(火) 07:58:47.31 ID: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.71 ID:3Vda5W860
>>19
次の3つのGlobal関数内では使ってはイケナイって書いてある。
今回はOK!

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

うーん、このどうしようもない感
29 :
2017/02/21(火) 09:35:17.94 ID:HF5TYBzbM
swiftってiosアプリ書く以外であえて選んでるって人いるの?
30 :
2017/02/21(火) 09:40:38.00 ID:wDwSQYHdd
macアプリ…
31 :
2017/02/21(火) 12:37:07.59 ID:01HI8sK+d
>>29
IBM.........
32 :
2017/02/21(火) 12:40:37.23 ID:HroqGx6Ep
>>29
SUZUKI.........
33 :
2017/02/21(火) 13:29:54.58 ID:h4Mc9UUPM
>>19
current threadのrunloopインスタンスのmethodを呼び出しているのだからまったく問題ないだろ…
34 :
2017/02/21(火) 16:29:44.15 ID:m+/zu2/z0
1日経って思ったけど、 >>17 じゃtaskを待ってはいるけど
completionHandlerを待ってはいないから >>5 への回答には全くなってなかったね
忘れてくれ
completionHandlerに入った時点でtask.stateは.completedだった
35 :
2017/02/21(火) 16:47:25.83 ID:IX256A9wp
>>33
他に適したAPIがある上、while state がsleep 並にダサい
無限ループで状態監視とか日曜プログラマでも回避するコードだ
36 :
2017/02/21(火) 18:04:35.19 ID:aFqTV30T0
特に無限ループがダサいとは思わないけどな
少し低いレイヤーを意識したコードではあると思うけど
37 :
2017/02/21(火) 18:08:20.55 ID: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);
}
38 :
2017/02/21(火) 18:37:29.74 ID: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")
39 :
2017/02/21(火) 19:10:04.95 ID:IX256A9wp
>>36
ttp://swift.sandbox.bluemix.net/#/repl/58ac0f8c861c326c636916bf
一般常識として無限ループの状態監視するやつは死ねと思う
SIGNALが使えないほどの低レイヤーでそれが必要だとしてもsleepは入れる

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

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

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

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

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

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

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

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

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

import import kind module.symbol name
import module.submodule

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

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

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

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

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


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

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

どうすればいい?
94 :
2017/03/05(日) 10:33:08.38 ID:4SdvbjFEa
そんなことできる言語はないと思うけど
なんでそんなことしたいの?
95 :
2017/03/05(日) 10:49:38.94 ID:oTFtJ+xbd
>>93
ちょっと何言ってっかわかんないっすね
96 :
デフォルトの名無しさん (アウアウオー Sabf-0QZk)
2017/03/05(日) 11:01:41.19 ID: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が出る
97 :
2017/03/05(日) 11:18:30.10 ID:4SdvbjFEa
なんだ、ポインター使いたいのか

UnsafeMutablePointer
とかググると使いかた出てくるよ
98 :
2017/03/05(日) 11:21:57.99 ID: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)
99 :
2017/03/05(日) 11:28:57.98 ID: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.09 ID:Nn8WRk/za
ああ、>>99だと、ほぼそのまま置き換えできますね。ありがとうございます。
101 :
2017/03/05(日) 12:06:49.29 ID: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にするか、作りながら判断します。ありがとうございました。
102 :
2017/03/05(日) 12:16:18.70 ID:EQCsqksH0
さすが、>>96のシンプルな表記がクッソごちゃごちゃな表記になるね
でもエレガントなのさ
Swiftだからね
103 :
デフォルトの名無しさん (ワッチョイ db5b-0QZk)
2017/03/05(日) 12:28:46.65 ID: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使えばできるのか?と思いきや、失敗!
104 :
2017/03/05(日) 13:34:52.66 ID:EQCsqksH0
Swift最高!!!!!!!!!
105 :
2017/03/05(日) 13:55:13.01 ID:Awv6PdXpp
UnsafePointer周りの公開IFは2.0から3.0までですら二転三転したから信用して使わない方が良いぞ、多分また変わる
Xcodeの自動コンバートでサポートしきれない変更だったから毎度手間だった

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

swiftは後方互換がなくなるからな
そこは根本的に違う
108 :
2017/03/05(日) 14:56:08.46 ID:X99UGKjOa
どの言語もメジャーバージョンアップ時には完全後方互換じゃない気がするが
ただ、頻度が少ないだけで
109 :
2017/03/05(日) 14:59:33.17 ID:k0Z4Rrjg0
完全広報五感の縛りは進化を妨げる
ツールでコンバートさせるswiftとアプローチは正解
さすが至高の言語swich
110 :
2017/03/05(日) 16:21:43.23 ID:Awv6PdXpp
はっはっは
マイナーバージョンアップで互換性を壊すのがswiftだ
そんじゃそこらの言語と一緒にして貰っちゃ困るぜ?
111 :
2017/03/05(日) 17:00:49.02 ID:f1XixyjT0
ExpressibleByIntegerLiteral使えばもうちょいシンプルにできる?
112 :
デフォルトの名無しさん (ワッチョイ dbc9-zofg)
2017/03/05(日) 23:02:32.93 ID:nindsAFW0
>>110
マイナンバーにみえた
113 :
デフォルトの名無しさん (スプッッ Sd3f-n2KM)
2017/03/06(月) 12:37:12.05 ID:VBrHzi13d
>>96
名前でのアクセスとインデックスでのアクセスを両立したいってことかな?
俺だったら、名前→インデックスの辞書を持つ専用のクラスを作る
114 :
2017/03/08(水) 00:11:43.50 ID:WpsGt1AL0
正直Swift熱は若干冷めてきたように思う
サーバーサイドSwiftとかもちっと頑張ってくれんかなあ
115 :
2017/03/08(水) 00:19:58.38 ID:QVjjY+1Na
今いちばんホットな言語は何ですか?
116 :
2017/03/08(水) 00:45:04.17 ID:6Gp+/qzY0
2.0, 2.1くらいまではまだswiftが業務に利用できると騙された奴がいたけど、さすがにもう居ないから...
こんな不安定な言語とランタイム、信仰心/遊び心以外で使うのは無理だよ
5になってAPI, ABIが安定したら再燃することを祈ってる

>>115
swift
他の信仰言語は文法,API,ABI他諸々が下位互換を保証するフェーズにまで枯れて冷めてる
117 :
2017/03/08(水) 00:45:43.69 ID:6Gp+/qzY0
typo. 信仰言語 => 新興言語
118 :
2017/03/08(水) 01:04:02.77 ID:xBMafHxz0
え、間違ってないよ?
119 :
2017/03/08(水) 01:09:29.16 ID:tXLV2/vj0
>>115
はあ?
最もエレガントかつモダンでいらっしゃる超絶至高言語Swift様に決まってんだろ
馬鹿なの死ぬの?
120 :
2017/03/08(水) 01:17:04.53 ID:Yw8lC4YB0
さすが究極幻想言語swift
121 :
2017/03/08(水) 10:45:59.40 ID:mMaqGsPC0
ブームは確かに去り始めてる気はする。
けど言語はまったく枯れ初めていないっていう現実。

ところで今年のtryswiftはどうだったの?
相変わらずswiftと関係ない話題ばかりだった?
122 :
デフォルトの名無しさん (ワッチョイ dbc9-pTz+)
2017/03/08(水) 10:50:21.01 ID:3oZRIdEd0
>>115
JavaScript 2017
123 :
2017/03/08(水) 12:14:46.30 ID:LioYldeQ0
>>115
Scala, Groovy をミックスした、Android用のJVM言語、Kotlin
124 :
2017/03/08(水) 14:36:25.82 ID:CPYQaxWN0
3への移行がダルすぎる
みんなもうやったんだろうな、、
2、3と共に生きるわ
125 :
デフォルトの名無しさん (ワッチョイ dbc9-pTz+)
2017/03/08(水) 14:52:44.76 ID:3oZRIdEd0
RxSwift3.20に付属のPlayground重すぎ。特にCombining_Operatorsが。
マシンパワーが不足なのか?特にCPU Power。メモリ搭載量(16GB)には問題無いみたいだが、IvyBridge世代のcore i5 2coreには辛いのか?

同じ感想の人入れば、レスお願いします。
126 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/09(木) 11:26:23.15 ID:pYIrqD7n0
RxSwift3.2.0を動かしてます。SubjectはObservableかつObserverだと言うので
次のコードをiOSアプリ内で動かしてみました。
import RxSwift
let sb = BehaviorSubject(value: 100)
let v = Variable(2000)
_ = v.asObservable().bindTo(sb)
print(v.value)
_ = sb.subscribe{print($0)}

// 2000
// next(2000)

このコードがPlaygroundで動きません。ObservableはbindToメソッドなんて
持ってないよ!と怒られます。どうやれば、Playgroundで動かせますか?
127 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/09(木) 11:27:22.08 ID:pYIrqD7n0
ちなみにmacOSアプリ内でも動きました。
Playground内だけで動きません。ウェーン!
128 :
2017/03/09(木) 12:31:55.48 ID:x6aOWZGA0
>>126
import RxCocoaを追加すれば動いたよ
129 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/09(木) 12:43:29.12 ID:pYIrqD7n0
>>128
まじっすか?
Playground execution failed: error: MyPlayground2.playground:1:8: error: no such module 'RxCocoa'
import RxCocoa

当方では、moduleを見つけてくれないです。
130 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/09(木) 12:52:23.68 ID:pYIrqD7n0
もしやRxCocoaをbuildしないといけないのか?もう一回!
131 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/09(木) 12:54:49.62 ID:pYIrqD7n0
みなさん、あんがと!
bindToが動きました。
no such module when openning playground
でヒットしました。
132 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/09(木) 16:25:15.49 ID:pYIrqD7n0
RxCocoa-iOSのbuild時間 46.837sec
でした。
結構、時間かかります。
133 :
2017/03/12(日) 14:07:26.28 ID:Zur4EQ5Na
TIOBE IndexでSwiftが初のトップ10入り
https://developers.srad.jp/story/17/03/11/2027223/
134 :
デフォルトの名無しさん (ワッチョイ f35b-aox5)
2017/03/12(日) 14:39:16.17 ID:uNivVhq+0
>>133
Java, C++には遠く及ばないんだよねぇ。
おれ、Java嫌いなんだよねぇ。けど、TIOBE Programmer’s Indexでは1stなんだよねぇ。
135 :
2017/03/12(日) 14:44:12.31 ID:VXGiwpO5p
Swiftの敵は、Java、C++じゃなくて、Objective-Cだから
136 :
2017/03/12(日) 16:28:04.10 ID:PM9jOmml0
っていうかObjective-Cを初めて上回ったっていうのが驚きだわ
感覚的にはObjective-Cはとうの昔に終わってて
もうみんなSwift使ってるとおもってたんだが
137 :
2017/03/12(日) 16:36:28.34 ID:BRpGzvRUa
ん?
記事には、「2015年12月にはObjective-Cを初めて上回り」
って書いてあるが

文盲かな
138 :
2017/03/12(日) 16:44:20.65 ID:8TfkE0k40
なぜSwiftを使うのか
それはApple様御用達だからである
つまり超絶至高言語であることが生まれながらにして確定している言語
後光なんかも射しちゃってるレベル
139 :
2017/03/12(日) 16:52:43.56 ID:l7eMy7Cnd
ちょいちょい順位ネタ貼られるよね
そんなに「宣伝」しないといけないほどひどい言語なの?Swiftって
140 :
2017/03/12(日) 17:01:07.62 ID:BRpGzvRUa
人に聞くんじゃねーよ
自分で考えろ
141 :
2017/03/12(日) 17:40:23.34 ID:l7eMy7Cnd
申し訳ございませんでした
142 :
デフォルトの名無しさん (ワッチョイ f35b-aox5)
2017/03/12(日) 19:52:14.06 ID:uNivVhq+0
俺にとってはSwiftはRubyの皮を被ったC++
Generics標準ライブラリが充実してるのがGood。
文字列Stringが最初から標準ライブラリに入ってるのもoK.
143 :
2017/03/12(日) 20:16:05.51 ID:tiJBFb010
え、文字列がない言語とかあんの?
144 :
デフォルトの名無しさん (ワッチョイ f35b-aox5)
2017/03/12(日) 20:48:02.02 ID:uNivVhq+0
>>143
言い方悪かった。
文字列の扱いがStringに統一されているのが良さげ。

参考:Visual C++
char 型のナロー文字リテラル。たとえば 'a'
wchar_t 型のワイド文字リテラル。たとえば L'a'
char16_t 型のワイド文字リテラル。たとえば u'a'
char32_t 型のワイド文字リテラル。たとえば U'a'

もう、ワケワカメ!
このほかにもCStringとStd::Stringもある。
145 :
デフォルトの名無しさん (ワッチョイ f73c-K8Mp)
2017/03/12(日) 21:04:17.82 ID:ejYR6n6Q0
>>143
C言語
146 :
2017/03/12(日) 21:16:05.03 ID:8TfkE0k40
C言語ってやっぱり高級感のバランスがいいと思うわ
で、その良さをそのままにオブジェクト指向を導入したObjective-Cは...

おっとここまでにしておかなくては
147 :
2017/03/12(日) 21:24:32.40 ID:bJtMC+h00
>>144
C++11でstd::stringが標準ライブラリに入ってるんだよなぁ
未だに拡張文字列ライブラリしか見てない時代遅れ乙
148 :
2017/03/12(日) 21:51:36.28 ID:T4N3k6YJ0
>>142
Rubyとは普通に違う気がするが…
Groovy(Kotolin)が見た目の文法は一番近い
Swiftは関数のラベルのところが独特
149 :
2017/03/12(日) 23:08:30.79 ID:yhlL05Nv0
>>147
C++98な
VC++6.0のときからある
当時はTCHAR対応でtstring使ってたけど
150 :
2017/03/13(月) 03:24:20.32 ID:A9v11X3F0
>>143
Erlang
151 :
デフォルトの名無しさん (ワッチョイ d2ed-lBbp)
2017/03/13(月) 06:01:28.93 ID:hyVcDS3T0
152 :
2017/03/13(月) 08:37:47.51 ID:W+gruSmy0
collection.map { ..... } 
の書き方は
collection map {....}.
ってかくsmalltalkの書き方の真似だよ。
rubyでは{...}がオブジェクトじゃないからこうするんだけど
swiftは{...}がオブジェクトだけど関数の()が省略できないから
という理由でこうするのだろうね。
153 :
2017/03/13(月) 08:46:31.00 ID:W+gruSmy0
>>152をもしよむには、そこの間に:忘れたから各自補っておくように。
154 :
2017/03/13(月) 13:44:46.91 ID:l2t9P+Aja
>>152をもしよむには、Smalltalkのブロックが [ ] になってないからこれも各自脳内置換するように。
155 :
2017/03/13(月) 16:20:02.25 ID:VusjWGEdM
>>152
それ単にブロックを受け取るキーワードメッセージを一番最後に持ってきてるだけでしょ。
ブロック引数を特別扱いして不完全だけど有用な文法を作り出したrubyが真似たと言うにはちょっと…
156 :
デフォルトの名無しさん (ワッチョイ d2ed-lBbp)
2017/03/13(月) 20:11:52.15 ID:hyVcDS3T0
>>152
Swift や Ruby のメソッド map に相当する
Smalltalk のメッセージは collect だよん

まとめよう
[Swift]
・collection.map({ ..... })  // 一般的(常識的?)な書き方
・collection.map() { ..... }  // クロージャを引数リストの直後へ移動できる
・collection.map { ..... }  // さらには丸カッコ () も省略できる
[Ruby]
・collection.map(lambda { ..... })  # Ruby だと一般的ではない
・collection.map() { ..... }  # ブロックを引数リストの直後へ移動できる(ブロック付きメソッド呼び出し)
・collection.map { ..... }  # さらには丸カッコ () も省略できる(これが普通の Ruby らしい書き方)
[Smalltalk]
・collection collect: [ ..... ]  "書き方はこれだけ"

たったこれだけで Swift の Tailing Closure は「smalltalkの書き方の真似」って言い切っちゃう>>152さんて素敵(棒
157 :
2017/03/13(月) 20:27:44.22 ID:OdMsjmQCp
よくわかんないけど
だからSmalltalk系譜のObjCは最高!Swiftはクソ!!
っていう荒らしの流れでおk?

swiftがperlとpyhtonとrubyとphpとjavaとc/c++とkotlinとgoとrustとetc....に似てるって
swift betaが出た当初から言われてたのに「SwiftはRubyの皮を被ったC++ 」とかヘソで茶が沸くよね
あっちこっちの言語から文法パクってるのに自分が知ってるRubyだけしか注目できてないだけじゃねーかw
158 :
2017/03/13(月) 21:02:12.46 ID:W+gruSmy0
rubyの言いたいことはメソッドの定義をメソッドの使用する形で書けるようにするって
事で、
smalltalkの言いたいのはオブジェクトの定義をオブジェクトにメッセージを送る形で
書きたかったということだから発想は同じ。
例えばC言語だと定義はint f(){}の形だけど使うのはf()の形だから同じじゃないからね。
159 :
デフォルトの名無しさん (ワッチョイ d2ed-lBbp)
2017/03/13(月) 21:41:18.89 ID:hyVcDS3T0
>>157
せっかくSwift と似ている言語として「perlとpyhtonとrubyとphpとjavaとc/c++とkotlinとgoとrust」を
挙げてくれたのだから、各言語ユーザが自分の知っている言語に注目して、似ている所をカキコすれば
いいのではないかと思われ

たとえば、もし仮に Swift で内包表記が採用されていたなら、
「Swift は Pythonから内包表記をパクった」と主張できるよね

あるいは「Swift の Tailing Closure と似ている言語は XXX がある(Ruby だけじゃない)」といふ
意見が出てくれれば嬉しい限りですねえ
160 :
2017/03/13(月) 21:48:14.79 ID:4Ob213Q20
Haskellにも似てるらしいぞ

CPUの歓声が聞こえてくるところが
161 :
2017/03/13(月) 21:54:10.12 ID:rWhPvBOB0
golangに似てるところ上げてみろよw
162 :
2017/03/13(月) 22:06:52.68 ID:h57/U2+30
>>151
その程度の類似でRubyの皮を被ったとは言わんだろ
163 :
2017/03/13(月) 22:14:02.97 ID:h57/U2+30
>>156
どうてもいいけどRubyはcollectの別名がmapだよ
普通はmapのほうを使うけどね
164 :
2017/03/14(火) 06:26:59.13 ID:oHQ/8mFsp
>>161
defer文法パックったところ
165 :
2017/03/14(火) 16:49:31.85 ID:+ZD30cPg0
他の言語の影響受けてるのは明言してるんだし
パクッてオリジナル主張してるわけじゃないから何に似てようが別に良くね

話の発端っぽい>>142も「俺にとっては」とあるから
単に当人が知ってる範囲内での感想だろう
166 :
2017/03/15(水) 04:07:35.03 ID:Z1jXyE+K0
別に良いよ、Swiftの世間話として談笑してるだけだよー

SwiftはPythonから関数引数の順不同指定可をパクった
・・・が2.xのいつぞやのタイミングで仕様ドロップと相成って悲しい
確かにSwiftで使うメリット少なくて利用者いなかったかもしれんけど、わざわざ実装したのに勿体ない
167 :
2017/03/15(水) 10:07:37.18 ID:WCbgXlGea
Swiftは言語界の中国人ですね
168 :
2017/03/15(水) 11:14:37.72 ID:qed+p8OGa
>>166
名前付き引数の順不同化はSmalltalkのメッセージ式を見たら誰でも最初に思いつくアイデアだけど
似たようなObjective-Cのやり方を内部的に引きずっていたらきっと難しいだろうね
ちょっと試すくらいなら簡単だけど、すぐに破綻をきたす
169 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/15(水) 13:53:38.07 ID:62YvBKwJ0
>>165
話の発端「Rubyの皮」、の発言人です。

Pascal, Clang, Fortran, Lisp, Ruby, Visual Basic, C++を触ってきた経験からの
感想です。Rubyの皮を被ったC++ってのは。

Swiftはいろんな言語の影響を受けてる事が判りました。

今はJavaScriptを触りたいけど、時間が無い。
170 :
2017/03/15(水) 14:09:22.47 ID:MTxLUUdIa
COBOLの経験のない奴には言語を語る資格はない
171 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/15(水) 14:33:46.75 ID:62YvBKwJ0
>>170
なぜでしょう?
172 :
2017/03/15(水) 14:34:53.40 ID:7YWEdixI0
>>169
javascriptはやめとけ
173 :
2017/03/15(水) 14:39:23.26 ID:MTxLUUdIa
>>171
プログラミング言語の黎明期に名を馳せた大御所だから
言語の歴史と発展を語る上でその存在は無視できない
174 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/15(水) 14:58:49.09 ID:62YvBKwJ0
>>173
では、その大御所は現代のプログラミング言語にどの様な、影響を与えているのでしょうか?
175 :
2017/03/15(水) 15:20:22.31 ID:MTxLUUdIa
影響というより、その冗長性と非モダンな特徴からくる反面教師としての側面の方が大きいかな
COBOLを知っていないと実感をもって指摘はできないだろうけど
176 :
2017/03/15(水) 16:05:11.06 ID:xlyceK/o0
>>170
老害はシネy
177 :
デフォルトの名無しさん (ワッチョイ 33c9-WjpG)
2017/03/15(水) 17:00:38.28 ID:62YvBKwJ0
>>176
まあまぁ、そんな過激な事言わずに!
ってか、ボキャ貧すぎる。
178 :
2017/03/15(水) 17:21:51.12 ID:xlyceK/o0
>>177
ボキャブラ天国とか見てた老害はs
179 :
デフォルトの名無しさん (スッップ Sd92-K8Mp)
2017/03/15(水) 18:31:39.28 ID:tAf0WVvBd
C言語系やっていてK&Rを知らないってどういう事?
180 :
2017/03/15(水) 19:12:41.40 ID:sBKf9EyJ0
>>179
日本人やってるけど原文で源氏物語スラスラ読める奴少ないだろ?
既に古典なんだよ
181 :
2017/03/15(水) 19:37:35.38 ID:3Vn4G48fp
スラスラは読めないけど、作者と大体のあらすじは知ってるわな
182 :
デフォルトの名無しさん (スッップ Sd92-K8Mp)
2017/03/15(水) 21:02:45.81 ID:tAf0WVvBd
>>180
基礎の基礎だと
183 :
2017/03/16(木) 01:01:49.48 ID:AMKOKIXm0
お前ら行書読めるの?スゲー
184 :
2017/03/16(木) 01:12:51.30 ID:5p3YbdlX0
マシン語でもおぼえとけ
185 :
2017/03/16(木) 01:27:04.22 ID:zhQm4U/K0
>>183
草書は無理だけど行書は読めるんでない?
186 :
2017/03/16(木) 02:02:49.43 ID:AMKOKIXm0
>>185
素で間違えた。それを言いたかった

でも、行書でも結局読めない
空海・風信帖
https://upload.wikimedia.org/wikipedia/commons/b/bf/Huushincho_1.jpg

最澄・久隔帖
https://upload.wikimedia.org/wikipedia/commons/e/e7/Shakuhai.jpg
187 :
2017/03/16(木) 02:21:25.59 ID:7dTItZGXa
ところどころ読めるやろ
188 :
2017/03/16(木) 08:03:25.57 ID:AMKOKIXm0
>>187
コンパイルエラー
189 :
2017/03/16(木) 09:05:27.04 ID:/skZEy4/d
ロードはできるけどコンパイルエラーするな
190 :
2017/03/16(木) 10:07:43.91 ID:bRh67wE3a
デバッグしろよ
191 :
2017/03/16(木) 11:38:07.47 ID:7qEFMeDJp
文法もわからんしAPI仕様書もない、ムリゲ

しかし、日本語の大御所で基礎の基礎だから読めないヤツは日本語を話る資格ないのか
これからは日本語でおkとか言えないな、、、
192 :
2017/03/16(木) 11:49:59.94 ID:bRh67wE3a
神経質な奴だな
そんな落ち込むなよ
193 :
2017/03/16(木) 12:31:27.45 ID:0Zav/vrEd
コンパイラなんてそんなもんだよ
ソースが同じでもテキストフォーマット変わればコンパイル通らないし
同じ言語でも世代が違えばコンパイル出来なかったり動作が変わったりする
194 :
デフォルトの名無しさん (ワッチョイ 03c9-JN/B)
2017/03/16(木) 12:36:14.54 ID:68bWV4sz0
>>193
Ruby1.8, 1.9しか知らんのだけど、今時の2.4ってのは全然動作が違うのかね?
osx El CapにはRuby2.0搭載なので、極タマに使ってみて、あんまり変化の無い
事に安心してるんだが。
195 :
デフォルトの名無しさん (スップ Sddf-8YZg)
2017/03/16(木) 12:40:19.13 ID:fylU8k5ad
>>191
「日本語でおkとか」の「とか」は、「日本語でおk」以外の何?
196 :
2017/03/16(木) 12:53:53.08 ID:bRh67wE3a
とか
1.
《副助》例をあげて並べるのに使う。 「A―B―の記号」
2.
《普通は下に「言う」「聞く」などを伴って》 《連語》内容が不確かであることを表す。 「橋沢―いう人」


>>191の場合は、「2.」の用例だろ
つまり、
「日本語でおk」だったか、「日本語でOK」だったか、「日本語でおっけー」だったか不確かだけど、そんな風な言い方
ってこと
197 :
デフォルトの名無しさん (スップ Sddf-8YZg)
2017/03/16(木) 13:04:00.85 ID:fylU8k5ad
>>196
内容が不確かな事を書かれても、不確かなのだから、何を書きたいのか解らないよ。
198 :
2017/03/16(木) 14:04:38.09 ID:B/XDf7Uvp
じゃあ、日本語でおk で
199 :
2017/03/16(木) 19:08:04.75 ID:AMKOKIXm0
>>197
>>191の言いたいことは、”日本語でおk”のネタさえ知ってれば通じるだろ
通じなかったとしたらネタを知らないか、アスぺなだけだろ
200 :
2017/03/17(金) 09:04:36.10 ID:CVisIQCrd
>>199
この人はこのスレに住み着いて「とか」だけに反応する可哀想な人だから
みんなでとかとか使いまくってもっと可哀想にしてやろうよ(いじめの提案)

>>197
不確かであることを明示して話を進めることはよくある事だよ
主に明確化に意味が無い、あるいは主題を明確にするために枝葉部分を意図的に明確定義しない、などの用法がある
201 :
2017/03/17(金) 17:40:08.81 ID:OpOSLOXG0
>>191のとかは不相応の程度を強める際の「なんて」と可換なニュアンスだろう
例 ハゲとか無理
202 :
2017/03/18(土) 01:27:16.65 ID:6ina02vGd
日本語とかでおk
203 :
2017/03/18(土) 02:26:45.14 ID:6b/Lj0PJ0
必ずしも日本語じゃなくてOKってことね
よかった
204 :
2017/03/18(土) 10:00:01.78 ID:T7L2R5qRd
とかに無理やり絡めると
省略あるいは不明確を示すとかはワイルドカードなんだと思う

とりあえず早い事perl like構文で使える正規表現をサポートしてほしい

Swiftのガッカリポイントの一つがまだ純正で正規表現が使えないというところだったから
205 :
デフォルトの名無しさん (ワッチョイ 035b-QFag)
2017/03/18(土) 10:52:24.54 ID:h03j8lZL0
>>204
String#range(of:​options:​range:​locale:​)

options のところに .regularExpression を使えば、searchString で正規表現を利用した文字列(例えば “2ch+*" とか)が使えます。
206 :
デフォルトの名無しさん (ワッチョイ 035b-QFag)
2017/03/18(土) 10:55:36.95 ID:h03j8lZL0
typealias String.CompareOptions = NSString.CompareOptions

に注意ね。
207 :
2017/03/18(土) 11:50:49.28 ID:T7L2R5qRd
>>205
うん、しってるんだけどさぁ、これってNSStringにブリッジしてそっちのregex使ってるんじゃなかったっけ?
内部的にutf16になっちゃうので使いにくかった気がする

Swift2の頃の記憶だからSwift3では違うのかな?
Swiftではregex使わないようにしてたので、久しぶりに使ってみるかな?


それと、perlみたいにregexの結果をイテレートしてとか
そういう使い方したい
208 :
デフォルトの名無しさん (ワッチョイ 035b-QFag)
2017/03/18(土) 12:05:47.32 ID:h03j8lZL0
import Foundation
let str: NSString = NSString(string: "Charlie Brown")
let a:NSRange = str.rangeOfString("Brown")
print(a.location)
print(a.length)
print(NSNotFound)
var ar: NSArray
do {
let reg: NSRegularExpression = try NSRegularExpression(pattern: "Brown",
options: NSRegularExpressionOptions.UseUnicodeWordBoundaries)
let str0 = str as String
let match: NSTextCheckingResult? = reg.firstMatchInString(str0,
options: NSMatchingOptions.ReportCompletion,
range: NSMakeRange(0, str.length))
print(match)
print(match!.range)
} catch {}
ちょいと前に保管したsnipet
209 :
2017/03/18(土) 12:32:40.53 ID:vKa31hq6d
>>208
さんきゅ
あとで試してみる

しかし、やっぱりperl並みのお手軽さが欲しいところ
210 :
2017/03/18(土) 12:51:59.51 ID:15tZ92u+p
少し前のDev MLで正規表現を言語仕様に組み込む話題があったような
あって困るものじゃないから入って欲しいね
211 :
2017/03/18(土) 12:54:59.80 ID:XXqg+DqY0
議論はあったけど4には入らんと思う

> Addressing Regexps in Swift proper is out of scope for Swift 4, because
> there's simply no time to design and add the necessary language features.
212 :
2017/03/18(土) 14:54:04.70 ID:CoM5VADKa
Obj-Cもそうだけど、Swiftで正規表現使おうとするたびに、使い方をググってるわ
Perlだとすぐに書けるんだけどな
213 :
2017/03/18(土) 15:26:50.32 ID:eyWXYpAT0
Swift 4が最終ステージに(白目)
https://www.infoq.com/jp/news/2017/03/swift-4-release-process
214 :
2017/03/18(土) 15:51:30.64 ID:XXqg+DqY0
日本語版InfoQはいつもネタが一ヶ月遅い
215 :
2017/03/18(土) 16:03:29.07 ID:h03j8lZL0
>>213
ABIって見るたびに、なんの略だったっけ?となる。

BI = Binary Interfaceだよね?
What does “A” stands for?
216 :
2017/03/18(土) 16:33:29.93 ID:L7+Dd5xH0
>>215
"A" for Application
217 :
2017/03/18(土) 17:10:49.00 ID:61cBFpsD0
APIの派生
ソースレベル互換→バイナリレベル互換
218 :
2017/03/18(土) 18:08:39.34 ID:L7+Dd5xH0
なかなかAPIとABIとシステムコールとライブラリとフレームワークという言葉ををきちんと分かった上で使い分けるのが難しいんだよね
うちの若手とか

>>213の文脈だと
以前からあるライブラリとかと再コンパイルしなくてもリンク出来る
ってのがABIレベルでの互換性だろうね
219 :
2017/03/18(土) 18:39:09.49 ID:61cBFpsD0
システムコールは置いといていいでしょ
普通の開発者は直接的には使わないんだし
220 :
2017/03/18(土) 19:27:50.95 ID:15tZ92u+p
これと言ってることが微妙に違うのはInfoQの情報が古いのか、こっちの更新が遅れているのか
https://github.com/apple/swift-evolution/blob/master/README.md

はよABI安定させてlibSwift.soをiOS, macOSのシステムライブラリに保存してくれよなぁ
Swift 3でABI安定させるって理想だった頃はその構想だったのかもしれんが、ABI安定時期が不透明な今はもう諦めてるのかもしれん
221 :
2017/03/18(土) 20:06:24.89 ID:L7+Dd5xH0
>>219
いやさ、printf()で済むところをwrite()とか、put()とか使いたがる人が居たりするんだよ

ライブラリ関数とシステムコールの違いが分かってないのよねん

説教したくなるのをグッとこらえて、システムコール使うと遅くなるしメンテナンスが大変になるんだよと言ってもなかなか納得してくれない
222 :
2017/03/18(土) 20:38:16.85 ID:GFFJDG7E0
Objective-Cでおk
以上。
おつでした。
223 :
2017/03/18(土) 20:39:58.56 ID:61cBFpsD0
>>221
printf()もシステムコール使ってるよ
write() put()はシステムコールでなくラッパー関数でライブラリの一部
遅いのはシステムコールやチェック処理の回数差でバッファリングに起因する
224 :
2017/03/18(土) 22:12:10.15 ID:h03j8lZL0
>>221
システムコールって遅いの?逆なんじゃない?
つまり、ライブラリ関数より早い。

だって、ライブラリ関数はシステムコールのラッパー関数なんでしょ?

俺、arc4random_uniformとか、atofとか使いまくってるんですけど。
225 :
2017/03/18(土) 22:21:36.55 ID:h03j8lZL0
>>223
write()ってのは、何を指しているのでしょう?
ライブラリの一部というのだから、
FoundationライブラリString#write(to:)の事でしょうか?

なら、printfよりも遅いですよね。

put()はなんの事でしょうか?
226 :
2017/03/18(土) 23:27:27.95 ID:61cBFpsD0
>>224
システムコールは特権レベル変更に伴うコンテキストスイッチなどのオーバーヘッドのため
ユーザーモードで完結するものより遅い
atofはシステムコールしない、arc4random_uniformは再シードのときだけシステムコールするようだ

>>225
>>215-219はSwiftやiOSに限らない一般的な話, >>221,223はC言語標準ライブラリまたはPOSIX
putはputsやfputcなど

通常のプログラムからラッパー関数はcdeclなどで呼ぶ
ラッパー関数はシステムコール番号などをレジスタにセットして
int 80hやsyscallなどのCPU命令を実行する
227 :
2017/03/18(土) 23:30:26.08 ID:61cBFpsD0
長々書いたけど swiftdoc.org やAppleの開発ドキュメントを
見てたら多分支障無いから気にしなくていい
228 :
デフォルトの名無しさん (ワッチョイ 035b-8e1h)
2017/03/19(日) 00:02:51.00 ID:X9SioAAy0
>>226
なるホドォ
229 :
2017/03/19(日) 00:11:01.40 ID:WMiUvz/ea
まさかこのスレにシステムコールのオーバーヘッドを気にするようなスピード狂がいたとは
230 :
2017/03/19(日) 02:31:51.49 ID:MM3vmS8Q0
1,000バイトの読み書きをするのに、1バイトずつ、
syscall * 1,000回すると遅いから、

ライブラリ内でバッファを確保(バッファリング)して、
1,000バイト貯まったタイミングで、syscallを1回だけ呼ぶと、速い
231 :
2017/03/19(日) 08:50:33.86 ID:BHsM6TZ60
Dispatchの良いドキュメントってありますか?英語でもいいです。mpiのparallel forと同じようなことがしたいんですが、よくわからないので勉強したいので
232 :
2017/03/19(日) 09:06:36.45 ID:X9SioAAy0
>>231
Apple Gudes and Sample Codeで探せば!
Concurrency Programming Guide
とかヒットするけど。

Dispatch Queues, Dispatch SourceのSectionを参照。
233 :
2017/03/19(日) 09:46:45.92 ID:QbTcqaOM0
システムコールのオーバーヘッドを気にするような人がSwiftのようなモダンな高級言語を
使うとは胸熱だな

速度をちゃんとコントロールしたいならObjective-Cじゃないと無理だろ...
234 :
2017/03/19(日) 09:55:06.98 ID:yi8Y0/pHp
ObjCもlibobjc.soとかのランタイムを食わせないと動かないからダメだろ
Swiftよりはランタイム総容量は小さいけどObjCにもランタイム/ラッパー関数は必要なんだぜ?
システムコール呼び出すC関数呼ぶだけならSwiftでもできるから同じ土俵
235 :
2017/03/19(日) 10:08:01.66 ID:X9SioAAy0
system callの呼び出し履歴を表示する、dtrussってコマンド見つけた。
trussのdetails版らしいけど、trussってなんの略だ?
236 :
2017/03/19(日) 10:10:39.12 ID:X9SioAAy0
trussはmanのsection 1にあるはずなんだけど、documentが、ない。
なぜだ?
237 :
2017/03/19(日) 10:12:54.40 ID:X9SioAAy0
truss = trace user signal and system callかな?
238 :
2017/03/19(日) 10:35:19.35 ID:QbTcqaOM0
>>234
>システムコール呼び出すC関数呼ぶだけ
C言語に頼るwithout CなSwift
239 :
2017/03/19(日) 16:43:04.63 ID:BRUWii050
文法はwithout Cだけど、機能はwith CのSwiftすごい!!
Modern Objective-Cとかいう微妙に時代遅れなモダン言語(笑)とは違うな
240 :
2017/03/19(日) 17:04:16.85 ID:QbTcqaOM0
Swift:「文法はwithout Cだけど、機能はwith CのSwiftすごい!!」
C:「それじゃあ結局のところSwiftは文法的な見た目をモダン()にしただけの言語ってことになっちまうじゃねぇか...」
Objective-C:「」
241 :
2017/03/19(日) 17:13:15.07 ID:zGHcaEctH
juliaも忘れんとって
242 :
2017/03/20(月) 10:21:19.90 ID:QillsqV80
つまりインラインでC言語が書けるObjective-Cが最強ってことだな。
SwiftもC言語埋め込めるようにすれば最強になれるで。
243 :
デフォルトの名無しさん (ワッチョイ bfd4-pP+o)
2017/03/20(月) 11:09:21.86 ID:KXLYvEOG0
じゃあ、swiftにObjective-Cを埋め込めれば、真の最強じゃね?
244 :
2017/03/20(月) 11:21:56.39 ID:XcCZvFx20
至高の言語Swiftにひざまづけ愚民ども
245 :
2017/03/20(月) 11:38:00.54 ID:9CFcUwN1d
without Cにする必要性について
246 :
2017/03/20(月) 11:42:15.65 ID:0inF6e9Oa
ソースが汚くなるから
王室に乞食を招き入れるわけにはいかんだろ
247 :
2017/03/20(月) 11:42:37.51 ID:IesYv4al0
>>242
文法はwithout Cで機能はwith CのSwiftの最強
何が不足なのか分からんぞ?

ObjCに比べてランタイム容量がアホほど大きいデメリットは分かる
248 :
2017/03/20(月) 11:42:54.31 ID:9CFcUwN1d
>>242
まあObjective-CはCのスーパーセットだからな
Cそのものを含んでると言っていい
CでできることはObjective-Cでも100%できる
249 :
デフォルトの名無しさん (スッップ Sddf-8YZg)
2017/03/20(月) 13:24:38.46 ID:es7jdWbid
俺はObjective-Cで、かつ、省略しない方が好き。

Swiftは、なんか、いろいろ中途半端。
あと、省略可能なのは良いけれど、省略した時にどうなるかを、考えなさすぎ。
省略時の動作は、最終的にコンパイラの実装依存になる。
よってコンパイラが変われば、全く期待した動作にならない場合だってあるんだよ。
250 :
2017/03/20(月) 13:32:26.07 ID:LSRu7fHya
Swiftに、省略時の曖昧な動作なんてあったっけ?
251 :
2017/03/20(月) 13:39:46.35 ID:MLqjE/IfF
>>242
Swiftでも直接Cの関数呼べるけどなんか問題ある?
このスレでも少し前にdup2()呼ぶサンプル書いてる人いたよ

個人的には
"C":{}とかで囲んで明示する必要がいるくらいには敷居を上げておいて欲しかった
今だと普通に呼べすぎて、swiftの関数なのかCの関数なのか見分けがつかない
252 :
2017/03/20(月) 14:21:57.88 ID:EvEkzDYt0
>>250
型推論の事言ってんじゃないか?
別に省略してる訳じゃないのにね。

あるいは、syntax sugarの事かも。
Array<Int>を[Int]とか書いたり。
253 :
2017/03/20(月) 14:48:23.91 ID:G0HPo1ICp
見分けがつかないからなんだってんだよ
254 :
2017/03/20(月) 15:03:51.36 ID:OmtBFJ4n0
Swiftってザ・意識高い系って感じの言語だな
C言語の関数呼べるようにする必要ないくらいじゃないと言語とは言えんし
255 :
2017/03/20(月) 16:30:53.49 ID:E6+3UOyx0
Bridging Headerもmodulemapも言語の機能じゃ無いよ
256 :
2017/03/20(月) 17:05:35.61 ID:OmtBFJ4n0
without Cを謳っておいてCの関数を呼び出す
仕組みを用意してるのって滑稽だねってだけだよ
257 :
2017/03/20(月) 17:06:20.49 ID:fEdZO0mtp
>>254
比較対象がVM言語やインタプリタ言語かよ
意識低いなw
258 :
2017/03/20(月) 17:13:00.01 ID:G0HPo1ICp
without C を謳うのは建前
でもcが使えちゃうのは本音

日本人ならわかるだろ?
259 :
2017/03/20(月) 17:31:37.32 ID:qt6rA4Ca0
>>254
Javaだけど呼んだ?
260 :
2017/03/20(月) 17:36:09.37 ID:5DkpfNMbd
gccがgasコードを吐くように、swiftもObjCコードを吐けばいいんじゃね?w
261 :
2017/03/20(月) 17:43:37.75 ID:EvEkzDYt0
>>260
それは難しいだろう。
associatedtype付きのprotocolとかObj-Cに移植できるの?
262 :
2017/03/21(火) 07:36:52.81 ID:9HZnXlk90
gccがgasコードを吐くように、clang/swiftcがLLVM IRコードを吐く件

>>251
Swiftコード中に書くC, ObjC関数は、.swiftヘッダファイルに同名で再定義されたswift関数だから見分けつかない
Swiftフレームワークライブラリの中に入ってる.swiftヘッダ見るとC,ObjC,Swiftの全ての関数が同列に並んでてこんなことしてるのかよwwwって笑う
263 :
2017/03/21(火) 07:41:09.49 ID:JY9T0YVB0
JavaのJNIだとCを呼び出すための敷居が高すぎるんだよな

でもswiftだと敷居が低すぎる

なんてワガママな俺
264 :
2017/03/21(火) 07:54:24.70 ID:nRmSmnIrd
C言語の関数呼び出さないとやりたいこと出来ないわけ?
265 :
2017/03/21(火) 08:21:33.84 ID:9HZnXlk90
やりたいことを出来ないんじゃなくて、>>238のように出来ることを煽りたいんだと思う
それが煽りになってるのか分からんけど

最初は(システムコールを扱う時に)SwiftだとObjCほど性能でないwwwって煽ろうと思ったら同レベルで引くに引けなくなった感じがする
単純にSwiftランタイムのばかでかさに依る性能劣化を煽ってればその通りなのにね
ランタイムのロードとか関数マップテーブルからのAPI検索とか、システムコールだと差分ないけど一般利用時に性能悪いのは必然だもの
266 :
2017/03/21(火) 09:14:33.95 ID:XLp7uPXRF
Swiftでないとダメな5つの理由
とか誰か書いてよ
267 :
2017/03/21(火) 09:21:56.02 ID:hTMAmD++d
1.学習コスト
2.生産性
3.スタイリッシュ性
4.流行
5.信仰心
268 :
2017/03/21(火) 10:36:30.52 ID:H55j2XV7d
>>264
さあ?
あなたの作るプログラムで必要であれば必要だし
必要でないなら必要ない

うちの場合OpenCV使うのにC++ブリッジ使ってる

あと、無限ループで延々九九と答え吐き出すコンソールアプリ作っておいて
Ctrl+Cを押されたら「知るかボケ!忙しいんじゃ」と吐き出して、そのまま無限ループを続けるプログラムを作りたかったら
俺はSwiftだけで書く方法を知らないのでCの関数(と言うよりはPOSIX API)を呼び出す


どうして全部Swiftでできるようにしないのか?と言う問いに対しては
Javaプロジェクトが一つの答えだと思う
OSのAPI層までを言語と標準ライブラリに取り込もうとする意欲的な試みは
20年以上かけてある程度成功したが、柔軟性を失わせる副作用と言語の肥大化をもたらした
そしてJavaからCを呼び出す仕組みであるJNIは未だに必要とされている

全部をプログラミング言語に取り込むのではなく既存の仕組みとうまく連携するのがバランスの良いとの判断なんじゃないかな?
269 :
2017/03/21(火) 10:46:19.71 ID:MDnLMEwZd
swiftは初めからjavaのようなマルチプラットフォームを目指しているわけでもあるまい
270 :
デフォルトの名無しさん (スプッッ Sddf-pP+o)
2017/03/21(火) 11:08:08.11 ID:CAHXK6Wdd
Floatを引数にとる関数で、その引数の場所で(1+n)とかやると、
Binary operator '+' cannot be applied to two 'Int' operands
ってエラーが出て嵌った。
http://stackoverflow.com/questions/40557214/swift-operator-throwing-error-on-two-ints
エラーメッセージが不親切過ぎる。
271 :
デフォルトの名無しさん (スプッッ Sddf-pP+o)
2017/03/21(火) 11:11:47.89 ID:CAHXK6Wdd
上のリンクでは
Binary operator '*' cannot be applied to two 'Int' operands. Expecting two 'CGFloat' operands.
ってエラーメッセージの方が良いと書いてるけど

Binary operator '* -> CGFloat' cannot be applied to two 'Int' operands. Expecting two 'CGFloat' operands.

だと、まだ分かりやすかったと思う。
272 :
2017/03/21(火) 11:20:38.39 ID:g+RWoDDLM
>>246
王とはCのことか
273 :
デフォルトの名無しさん (スッップ Sddf-8YZg)
2017/03/21(火) 12:12:24.85 ID:PXKTLJIMd
>>266
「Swiftでないとダメな5つの理由とか」の「とか」は、「Swiftでないとダメな5つの理由」以外の何?
274 :
2017/03/21(火) 12:13:48.48 ID:1Za/GAk+p
Objective-Cこそ王族の言語(信仰心

>>266
ダメな理由なら3つほど
1. 小さなランタイム(笑)
2. 頻繁に破壊される言語仕様
3. 不完全なエコシステム(ビルドツール)

これらはメリット/デメリットが双方あるものじゃなくデメリットしかないから煽ってもおk
この辺はswiftユーザはもう諦観して苦笑しながら使ってるデメリットだけども
275 :
2017/03/21(火) 12:16:06.38 ID:1Za/GAk+p
>>273
「swiftがダメな3つの理由」とか
276 :
2017/03/21(火) 12:19:09.63 ID:H55j2XV7d
>>273
お、久しぶりに出てきた

全部の「とか」に反応するわけじゃなくて
選択的に反応してるのか?

しかしその選択基準がまだよく分からないな
277 :
2017/03/21(火) 12:37:34.87 ID:H55j2XV7d
>>269
うん、

マルチプラットホーム対応を言語レベルでは行わない選択をした=実行環境ネイティヴ(多くの場合はCで提供されている)とのインターフェースが必要

だと思ってる

without CなのにCが必要wwwって煽ってる人は
言語仕様とネイティヴインターフェースを混同しているおバカな自分をアピールしたいんしゃないかな?
278 :
デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
2017/03/21(火) 12:39:40.14 ID:huV0U58I0
>>269
Multi-platform目指してると思うよ!
Linux, macOSとで動くし。
Windowsでもそのうち動く様になる。bash, vimが動く様に。
279 :
デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
2017/03/21(火) 12:41:05.23 ID:huV0U58I0
>>270
A + BでそのError Occuredの場合、
大抵は、
Int(A) + B
ってするとOK
280 :
2017/03/21(火) 12:45:05.87 ID:MDnLMEwZd
>>278
動く、使える=swiftがswiftプラットフォームとしてマルチを目指しているではない
281 :
2017/03/21(火) 12:52:34.12 ID:1Za/GAk+p
>>278
cygwinポーティングはとっくに公式にマージされただルルォ
Androidでも動くしコミュニティの愛すべき馬鹿どもは頑張ってる

>>279
それ、Int(A)がキャストじゃなくコンストラクタ呼び出しで生理的に気分悪いよな
どこまで最適化走るか不明瞭だけど普通に考えて性能悪化を手助けしてる
282 :
2017/03/21(火) 12:59:01.94 ID:I3nNj3Lbp
オプショナル型ちょ〜便利
型類推もちょ〜便利
文末にセミコロン不要なんてサイコー
letとvarの使い分けがありがたすぎ
switch文が強力すぎて鼻血でたー
enum構文がおいしすぎてよだれ出るぅ
Playgroundが便利すぎぃ
他にもまだまだたくさんよりどりみどりぃ
283 :
デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
2017/03/21(火) 13:52:46.38 ID:huV0U58I0
>>281
キャストとは、Superclassを同じくするインスタンスどおしの型変換。

IntとCGFloat間でキャストできる方が気分悪い。
284 :
2017/03/21(火) 14:19:23.23 ID:H55j2XV7d
>>278
あ、ごめん、スレチかと思って説明しなかったんだけど、


Javaはバイナリレベルでのマルチプラットホームを旗印にしてたんだ
"Write Once Run Anywhere"をスローガンにして
つまり一度コンパイルして作成したアプリとかは、macでも、winでも、unixでも、携帯でも、再コンパイルすら必要なく同じ動作するよ!って
そのためにAPIやABIなど今までOSの役割だったところをJavaという仕組みの中に取り込んでいった

もちろん、そんなにうまくいくはずもなく"Write Once Debug Everywhere"と揶揄されることになった


それに対して伝統的なUnix系の考え方は、再コンパイルして動けばオッケー
動作が違う?OSとかの環境が違うんだから当然だよね、ソースでifdefしよう!
って感じのマルチプラットホーム

これですら、PosixやSUSとかの活動によるAPIや実行環境レベルでの統一化や
gnu automakeなどによる実行環境とビルド環境の調査とそれに対応したビルド
などでかろうじて維持されているレベル


C言語とかで書いたプログラムがmacでも、winでも、Linuxでも動くというのは
言語がマルチプラットホーム対応しているわけではなく、後者の意味でいろんなプラットホームで動くようにプログラムやビルドシステムを書いているから

Swiftも今の所後者に属してると思うよ
285 :
2017/03/21(火) 14:49:45.32 ID:LQyko2ZP0
>>283
お前それプリミティブ型のintとfloatでも同じ事言えんの?

基本的な数値型をプリミティブ型として一般的に提供しないSwift
プリミティブ型ではなく構造体型で全数値型を提供する意義は分かるが性能劣化してるんだよなぁ
286 :
デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
2017/03/21(火) 14:49:46.32 ID:huV0U58I0
>>284
THX

Single UNIX Specificationってのがあるのね。
287 :
デフォルトの名無しさん (ブーイモ MMdf-S3kY)
2017/03/21(火) 15:22:22.74 ID:vtLrbY1LM
なんでここCのシンタックスを外したことをwithout Cって言ってるのに
without CつったらCの機能が呼べないようにならないとおかしいだろ?
とかとんちんかんなこと言う奴しかいないのん?
ラトナーが草葉の陰から泣いてるぞ
288 :
2017/03/21(火) 15:40:06.05 ID:DXgiF4dPp
日本語でおk
289 :
デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
2017/03/21(火) 15:50:06.39 ID:huV0U58I0
>>285
Swiftの高速演算に対する思想。高速演算必要ならClangで書いてね。Frameworkって仕組みを用意するから、Clangのソースをemmbed inしてね。って事なのだ。例:RxSwift/RxCocoa/Runtime

高速演算したけりゃ、その部分をClangで書いてSwiftから呼べば良い。
290 :
2017/03/21(火) 16:06:44.92 ID:p7k0dZ7/0
>>285
@_transparent付きで中でビルトインの変換呼んでるだけだからCやC++と比べても性能劣化なんて皆無だと思う
実際にIR見ても別に無駄にジャンプしたりしてない
素でsitofpとかしてるだけ
ナローイング変換はprecondition入るけどそれも最適化されるし
291 :
2017/03/21(火) 16:27:53.04 ID:MDnLMEwZd
Clangっていうとコンパイラしか思い浮かばないんだが
292 :
2017/03/21(火) 17:51:22.44 ID:pxhdVPhBp
> Frameworkって仕組みを用意するから、Clangのソースをemmbed inしてね。って事なのだ。
Swift Package Managerがクソな完成度でSwift Framework LibraryにC言語のソースはembed inできないんだけど...
まぁそもそもアレはFramework Libraryを生成するコマンドとしても成り立ってないから論外なのかもしれんが

Swift公式として真っ当な技法を提供してなくて、バッドノウハウとしてRxSwiftやRxCocoaがやってることをやれってことなんだろうな(ウボァ
293 :
デフォルトの名無しさん (スッップ Sddf-8YZg)
2017/03/21(火) 18:48:58.62 ID:PXKTLJIMd
>>284
「一度コンパイルして作成したアプリとか」の「とか」は、「一度コンパイルして作成したアプリ」以外の何?

> macでも、winでも、unixでも、携帯でも
macはハードウェア
win、unixは、オペレーティングシステム
携帯は動詞

「C言語とか」の「とか」は、「C言語」以外の何?
294 :
2017/03/21(火) 19:25:34.11 ID:I3nNj3Lbp
一度コンパイルして作成したアプリとか
一度コンパイルして作成したアプレットとか
一度コンパイルして作成したサーブレットとか

C言語とか
C++とか
Pascalとか
295 :
2017/03/21(火) 19:42:18.10 ID:jxZBoDQT0
>>293
NG: macはハードウェア
OK: OSはmacになり、ハードウェアはMacのまま

揚げ足取るのって楽しいの?
アスペなの?
296 :
2017/03/21(火) 19:59:01.53 ID:H55j2XV7d
>>293
この場合のとかの用法は明確に定義しないことを明示するための、、、、、、

とかではなくて、

説明しよう!(富山敬風)
ターゲットが特定のキーワードに高確率で定型のレスをつけることを利用して
ターゲットのレスを意図的に引き出そうとする
ドメイン特化キーワード、いわゆる釣りワードである
(↑これが言いたかっただけなのだ)

釣りとわかって付き合ってくれてありがとう
297 :
2017/03/21(火) 20:48:23.31 ID:2GTRnHWPM
>>283
え、そうなの?
swift界ではそういう定義なん?
298 :
2017/03/21(火) 20:59:06.98 ID:MDnLMEwZd
>>292
ゲロ吐く
299 :
2017/03/21(火) 21:05:21.27 ID:/qkJhfYu0
>>295
アスペ好き
300 :
2017/03/21(火) 22:39:55.95 ID:O0GOXggs0
アスペとかと遊ぶためのキーワードに爆釣(釣り糸タラー

>>290
結構冗長処理の差分があるけど、どんなオプションで吐いた?
% swiftc -S -O test.swift
--
import Foundation
func main() -> Int {
let a: CGFloat = 1
let b = Int(a)

return b
}

% test -S -O test.m
--
int main() {
float a = 1;
int b = a;
return b;
}
301 :
2017/03/21(火) 22:40:48.24 ID:O0GOXggs0
スマン、後者のコマンド間違えた
% clang -S -O test.m
で読み替えて
302 :
2017/03/22(水) 01:02:49.55 ID:FLAiJ+iN0
>>300
当たり前だけどそのコードじゃ、どっちも意味のないaの行は消えて直接整数の1を置くだけのコードに最適化された


[swift]
func foo(f: Float) -> Int {
let i = Int(f)
return i
}

[c]
int foo(float f) {
int i = f
return i
}

これで見ればfloat→intの変換はどっちもcvttss2siの1ステップになった
Swiftの方は-Oだとcvttss2siの前にprecondition由来のコードが残るけど-Ouncheckedならそれも消えて完全にCと同じ
303 :
2017/03/22(水) 01:09:43.24 ID:+9rAaXcc0
var i = Inf(f)
じゃないと
int i = f;
と等価じゃなくね?
んでもってCではセミコロンいるけどね
304 :
2017/03/22(水) 01:15:25.70 ID:FLAiJ+iN0
>>303
たしカニ
まぁ変わらんけど
305 :
2017/03/22(水) 11:24:01.24 ID:kq8u5G9J0
数値の型変換がイニシャライザなのは良いけど
情報欠落するケースかどうかが変換箇所のコードで分からないのは好きじゃない

Int32→Int64のような拡張でも暗黙変換しない方針を選んだのなら
逆に縮小をラベル付きにしてコードから判別出来るようにして欲しかった

  Int32.init(_: Int16)
  Int32.init(narrow: Int64) // init(_: Int64)
  Int32.init(truncatingBitPattern: Int64)

例えばC#では拡張は暗黙変換、縮小は明示キャスト必須になっている
306 :
2017/03/22(水) 12:38:51.99 ID:dwmeJil9d
そうだよな、CでもC++でもSwiftでも
自信を持ってキャストできた試しがない
何が起こるキャストなのか詳細に分かると便利だね
307 :
2017/03/22(水) 12:43:22.27 ID:dwmeJil9d
>>282
こん中だとけっこう感動したのは

>switch文が強力すぎて鼻血でたー

これだな
複雑なif文の入れ子がかなりシンプルにできる


日常的に一番お世話になってるのはオプショナル型
ヌルポ踏むことが無くなったかな
308 :
デフォルトの名無しさん (ワッチョイ 03f3-JN/B)
2017/03/22(水) 13:02:23.51 ID:GcLM8SyP0
>>305
おれの得意なXXXと、どうして違うんだぁぁぁぁ。
よくあるよね。
309 :
2017/03/22(水) 14:23:57.53 ID:kq8u5G9J0
>>308
得意かどうかや違うかどうかは関係無いよ
考慮された上での仕様かどうかという話

数値型の暗黙変換を無くしたことは前進だと見ている
しかしその結果、拡張変換の構文が縮小変換に追いついてしまい
非対称性による利点が失われてしまった
310 :
2017/03/22(水) 15:23:52.69 ID:dwmeJil9d
>>308
まさにこれ

Perl風の正規表現サポート構文を全言語で採用しないなんて信じられない!

文字列処理なんてプログラミングの基本中の基本でしょ!
一文字ずつの処理をプログラマが書くなんてあり得ない!!


待ってるぜSwift5
311 :
2017/03/23(木) 09:17:23.40 ID:9ddE+onEp
>>307
1.x初期にif letを子入れしてた時はシネと思ってたけど今のif, switchは便利よな
パクリ元と思われるrustより使い勝手よい
312 :
2017/03/27(月) 13:39:55.07 ID:9ObHSaYAd
型推論削除まだー?
313 :
2017/03/27(月) 14:34:32.14 ID:jJTT24eR0
>一文字ずつの処理をプログラマが書くなんてあり得ない!!

いや、じゃあ誰が書くんだおw
アプリプログラマ、だけな、それ言うの
あと、1文字ずつの処理「も」かける、というのが便利

とりあえず「デフォ」を便利にして欲しい
314 :
デフォルトの名無しさん (ササクッテロラ Spd3-1VOV)
2017/03/27(月) 20:33:27.48 ID:d0WItvzjp
勉強で単純なカメラアプリを作ってるんだけど、せっかくだからフレームとサイズだけはオリジナルにしたい
でもやり方がよく分からなくて困ってる
良ければ誰かヒントをくれないだろうか
315 :
2017/03/27(月) 20:57:49.35 ID:MSHIb1n80
UIWindowクラスでググったら?
と思ったら、すぐ見つかった。

“UIImagePickerController camera​Overlay​View”でググレカス
http://chicketen.blog.jp/archives/7404852.html
316 :
2017/03/28(火) 11:35:36.43 ID:t5HIbgfEd
>>313
>いや、じゃあ誰が書くんだおw
>アプリプログラマ、だけな、それ言うの

もちろん、カーネルプログラマや、ライブラリプログラマの皆さんの成果を美味しくいただけるという前提の話です。
アリガタヤ〜

なんか、入力が文字列だと、自分でプログラム組んで処理する以外の方法を思いつかない人が多くて困るのだ。
118KB

新着レスの表示

★スマホ版★■掲示板に戻る■全部前100次100最新50

名前:E-mail: