トップページ⇒tech
1002コメント383KB

Swift part9 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8b3c-/6Y/)2016/10/18(火) 11:34:44.16ID:oLo879ze0
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ

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

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

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

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

前スレ
Swift part8
http://echo.2ch.net/test/read.cgi/tech/1463149806/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0360デフォルトの名無しさん (スプッッ Sd4a-4xst)2016/12/29(木) 08:26:39.29ID:uZ56/Y+Td
自分の基準だけは正しいという前提
0361デフォルトの名無しさん (ワッチョイ de42-5AW6)2016/12/29(木) 09:22:43.84ID:bUdbWaJH0
>>359
根本的に理解が間違ってることを指摘したのにどこが言葉尻なん?
何を指摘したのか理解してないだろ?
0362デフォルトの名無しさん (スップ Sdaa-tTSs)2016/12/29(木) 09:37:09.17ID:NsphQCuqd
>>359
〉そういう言葉尻を挙げた煽り

言葉尻?
自分の無知や間違いを認めない方が問題。
とても大切な事。
動きを正しく理解していないから、そういう発言になるんだよ。
理解力が低いから、わからないんだろうな。
0363デフォルトの名無しさん (ワッチョイ 3b42-bIh6)2016/12/29(木) 10:27:38.30ID:KtJtlY/K0
>>350
できん
ソースは俺
0364デフォルトの名無しさん (ワッチョイ 0ece-O/vA)2016/12/29(木) 10:55:47.24ID:ZKfLUl1q0
>>336
ぶっちゃけ、朗報じゃないな。
エィっと、即刻https 接続必須にすべきだったと思うよ。
0365デフォルトの名無しさん (ワッチョイ d33c-CBwx)2016/12/29(木) 17:09:44.23ID:Ql74sNGH0
>>350
だがSwiftにどっぷり使っててたまに触るとど忘れしてるんだよな
0366デフォルトの名無しさん2016/12/29(木) 20:31:48.17ID:P9vMwfrX
XXX-Bridging-Header.hにでインポートしたヘッダファイルに書かれてる
コンパイラディレクティブ@class XXXXがswift側から見えないようで
Use of undeclared type ‘XXXX’
ってエラーがでるんですが解決方法とかありますか?
0367デフォルトの名無しさん (JP 0H4f-Vq3R)2016/12/30(金) 16:15:57.73ID:Q3tvxZdgH
>>365
老化
0368デフォルトの名無しさん (ササクッテロラ Spa3-LbII)2016/12/30(金) 18:28:31.72ID:+0G7T/E5p
Xcodeの問題かと思ったけど、シンプルな状態にしてもだめぽ

$ cat bridge.h
@class Hello;

$ cat main.swift
let hello = Hello()

$ swift -frontend -c -import-objc-header bridge.h main.swift
main.swift:1:13: error: use of unresolved identifier 'Hello'

@class使わないで、素直に@interfaceで宣言したヘッダを食わせるしかないんじゃないかね
swift-evolutionにも上がってない気がするから、どうしても欲しいなら挙げてみてはどうだろう
0369デフォルトの名無しさん (ワッチョイ f31d-qQw5)2016/12/31(土) 01:24:26.16ID:JiRCGpmr0
Swiftの文字列の範囲ってどうなってるの?

"いろは"..."こまち" ~= "かおり"がtrueを返すのが良くわからない
0370デフォルトの名無しさん (ワッチョイ d33c-Sa8B)2016/12/31(土) 09:25:48.68ID:mE/kuofD0
>>369
"いろは" <= "かおり" && "かおり" <= "こまち"
0371デフォルトの名無しさん (ワッチョイ f31d-qQw5)2016/12/31(土) 11:55:44.89ID:JiRCGpmr0
そういうことか
ありがとうございます
0372デフォルトの名無しさん (ワッチョイ c678-qQw5)2017/01/01(日) 16:12:05.39ID:LRDjbo8a0
>>369
どうしてそう言う文字列判定をやりたくなったのかをkwsk
0373デフォルトの名無しさん (ワッチョイ f31d-qQw5)2017/01/01(日) 16:49:50.79ID:pJ4YqSE70
詳解Swift読んでたら出てきただけだよ
0374デフォルトの名無しさん (アウアウカー Sa6b-nn1e)2017/01/03(火) 20:58:51.42ID:i262efYCa
1年くらい独学でやってきたけど、最近いきづまってきたなぁ。独学というのが無理があるのか、、、
勉強会でもあれば参加したい。
0375デフォルトの名無しさん (ワッチョイ 865b-O/vA)2017/01/03(火) 21:21:58.86ID:mYtDE+670
そもそもSwift自体に無理があるから気にしなくていいと思う
0376デフォルトの名無しさん (ワッチョイ 4a3c-cI3V)2017/01/04(水) 02:15:14.63ID:YVtV1wPR0
1年も独学ってどんだけ深掘りしてるのよ
0377デフォルトの名無しさん (ワッチョイ 865b-O/vA)2017/01/04(水) 09:22:00.67ID:ws9aPhGs0
Swiftは仕様がコロコロかわるから学習もダラダラしちゃうんだろう
0378デフォルトの名無しさん (スッップ Sdaa-4xst)2017/01/04(水) 09:55:37.90ID:AKqv+vIqd
Swiftはモダン()さを追求してんのか知らんが、「無駄に」without Cなんだよな
ラットナーのセンスがクソ過ぎ
0379デフォルトの名無しさん (ワッチョイ 4ac9-CBwx)2017/01/04(水) 11:42:36.33ID:UeSeDktg0
リセットできる機会に無批判にC追従するほうがよっぽど無駄だろ
そんなんだから老害って陰口言われるんだぞオッサン
0380デフォルトの名無しさん (スッップ Sdaa-4xst)2017/01/04(水) 12:14:42.85ID:JWIK2up0d
短絡的に老害とかいう意識高い系もどうかと思うわ
0381デフォルトの名無しさん (アウアウカー Sa6b-nn1e)2017/01/04(水) 12:23:42.84ID:BZb3HoVpa
1年独学したと書き込んだものですが、もともとフォートランを少しかじったことある程度なんで、
プログラミングを1からやりたいという気持ちでした。
なかなかサンプルの内容も?となることがまだ多くて、独学の限界かもって思ってました。
0382デフォルトの名無しさん (ワッチョイ 865b-O/vA)2017/01/04(水) 12:47:37.75ID:ws9aPhGs0
>>378
>「無駄に」without C
無駄にねぇw
まあわからんでもない
べつにwithout Cはいいんだけど、Cの便利だったシンタックスも
意地でも変えなきゃいけない感は確かにあるかもな
0383デフォルトの名無しさん (ワッチョイ 865b-O/vA)2017/01/04(水) 13:01:22.83ID:ws9aPhGs0
>>381
発展途上なSwiftがまともに勉強する言語だというのは少し可哀想な気もするけど
一つ一つ覚えていけば難しくはないと思うけどな
行き詰まってるポイントでも書いてみればここにいるSwift愛者が答えてくれると思う
0384デフォルトの名無しさん (ササクッテロリ Spa3-fehe)2017/01/04(水) 14:16:51.43ID:YWPaOegwp
一年前のswiftってどんなだったかなぁとQiita眺めてたら
Eitherが3で公式採用される?って夢見ててワロタ
そう言えばそんなものもあったなぁ
0385デフォルトの名無しさん (ワッチョイ 4a3c-cI3V)2017/01/04(水) 18:23:56.54ID:YVtV1wPR0
>>381
最初にプログラミングの独学の仕方を独学することを勧める
Swiftに限って言えば今のところ英語のリソースにあたらないと厳しいと思う
0386デフォルトの名無しさん (ワッチョイ de42-lvqa)2017/01/04(水) 18:41:03.84ID:SBIBjCGJ0
>>385
E言語の独学方法を教えてくれ。
0387デフォルトの名無しさん (ワッチョイ 1eba-vAWO)2017/01/04(水) 18:42:19.06ID:oADIImOs0
他人のコードを読む
以上
0388デフォルトの名無しさん (ワッチョイ d33c-Sa8B)2017/01/04(水) 22:55:09.63ID:MF1GJy5o0
>>381
読む→調べる(what)→調べる(why)
https://github.com/apple/swift/tree/master/stdlib/public/core

行き詰まったら聞く
0389デフォルトの名無しさん (ワッチョイ 4a3c-cI3V)2017/01/04(水) 23:50:11.58ID:YVtV1wPR0
>>386
まず目的の質を高めるのが大事
具体的に解決したい問題が念頭にあるかどうかで学習効率が大きく変わってくる

何のためにプログラミング言語を学ぶのか?
プログラミング言語を学ぶことで解決したい問題は何なのか?

例えば以下の3つなら3番目が断然学習効率が高い(エロ最強)
- 関数型プログラミングの考え方を知るためにHaskellを学ぶ
- iOSアプリを作れるようになるためにSwiftを学ぶ
- エロ動画のコレクションを自動生成できるようになるためにJavaScriptを学ぶ
0390デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/05(木) 00:05:47.40ID:JJBRc58h0
(続き)
1. 目的の質を高める

2. 信頼できる優れたリソースを選ぶ
   - チュートリアル、本、動画、オンラインコース、その他
   - スタンダードライブラリ、サードパーティライブラリ、その他ソースコード

3. 短期間に集中して学ぶ
   - 本なら1冊2週間以内が理想、どんなに長くても1ヶ月

4. 読むだけ見るだけじゃなく必ず手を動かす
   - 写経するだけでもやらないより格段にいいが自分で考えてコードを書く問題があると身につきやすい

5. ノートを取る
   - 本を読み返さなくてもある程度復習できるように
   - 自分の場合はアウトライナーを使ってる(マインドマップとかでもいいと思う)

6. 学びながら作る
   - 自分が欲しいと思う簡単なツールを学びながら作る
   - 例えば「セール中アプリを通知するツール」等
   - 言語を学ぶためにはCUIツールのほうが効率がいい
   - テキスト処理・ファイル処理・Webスクレイピング等

7. メモる(ノートとは別)
- HOWTO/Tips:〜したい場合にはどうすればいいのか?
- WHY:なぜXXじゃなくYYするのか?
- ERROR:発生したエラー内容とその原因、再発防止策
- VOCABULARY:用語、概念
- REFERENCE:公式ドキュメント、Style Guide、リファレンス

以上が自分のやり方だけど目的や人によってやり方は変わるはず
0391デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/05(木) 00:11:19.38ID:JJBRc58h0
長文スマソ

良いコードを書くためにはたくさん読んでたくさん書いてたくさん書き直すのが大事だけど
新しいプログラミング言語を身につけるためには自分が使う道具を作ってみること(上の6番)が最重要な気がする
0392デフォルトの名無しさん (ワッチョイ 6f5b-9Pqs)2017/01/05(木) 00:12:03.17ID:t0+k7rBa0
Swiftとか不向きすぎだろ
0393デフォルトの名無しさん (ワッチョイ 5b3c-IbiL)2017/01/05(木) 01:08:30.19ID:RQyVxWdy0
SwiftのプロはSwiftで自家発電してるからな
そりゃ上達するわけだよ
0394デフォルトの名無しさん (スッップ Sdff-9Pqs)2017/01/05(木) 01:11:24.33ID:YFuTJ90Hd
Swiftが始めて学ぶ言語なのは絶対おすすめしない
変な癖がついて他言語学ぶときの障害になる
0395デフォルトの名無しさん (ワッチョイ 1b66-SevC)2017/01/05(木) 06:39:39.52ID:R8ehuYNe0
変な癖というか、なんでこれAppleがプッシュしちゃったのかわからんけど
後々に次世代になるポテンシャルはあるのかもしれんが
まだ海の物とも山の物ともつかない発展途上の言語で
なにより古参が困ってるのは

"別にこれでプログラミングが楽になるわけでもなんでもない、
理念なき新しい文法の新言語いつものように一個追加されただけ"
だってとこなんだよなぁ… 特に使う意味がない…
0396デフォルトの名無しさん (JP 0H3f-q3aP)2017/01/05(木) 06:59:23.35ID:42rV0dhtH
>>394
わかりますω
0397デフォルトの名無しさん (JP 0H3f-q3aP)2017/01/05(木) 07:00:36.19ID:42rV0dhtH
>>395
健保と住基とマイナみたいな
0398デフォルトの名無しさん (ワッチョイ ab8f-S2pU)2017/01/05(木) 10:22:06.94ID:xO3cTqiR0
初めて使う言語にoptional型があると
面倒くさいとしか思わないかな?
null地獄
0399デフォルトの名無しさん (ワッチョイ db1d-+flj)2017/01/05(木) 10:37:51.41ID:J4n9XDOy0
どうしてCGPointの位置がCocoaだと長方形の左下で、Cocoa Touchだと長方形の左上なんだろうね
0400デフォルトの名無しさん (ワッチョイ 1b7b-spyU)2017/01/05(木) 12:13:39.84ID:rS/TqFdr0
>>398
全てのオブジェクトの変数がoptionalであるJavaで入門する奴が多いんだからそこは大した問題じゃなくね
0401デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)2017/01/05(木) 12:35:52.19ID:PwoXhQQ80
>>399
数学意識して左下にしていたのを実用重視で改めたのでは
0402デフォルトの名無しさん (ササクッテロリ Sp3f-/ZRc)2017/01/05(木) 15:08:20.98ID:zjhRqjNop
nullが許されない言語仕様ってrust推しかよ

初めて使う言語がObjCだった人も多いしswiftでも別にな
ObjCメッセージ文法が至上なのはいいけど、汎用性がねぇw
Swift Optional型なんざそれに比べれば誤差よのう
0403デフォルトの名無しさん (アウアウウー Sa3f-IW1l)2017/01/05(木) 15:50:12.04ID:WkTIUcDja
ヌルが入る入らないを意識してプログラムするか?
0404デフォルトの名無しさん (ブーイモ MMff-S2pU)2017/01/05(木) 17:18:55.89ID:oFOZ2y/SM
いっそのことrustを採用してくんないかな、iphoneのためだけに新言語とかめんどい
0405デフォルトの名無しさん (ワッチョイ dfc9-f1yY)2017/01/05(木) 17:32:58.79ID:sWdRcuvD0
それいっちゃRustはFirefox書き直しのためだけの新言語なんだが…
0406デフォルトの名無しさん (スップ Sdff-oQtP)2017/01/05(木) 18:22:18.82ID:YNtiq33Od
>>404
ほんとこれ
0407デフォルトの名無しさん (ブーイモ MM3f-twlg)2017/01/05(木) 20:45:21.20ID:P+GiqLXdM
>>403
0408デフォルトの名無しさん (ササクッテロリ Sp3f-/ZRc)2017/01/05(木) 20:47:15.64ID:zjhRqjNop
rustはiOSで使えるクロスコンパイラが公式提供されてるんだから使えば?と思うけど
それはそれとして、 swiftがヤならobjcでいいじゃん、、、
どっちもイヤならアポー端末を諦めろというね
0409デフォルトの名無しさん (ワッチョイ 0f42-HvS5)2017/01/05(木) 21:15:32.68ID:P4uSEloo0
Swiftオープンにするっていってたやん!
0410デフォルトの名無しさん (ワッチョイ 0fba-oQtP)2017/01/05(木) 21:58:08.24ID:jBQh1CN00
オープンにしただろいい加減にしろ
0411デフォルトの名無しさん (ワッチョイ 6f5b-yz8t)2017/01/06(金) 00:00:22.89ID:bcUwFgd80
iPhone(Apple)専用言語という意味ではObj-CもSwiftも一緒だけど
初めて学ぶ言語ならObj-Cの方がCの勉強にもなるからSwiftより断然まし
SwiftはObj-C以上に排他的変態的シンタックスだから初学者には
やっぱり個人的にはお勧めできないわ
0412デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/06(金) 00:22:09.68ID:Y1Cw0qRA0
排他的変態的シンタックスってどの辺のこと言ってるの?
そんな特殊だと感じることはないんだが

Objective-Cに比べると格段にタイプ量が減って見た目もスッキリするから
個人的にはそれだけでも大きなメリット
0413デフォルトの名無しさん (ワッチョイ 1b66-SevC)2017/01/06(金) 00:28:39.65ID:BpurgW/q0
>タイプ量が減って
職業プログラマ特有のこの価値観がもうゲロ出るぐらい嫌い
0414デフォルトの名無しさん (ワッチョイ dfc9-f1yY)2017/01/06(金) 00:33:12.22ID:PzH0fr810
Swiftが排他的変態的とか他の言語知らなさすぎるだけだろ
プログラマとして勉強不足なのバレバレだぞ
0415デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/06(金) 00:33:15.56ID:Y1Cw0qRA0
はあそうか
タイプはXcodeが補完してくれるから実質的にはそこまでの違いはないかもしれないんだが
文字を読む量が違うんだよ でそれはバグの量に直結するかんね
0416デフォルトの名無しさん (ワッチョイ 1b66-SevC)2017/01/06(金) 00:50:24.79ID:BpurgW/q0
>文字を読む量が違うんだよ でそれはバグの量に直結するかんね
はぁ。
あなたは一生work1にwork2から変数A1を代入してこれでバグが少ない!とほざいててください。それでいいよ
0417デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)2017/01/06(金) 01:05:43.98ID:/fM3tdtK0
タイプ量の少なさは職業プログラマ云々より
関数型言語界隈からの価値観というか流れでは
0418デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/06(金) 01:57:40.55ID:Y1Cw0qRA0
>>416
読む量が減ればバグが減るって言ってるのに増やしてどうすんねんw
0419デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/06(金) 01:58:56.36ID:Y1Cw0qRA0
workなんて言葉久しぶりに聞いたけど
今でも普通に使われてる言葉なの?
0420デフォルトの名無しさん (ワッチョイ dfc9-6vgr)2017/01/06(金) 02:18:34.24ID:EL7IyQQ80
>>404
同意
0421デフォルトの名無しさん (ワッチョイ 5f93-+flj)2017/01/06(金) 07:52:01.44ID:Q/mvZ92R0
>>389
>>390
お前良い奴だな
なかなかいい学習ノウハウだ

おれRuby勉強した時は良質なxx写真がアップされているスレを解析して
スレ内のURLから写真を片っ端からダウンロードするプログラムを書いたな

そう言えば大学院の先輩に英語の速読できるようになりたいと聞いた時の回答は「Hな本読むといいです」だった

つまりエロ最強!
0422デフォルトの名無しさん (スプッッ Sdff-B9xl)2017/01/06(金) 12:21:21.27ID:RUdDycfgd
>>415
そう、冗長だと見通しが悪すぎる。
半分はライブラリ設計のせいで、残りはc言語のせいの気もするけど。
0423デフォルトの名無しさん (ワッチョイ bb10-51vH)2017/01/06(金) 19:38:50.74ID:Gq0Nc1/d0
Obj-CのNSArrayとかNSDictionaryのシンタックスシュガーなかったころはマジで横長になりすぎて読みづらかったけどね。
同等のJavaのコードに比べて、単に配列から値を取り出してるだけの行も複雑な命令を実行してる行も同等に横いっぱいになるから飛ばし読みがしづらくてしっかり読む必要があった。
わけのわからない変数名や関数名をつけて短くていいよねみたいな話ではないよ。BASICとかの時代じゃないんだからさぁ。
0424デフォルトの名無しさん (ワッチョイ 2b0c-tEgc)2017/01/07(土) 00:28:19.84ID:DNozFqRa0
ポインタ周りをもうちょっとC寄りにしてくれたらなぁ。

別ファイルで objc コード書くと見通し悪いから、Swift に局所的に objc コード埋め込めたりすると面白いかな、
C#のunsafeとか __asm {} みたいに。欲を言えば言語指定クロージャみたいな感じ
0425デフォルトの名無しさん (ワッチョイ 5f93-+flj)2017/01/07(土) 08:53:14.57ID:4HC1Pjzk0
>>424
それじゃwithout cにならないべ
0426デフォルトの名無しさん (ワッチョイ 6f5b-yz8t)2017/01/07(土) 08:55:58.44ID:72YrLFZp0
だからwithout Cにする意味がないんだって
0427デフォルトの名無しさん (ササクッテロリ Sp3f-L2iV)2017/01/07(土) 08:57:56.42ID:182Vw6zJp
それこそ可読性が悪いソースになりそう
0428デフォルトの名無しさん (ササクッテロリ Sp3f-/ZRc)2017/01/07(土) 09:19:02.71ID:OQtShFizp
HTMLの中にプログラム書けると可読性よくね? > PHPスゲー

なお、現在は、、、
0429デフォルトの名無しさん (ワッチョイ 6f5b-yz8t)2017/01/07(土) 09:31:45.95ID:72YrLFZp0
「無駄に」without CなSwiftならではの悩みだな
0430デフォルトの名無しさん (アウアウウー Sa3f-yz8t)2017/01/07(土) 09:37:34.24ID:iBRfuxUXa
可読性を犠牲にしてまでもSwiftのソース中にCのソース埋め込めたらなぁ
って思う時って例えば具体的にどういうケースなんだろ
ただ単にC言語に慣れててすぐ書けるからってことじゃないよね?
0431デフォルトの名無しさん (ササクッテロリ Sp3f-/ZRc)2017/01/07(土) 12:02:53.35ID:OQtShFizp
>>424はSwift中にCが書けると可読性良くなると思ってるから質問に答える人がいない

一応、UnsafeMutablePointerを操作するよりはCの生ポインタ操作出来る文法が楽ってのはあるけど
Swiftでポインタ操作が必要なら自前ラッパーAPIで隠蔽して上位レイヤーでは気にしなくて済むようにするよ
0432デフォルトの名無しさん (ワッチョイ 6f5b-yz8t)2017/01/07(土) 12:17:38.95ID:72YrLFZp0
細かい操作を実装できるCの柔軟性は強いよね
Obj-Cなら何も考えずそのまま実装できたことをSwiftでやろうとした時
どうするかって話だね
without Cを高らかに謳っているのだから仕方ないね
頑張ろう
0433デフォルトの名無しさん (オッペケ Sr3f-6vgr)2017/01/07(土) 17:26:53.31ID:UVIgJaZNr
>>430
システムコール使うときとか?
0434デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/07(土) 17:53:33.27ID:p94OVxAQ0
別スレで話に上がってたけど
ファイルを行単位で読んで処理しようとする時とか
CのAPI使ったほうがスッキリ書けたりするケースがあるんだよね
http://stackoverflow.com/a/24669956/1000690
0435デフォルトの名無しさん (アウアウウー Sa3f-yz8t)2017/01/07(土) 18:02:35.45ID:hf6ybaU+a
>>434
でも、それ別ファイルにCで記述して、Swiftから呼ぶようにした方がメンテナンス性あるんじゃね?
0436デフォルトの名無しさん (ササクッテロリ Sp3f-/ZRc)2017/01/07(土) 18:34:39.92ID:OQtShFizp
CR, LF, CRLFを認識出来てないそのコードは危なかろうて
回答上位にある汎用クラス作って云々が良いとも思わないけども

そういうフォローをちゃんとした単純関数で実装したらCでもSwiftでも大して変わらんよな
、、、Swiftなら全データをStringに突っ込んで、改行文字でsplitとか乱暴するのも一興か
0437デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/07(土) 18:52:21.07ID:p94OVxAQ0
>>435
どうだろうね?
別ファイルにしてAPIのインターフェース考えて実装してメンテナンスしていく手間をかけるだけのメリットがあるのかどうかによるよね

>>436
メモリのフットポイントを気にしないならSwiftでもそう変わらないだろうけど
気にするならNSDataとかで処理しないといけないからSwiftのほうが面倒だと思うよ
0438デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)2017/01/07(土) 19:10:10.76ID:IyWm4kw10
この手のはアドホックなことせずに
バイトストリーム、キャラクタストリーム, レキサー/パーサーに分けて繋げた方が後が楽だと思う
0439デフォルトの名無しさん (ワッチョイ 2bf8-+flj)2017/01/07(土) 20:04:55.49ID:Gk0CJ/2J0
>>434
CのAPIの方が簡単と言うのはプログラマが担保しなきゃいけない安全確認とかを全部すっ飛ばして書けるからであって

必要な安全性を確保しながらコード書くならSwiftの方が簡単だよ
0440デフォルトの名無しさん (ワッチョイ 6fa2-+flj)2017/01/07(土) 20:37:16.77ID:w3Yo/XU60
withoutCマンセーと言われましても
SIMD使う時とかはしょうがないよね?

そういうケースが稀なのは認める。
0441デフォルトの名無しさん (ワッチョイ dfc9-f1yY)2017/01/07(土) 20:48:06.16ID:eRueAzeT0
without CはSwift単体の文法の話であって、別にCとの適材適所・協調/協働を否定する標語では全くないのにわざと混同してる奴がいるな?
0442デフォルトの名無しさん (アウアウウー Sa3f-yz8t)2017/01/07(土) 20:52:00.96ID:UTTve38fa
>>437
別ファイルにするにしても、同一ソース内に埋め込むにしても、データ受け渡しのためのインタフェースは考えないといけないだろ
0443デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/07(土) 21:18:40.07ID:p94OVxAQ0
>>439
そういうケースもあるだろうけど例として上げたケースは
用意されてるCのAPIを使うかSwiftで自作のAPIを作るかの違い

>>442
コード見たの?

import Darwin
let bufsize = 4096
// let stdin = fdopen(STDIN_FILENO, "r") it is now predefined in Darwin
var buf = UnsafePointer<Int8>.alloc(bufsize)
while fgets(buf, Int32(bufsize-1), stdin) {
print(String.fromCString(CString(buf)))
}
buf.destroy()
0444デフォルトの名無しさん (スププ Sdff-+flj)2017/01/07(土) 21:48:31.26ID:A7PZcJW4d
>>443
>用意されてるCのAPIを使うかSwiftで自作のAPIを作るかの違い

そこに「用意されているSwiftのAPIを使う」と言う選択肢がないのがおかしくないかい?

SwiftならファイルパスでStringを初期化してenumrateLinesするだけでいいから
CのAPIでゴチャゴチャ作るよりはるかに簡単で安全だよ?


例えばあなたが>>443の下部で引用しているCの関数を使った例では
バッファサイズとして4096を取っているから
一行が4095文字以上の入力を受けると正しく動作しなくなっちゃうよ
この制限をC言語で解決するのは結構面倒くさいよ
0445デフォルトの名無しさん (アウアウウー Sa3f-yz8t)2017/01/07(土) 21:49:05.59ID:UTTve38fa
>>443
コード見たよ
で?
0446デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/07(土) 21:55:01.67ID:p94OVxAQ0
>>444
>SwiftならファイルパスでStringを初期化してenumrateLinesするだけでいいから

それメモリに全部読み込んでるでしょ?
極端な例だけど300MBのファイルだとして全部最初にString化するの?
0447デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/07(土) 21:55:42.79ID:p94OVxAQ0
>>445
見てて>>442みたいな考えなら特に言うことはない
0448デフォルトの名無しさん (スプッッ Sdff-GcKO)2017/01/07(土) 22:12:08.42ID:DTtrdLJ+d
>>434
「ファイルを行単位で読んで処理しようとする時とか」の「とか」は、「ファイルを行単位で読んで処理しようとする時」以外の何?

>>439
「プログラマが担保しなきゃいけない安全確認とか」の「とか」は、「プログラマが担保しなきゃいけない安全確認」以外の何?


そんな「とか」の使い方じゃ、まともな仕様は作製できない。
0449デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)2017/01/07(土) 22:21:44.29ID:IyWm4kw10
研鑽兼ねて>>438で書いたこと自分でやってみた
http://swiftlang.ng.bluemix.net/#/repl/5870e7500f558d57abf31839
・セル内の改行に対応
・パイプライン的に処理(バッファ境界でUTF8が破断することも無し)
・改行コードはちょっと端折り
0450デフォルトの名無しさん (ワッチョイ 5f93-+flj)2017/01/07(土) 23:25:32.71ID:4HC1Pjzk0
>>448
残念ながらこれは仕様書ではない

安全確認以外の何かを明確にするにはまず安全とは何かを定義しなければならないが
それを定義にするのは本来の議論の範囲外であり、
議論の本質の理解の妨げになるためあえて定義を行わなかった

そこで、明確に定義されていないことを明確に示すために「とか」を用いている


そう言うことを聞きたいわけ???
0451デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/07(土) 23:32:17.40ID:p94OVxAQ0
>>449
超できる子だな

Swiftのシーケンスって読み終わったところからメモリ開放されるのかな?
そうじゃなければ別途chunkに分割しないと全処理時は最終的にメモリに乗るよね
0452デフォルトの名無しさん (ササクッテロリ Sp3f-/ZRc)2017/01/07(土) 23:54:15.55ID:PPvI4deGp
出来ない子だな、お前は教えて君か
0453デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)2017/01/07(土) 23:55:36.10ID:IyWm4kw10
>>451
Iteratorのクロージャが強参照してるもの以外は順次開放されるよ
UTF8デコーダと内部バッファ(4バイト?)、字句解析用の変数(end,hold)、
1レコード分(row:[String])がメモリ消費する

Array(parseCsv(...))すると全部抱えてしまうのでforEachで1レコードずつ処理する必要はある
0454デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)2017/01/08(日) 00:11:05.12ID:JrkgmnK40
あと filePath → AnyIterator<UInt8>
http://swiftlang.ng.bluemix.net/#/repl/587104360f558d57abf31847
0455デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/08(日) 00:46:34.89ID:9hp7bz6e0
>>453
そっかありがとう

>>454
すげーな 超参考になる
ファイル読み込みはchunkでやるけどあとはバイトストリームで処理できるから境界の心配しなくていいのね
こういうシーケンス使った考え方を知るのになんかオススメの本とか資料とかもしあったら教えて
Swiftじゃなくてもいいので
0456デフォルトの名無しさん (ワッチョイ 6f5b-yz8t)2017/01/08(日) 09:45:34.32ID:qkk6ZrX+0
->って何?アロー演算子ですか?^^
0457デフォルトの名無しさん (ワッチョイ 5b3c-HvS5)2017/01/08(日) 10:12:37.73ID:JrkgmnK40
>>455
今ググって見つけたページではあるけど、こういうから知識を拾っておくと良いかも
http://hexadrive.jp/hexablog/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0/12405/
http://ufcpp.net/study/csharp/da_about.html
http://postd.cc/pipes-and-filters/
の前半あたり
http://www.aerith.net/design/Decorator-j.html

切り分け方は先人に学ぶ感じで
http://kmaebashi.com/programmer/devlang/yacclex.html
https://msdn.microsoft.com/ja-jp/library/cc351995.aspx

用語バラバラだから似てるもので並べると
Swift3のSequence(2のSequenceType) ≒ AnyIteratorを返す関数
≒ JavaのIterable ≒ Pythonのジェネレータ ≒ C#のイテレータブロック/IEnumerable

Swift3のIteratorProtocol(2のGeneratorType) ≒ AnyIterator
≒ JavaのIterator ≒ Pythonのイテレータ ≒ C#のIEnumerator

※AnySquence, AnyIteratorはジェネリクス対応用(型消去法)
0458デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/08(日) 17:36:54.12ID:9hp7bz6e0
>>457
ありがとう
心のなかでマスター先生と呼ばせてもらうよ

素養が違うからか教えてもらった記事からだとマスター先生の考え方に近づけそうにないんだが
もう少し頭のなかをストリーム化できるように日々修行するわ
0459デフォルトの名無しさん (ワッチョイ df3c-FtWv)2017/01/08(日) 17:40:12.38ID:9hp7bz6e0
>>456
関数の戻り値の型

func greet(person: String) -> String {…}
↑Stringを返す関数
■ このスレッドは過去ログ倉庫に格納されています