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
2017/05/16(火) 11:59:38.46ID:ICwew/1a0
>>587
記事が2016年という前提で
↓のextensionが足りない
https://github.com/ReactiveX/RxSwift/blob/b628f2a105c3745e092300fa93d54b929eba59a1/RxSwift/Extensions/Bag%2BRx.swift

正常動作かどうかは知らないがとりあえず追加
http://swift.sandbox.bluemix.net/#/repl/591a698acfa69e773dc97f42
589デフォルトの名無しさん (ワッチョイ 93f3-LQvu)
垢版 |
2017/05/16(火) 13:30:21.26ID:5DkIZU+i0
>>588
THX

今日は、現実逃避の為にRxSwift三昧です。

こんなメール
>>今期のxxxさんの業務目標について、iOSアプリについては、私から指示があります。

しばらく、ブッチしよう。
590デフォルトの名無しさん (ワッチョイ 93f3-LQvu)
垢版 |
2017/05/16(火) 16:38:05.02ID:5DkIZU+i0
>>588
あんた、達人だね。
2017/05/16(火) 21:01:58.80ID:V62zB62H0
RxSwiftみたいな何年も前の流行りモノを業務時間内に学習してる後輩/部下がいたら指導するわw
Swift 2.xの頃にEitherフレームワークが便利!と食いついて3.0でorzになった奴らと大して変わらんと思うんよ

Either、使いやすそうだったから言語公式に入ってくれたら良かったのになぁ
3.0でthrowsが入った時には、ObjCとの兼ね合い上、そうなるしかないのか・・・とSwiftに対して諦観した
2017/05/17(水) 00:39:16.19ID:Ohq1+PUR0
throwsが入ったのは2.0だが
2017/05/17(水) 01:01:44.90ID:jqU81Xra0
>>582
air はクソ コンパイルが遅い
Swiftで使うのは酷だな
2017/05/17(水) 01:03:27.25ID:jqU81Xra0
>>572
結局そこだよな
ウンコ環境のXCodeでテキスト書かないと行けないのが
Swiftの生産性の低さだし
2017/05/17(水) 01:09:00.66ID:wBpGRZBOa
C#とかJavaってテキストエディタだけでも生産性高いの?
2017/05/17(水) 02:12:48.46ID:v4KZ2kPEa
C#はC#6以降は割とマジで生産性高い。
kindle本からのコピペでスペースがおかしいが。。。

u s i n g S y s t e m ;
u s i n g s t a t i c S y s t e m . C o n s o l e ;
c l a s s P r o g r a m {
s t a t i c v o i d M a i n ( s t r i n g [ ] a r g s ) {
W r i t e L i n e ( " H e l l o W o r l d ! " ) ;
}
}

using staticでSystem.Consoleまで指定すればWriteLineだけで良くなった。
その他色々短縮したり仕様上、出来なかったことが出来るようになったり。
2017/05/17(水) 09:19:35.81ID:ZxePWPEe0
>>592
orz、Swiftに諦観したのはそんな前だったか
それでもまぁあの頃は更新頻繁で楽しかった、今は更新少なくて寂しい
2017/05/17(水) 11:35:09.00ID:q4Dy9Gb80
>>596
これだけじゃぁ何がすごいのかわからないなりよ
599デフォルトの名無しさん (ササクッテロリ Sp27-U5YD)
垢版 |
2017/05/17(水) 13:56:25.22ID:8ydAfzFNp
以前は
using System;
class Program {
static void Main(string[] args) {
Console.WriteLine("HelloWorld!");
}
}
だったものが
using System;
using static System.Console;
class Program {
static void Main(string[] args) {
WriteLine("HelloWorld!");
}
}
で済むようになった、すごい!

なお、Swiftでは以下の一行で済む、Swiftもっとすごい!
print("HelloWorld!")
2017/05/17(水) 14:03:46.15ID:AiW2lEeYp
::::::::        ┌─────────────── ┐
::::::::        |  C#がやられたようだな….      │
:::::   ┌───└───────────v───┬┘
:::::   |フフフ…奴は四天王の中でも最弱 ….      │
┌──└────────v──┬───────┘
| Swiftごときに笑われるとは    │
|  我ら四天王の面汚しよ…    │
└────v─────────┘
  |ミ,  /  `ヽ /!    ,.──、
  |彡/二Oニニ|ノ    /三三三!,       |!
  `,' \、、_,|/-ャ    ト `=j r=レ     /ミ !彡
T 爪| / / ̄|/´__,ャ  |`三三‐/     |`=、|,='|
/人 ヽ ミ='/|`:::::::/イ__ ト`ー く__,-,  、 _!_ /
/  `ー─'" |_,.イ、 | |/、   Y  /| | | j / ミ`┴'彡\
    C++        Java     JavaScript
2017/05/17(水) 17:22:44.69ID:i1ICJ16i0
   /ミ !彡      ●  
  |`=、|,='|    _(_
   、 _!_ /   ( ゚ω゚ )
 / ミ`┴'彡\ '    ` 
          Visual Basic
2017/05/17(水) 23:03:15.55ID:Noyf0zx+a
あれ。。。
SwiftってもしかしてLL?
インタプリタ?
2017/05/17(水) 23:06:00.60ID:Noyf0zx+a
とりまC#6の新機能紹介のページググったわ
http://www.buildinsider.net/language/csharplang/0600
2017/05/18(木) 09:19:16.04ID:pNgi+zrhd
>>599
皮肉が効いてるな
表面的なコード量が短いことが他の全てのことに優先して正義だと本気で思ってる奴がいるからな
2017/05/18(木) 10:03:29.76ID:pE9H07RL0
表面的なコード量が長いことをコンプレックスに持ってる言語もいるよね・・・
そして、一長一短の他者を認めることもなく他言語を総じて悪と本気で思ってたり

>>603
ざっと見たけどSwiftで同等のこと出来てね?所詮、四天王最弱か
2017/05/18(木) 10:44:29.14ID:rvD/i38o0
>>591
あんた、厳しいなぁ。

それから、流行り物っていう評価はどうかな?
今後、廃れていくと言うことを、暗に言ってるつもりなのか?
2017/05/18(木) 11:51:08.83ID:cbVNyV680
Playgroundでシコシコ遊んでると、そのうち出力が表示されなくなったり無反応になるんだが
どうにかならんもんかね
2017/05/18(木) 12:01:12.99ID:rvD/i38o0
>>607
そんなもんだ。
Xcode再起動。
2017/05/18(木) 13:53:48.78ID:cxDrW8CM0
Apple無念・・・

Google、KotlinをAndroidアプリ開発言語に選定―I/O会場から大喝采
http://jp.techcrunch.com/2017/05/18/20170517google-makes-kotlin-a-first-class-language-for-writing-android-apps/
2017/05/18(木) 13:59:24.41ID:TSzqrQQ0a
>>605
まあ最新はC#7で、おいらはプログラミングから離れたんでうらしま太郎状態なんだけどね。
VSやコンパイラもC#で作られたのがC#6からだっけ。。。
2017/05/18(木) 14:56:56.01ID:73+z2CN30
>>609
何が無念?
2017/05/18(木) 15:59:16.23ID:xh1cvqBY0
Swiftにならなかった、ということだろう

Google、SwiftをAndroidの第一級言語にすることを検討?
http://www.excite.co.jp/News/it_g/20160409/Slashdot_16_04_09_014248.html
613デフォルトの名無しさん (ワッチョイ 6f54-cCxu)
垢版 |
2017/05/18(木) 16:19:36.22ID:rvD/i38o0
>>610
Visual StudioがC#で?
あの遅い言語のC#で?

それは本当か?
614デフォルトの名無しさん (ワッチョイ 6f54-cCxu)
垢版 |
2017/05/18(木) 16:24:16.64ID:rvD/i38o0
>>609
>Kotlin

こいつが気にくわないのが、val, varなんだよねぇ。定数、変数の違いを記述する方法が。

let, varにしてもらわんと、目がチカチカするわぁ。
615デフォルトの名無しさん (ワッチョイ 6f54-cCxu)
垢版 |
2017/05/18(木) 16:25:14.83ID:rvD/i38o0
swift -> kotlinコンバーターとか作れるのかなぁ?
2017/05/18(木) 16:32:06.75ID:fOFaQvk5p
SwiftはLLVMでコンパイルするんだからJVM向けバイナリ吐けばいいだけでしょ
なんでKotlinを挟む必要があるのか、それがワカラナイ(色んな意味でスットボケ
617デフォルトの名無しさん (ワッチョイ 6f54-cCxu)
垢版 |
2017/05/18(木) 16:33:43.40ID:rvD/i38o0
>>615
>swift -> kotlin
http://qiita.com/shoma2da/items/31edef012f224f99323c

あまりに似ているので、かえって混乱するかも
2017/05/19(金) 20:58:58.36ID:RywFaTWpd
swiftでiOS勉強したいのですが、参考になるOSSのアプリとか無いでしょうか
ドキュメントから入るより出来の良いコードを見たい派です
2017/05/19(金) 21:13:02.47ID:lzW4mJ600
GitHubにいっぱいあるだろ
2017/05/20(土) 13:02:32.18ID:wa2Zpry6M
>>614
同意
2017/05/20(土) 14:50:47.85ID:tp08styd0
Kotlinのval,varはScala先輩に倣ったものだから仕方ない
2017/05/21(日) 00:39:31.16ID:gwfvvdvz0
swift はそろそろ安定期に入ってもいいと思うんだ
2017/05/21(日) 09:35:27.70ID:PKguD9Ia0
>>622
bugレポ、沢山上がってるが、これはどうする?
2017/05/21(日) 11:11:35.71ID:xz6V7we20
バグレポを出す時にプルリクをセットにすれば安定はすぐだ
2017/05/21(日) 11:13:42.65ID:Wx20c4Ig0
>>622
無理無理
626デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/22(月) 09:20:46.59ID:QM6p1JyG0
>>622
bugレポ、新機能追加requestともに増えている状況だから
安定なんて、無理じゃね?
627デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/22(月) 09:23:11.36ID:QM6p1JyG0
Swift4 betaをinstallした後、Xcode8.3.2で切り替えながら使うqiita記事を見失った。

なんと言うタイトルだったか?どんなtagでqiitaを検索すればhitするのか?
教えてクレェ?
2017/05/22(月) 10:13:24.24ID:np8fDJ8H0
Xcode用のsnapshotはインストーラ形式だしダウンロードしてインストールしてXcodeのtoolchainで切り替えるだけの簡単操作やろ

Xcodeでの切り替えはXcode>Toolchainsか環境設定>Components>Toolchains

Terminalでの切り替えは
毎回頭にxcrun -toolchain swiftとつけて
xcrun -toolchain swift swift -version
とするか
export TOOLCHAINS=swift
すればいい

インストールされる実体は
/Library/Developer/Toolchains/xxx.xctoolchain
にある
.xctoolchain内のInfo.plistにあるCFBundleIdentifierをtoolchainの引数に指定すれば、複数のSnapshotをインストールしてても細かく切り替えられる
xcrun --toolchain org.swift.3020170515a swift -version
とか

去年はPlaygroundsがToolchainに対応してなかったけど今年は対応済みのようなのでPlaygroundsで色々試せていい
https://github.com/ole/whats-new-in-swift-4
2017/05/22(月) 10:14:58.82ID:WxrTRTpJp
xcrun selectとか(定期待ち)
630デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/22(月) 10:47:13.23ID:QM6p1JyG0
>>628
ありがとう。
超THX
631デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/23(火) 10:52:51.90ID:3fZmvxNt0
Swift歴2年、アプリリリース経験無しの非IT系リーマンです。Generics protocolとか難しいなぁと思いながら、RxSwiftのコードを解読してます。

Fortran, C++のコードを書いて金をもらった事があります。C#, Java, Obj-Cもチョコっといじった事があります。

Swift, C#, Java, C++の4つの内、どれが一番難しいと思います?
2017/05/23(火) 11:07:24.17ID:nyMT4OHb0
難しさでいったら、C++ 一択やろなぁ
2017/05/23(火) 11:12:58.06ID:3W0XlzKra
圧倒的にC++。
今でもMFCには玄人っぽさへの憧れはあるけど、MFCの本は最盛期に比べて大分減ったなぁ。。。

JavaやC#してから(特にC#のがC++に近いけど分からなくなる一歩手前まで取り入れてるからオススメ)、C++行くと理解が進むね。
634デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/23(火) 11:52:49.93ID:3fZmvxNt0
AppleのReferenceで混乱してる記述を発見

1. メタ・タイプを戻すグローバル関数type(of:)の説明には、戻り値がMetatypeとある。
2. メタ・タイプを引数にとるUITableViewCell.registerの説明には、引数がAnyClassとある。
どっちかに記述を統一してほしい。
2017/05/23(火) 13:01:08.53ID:IPskfFz70
Metatypeはstructやenumも含めた型でAnyClassはclassだけじゃない
636デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/23(火) 13:07:30.75ID:3fZmvxNt0
>>635
なるほどぉ
637デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/23(火) 13:46:30.45ID:3fZmvxNt0
>>633
Visual Studio6の頃までしか、MFCは知らんけど、
Microsoftは、MFCを放置してるんちゃうの?

同時に、C++11, C++14って進化してるのに、Micorsoft C++はこれも独自仕様
で放置されてる、ちゅうのが俺の印象なんすけど、違うんでしょうか?

最近のMicrosoft系開発環境に疎いので間違ってたら申し訳ないすけど。
2017/05/23(火) 14:21:59.30ID:ka9VvDM30
>>634
違いは>>635(AnyClassはclassだけ)であってるけど
補足するとMetatypeという識別子の型は無い
あれは単なるジェネリクスのプレースホルダ名

実際のメタタイプの型は「(型名).Type」でAny.Type型にも入れられる
AnyClassは「AnyObject.Type」のエイリアスでclassのメタタイプのみ入る

ちなみにメタタイプの値自体はclass型でないのでメタタイプのメタタイプはAnyClassに入らない
class A{}
let a:AnyClass = A.self //OK
let b:AnyClass = A.Type.self //NG
let c:Any.Type = A.Type.self //OK
639デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/23(火) 17:12:29.92ID:3fZmvxNt0
/var/folders/4x/4kvmnvfd46zdv9xt45wf2kx00000gn/T/
vzb3TAU/1:20:19: warning: operator should no longer be declared with body
infix operator ^^ { }
~^~~

SwiftコンパイラーをTerminal.appで動かすと上記の様なwarningが出ます。
エラーの内容は^^演算子が定義されていません。って事だんですけど。これは、置いておいて、
1:20:19は何を表わしてるのでしょうか?20行目19カラムって事は判ったのですが、1は何でしょう?
1番目のソースって事なんでしょうか?
2017/05/23(火) 18:36:11.48ID:PJIONmxya
>>637
リボンUIはMFCらしいってのまでは追ってたんで、今も地味に進化してると思うけど、おいらも分からん。

あの機能は何の為かとか分かるようになったけど、結局C++触らなくなった。
再入門しようにも入門書の少なさよ。。。
641デフォルトの名無しさん (ワッチョイ ca3b-ydzL)
垢版 |
2017/05/23(火) 19:14:39.26ID:1Q8iu32F0
ビルドキャッシュとして
/var/folders/4x/4kvmnvfd46zdv9xt45wf2kx00000gn/T/vzb3TAU/1
ってファイルがあるんじゃないの
一時的に作られてすぐ削除されるかもしれんから存在確認できるか知らんけど
2017/05/24(水) 01:14:07.99ID:9HF6LZlN0
そもそもwindowsのアプリ開発でMFC使う事情って保守以外に何あるの?
2017/05/24(水) 07:14:18.79ID:6yksy5B10
このスレチの話題の結末が

MFCがmacOSで使える、そうSwiftならね

だったら感動する
2017/05/24(水) 10:39:54.11ID:2xFOJ35Oa
感動はするけど、真っ平御免だなw
2017/05/24(水) 10:40:45.91ID:2xFOJ35Oa
>>642
怖いもの見たさで再挑戦したいだけ。
スレチだし気にしないで。
646デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/24(水) 10:44:09.55ID:vuqBov/y0
>>642
動作の軽いアプリが作れる。
.netアプリは動作がモッサリ
2017/05/24(水) 11:45:23.69ID:4nncZNTTH
MFCはクラスライブラリとは言ってるけどただのモジュールだからなω
2017/05/24(水) 12:03:02.42ID:2l4fECtb0
KFCはファーストフードとは言ってるけどただのフライドチキンだからなω
2017/05/24(水) 12:10:44.50ID:4nncZNTTH
KFC高いよね
2017/05/24(水) 12:40:42.62ID:QzCZ6xD4a
あとポケトも不味いよね
2017/05/24(水) 12:43:35.78ID:5Ui6S+Mpp
macもファストフードって言ってるけどハンバーガーなんだよな...
2017/05/24(水) 15:21:05.18ID:9HF6LZlN0
もうkotlinでいいんじゃね。大体同じだし。
2017/05/24(水) 15:27:20.63ID:yyV+KPjA0
Kotlinの方が名前が可愛いな
654デフォルトの名無しさん (ブーイモ MMea-XqYc)
垢版 |
2017/05/24(水) 15:39:03.23ID:EADXj+S1M
バカッターの次はマスト鈍かよ
Swiftはコンパイル必要とかスクリプト言語だとかクッソデタラメばかり撒き散らしてやがる
Swiftはスクリプト言語のようにJIT実行もできるし事前コンパイルして動作することもできるっちゅーねん
よくわかってないからと言って既存のカテゴリに当てはめようとするからおかしくなるんだ。黙ってればいいのに。
twitterもマストドンもバカに絡まれたくないから間違ってても誰も訂正してくれないてことはもうそろそろ理解しないといけないだろうに
2017/05/24(水) 15:43:46.34ID:820zba2j0
つまりkotlin統一でいいね?
656デフォルトの名無しさん (ワッチョイ 9ff3-A/6v)
垢版 |
2017/05/24(水) 16:16:47.79ID:vuqBov/y0
kotlinのvar, valが嫌いだ。
var, letにしてくれ!
2017/05/24(水) 17:53:01.63ID:IPRnvfLw0
じゃあvar, letにした新言語Kotiftで
2017/05/24(水) 18:40:00.41ID:fS2T0Ehba
>>647
そうそう。
macで使えるようになって嬉しいとしたらDelphiのVCL。
C#の中の人(Delphiの生みの親)をMSから引き抜けw
659デフォルトの名無しさん (ワッチョイ fbf3-Y9+t)
垢版 |
2017/05/25(木) 08:20:49.95ID:STB2bQ410
>>658
VCLって使った事ない。
けど、噂には聞いている。

最近のDelphiではiOSアプリ作れるのか?
660デフォルトの名無しさん (ワッチョイ fbf3-Y9+t)
垢版 |
2017/05/25(木) 08:39:03.16ID:STB2bQ410
RAD StudioってのでiOSアプリ作れるみたい。
661デフォルトの名無しさん (ワッチョイ fbf3-Y9+t)
垢版 |
2017/05/25(木) 09:04:58.00ID:STB2bQ410
http://qiita.com/kazaiso/items/7f4955318f9d40a391fc
2017/05/25(木) 09:55:30.40ID:pDlob0Fd0
>>661
ブラクラ
663デフォルトの名無しさん (JP 0Hcf-Evzo)
垢版 |
2017/05/25(木) 10:26:57.11ID:nE79I92lH
ブラクラではないが特に読む意味もなかった
2017/05/25(木) 10:35:05.59ID:jD8c7u6va
>>659
.netがVCLに似てる。
ネイティヴ版.netって感じだよ。
言語がC++かObjectPascalってだけで。

.netのForms使えるならVCLも違和感無く使える。
665デフォルトの名無しさん (ワッチョイ fbf3-Y9+t)
垢版 |
2017/05/25(木) 11:18:46.81ID:STB2bQ410
>>664
なるほど!VCL良いじゃん。

Common Language RuntimeとかいうInterpreter無しに.netモドキが動くなんて。
666デフォルトの名無しさん (スッップ Sdbf-fYd5)
垢版 |
2017/05/25(木) 12:08:23.03ID:ETNdktOYd
>>662
ブラクラとは、どういう意味ですか。
2017/05/25(木) 12:36:36.05ID:pDlob0Fd0
>>666
ブラクラとは、どういう意味ですか。とは、どういう意味ですか?
668デフォルトの名無しさん (ワッチョイ fbf3-Y9+t)
垢版 |
2017/05/25(木) 12:53:08.46ID:STB2bQ410
>>667
お前、相当、捻くれ者!
2017/05/25(木) 13:09:18.12ID:pDlob0Fd0
>>668
ありがとー
2017/05/25(木) 13:38:00.17ID:A2RaX9kE0
完全にスレチな話題延々してるのとどっちもどっち
2017/05/25(木) 16:35:11.41ID:trjr6FJg0
下のドキュメントを読むにCopy On Writeで最適化する場合にはprotocolやclassでラップせよと言ってるんだけど
Copy On Writeって関数引数に単純なstruct型を渡した時の値渡しには適用されないって認識であってる?

教えてエロい人

https://github.com/apple/swift/blob/master/docs/OptimizationTips.rst
Advice: Use copy-on-write semantics for large values
2017/05/25(木) 17:14:53.66ID:pDlob0Fd0
どこに
>Copy On Writeで最適化する場合にはprotocolやclassでラップせよ
とか書いてあんだよ

>Copy On Writeって関数引数に単純なstruct型を渡した時の値渡しには適用されないって認識であってる?
んなわけねーだろ
2017/05/25(木) 17:36:25.00ID:trjr6FJg0
あ、すまん、Advice:の節を注視して前の節を飛ばしてた

> When we copy values (the effect of assignment, initialization, and argument passing) the program will create a new copy of the value.
値渡しはコピーするってしっかり書いてあったわ
2017/05/25(木) 17:42:45.12ID:A2RaX9kE0
structは常にコピー
このstructはcopy on writeです、という場合も便宜上そう言ってるだけで、実際は中の参照型のストレージをcopy on writeしてるんであってstruct自体は常にコピー
ただしin-out引数だけは例外的にstructでも参照渡しになる場合がある
2017/05/25(木) 17:46:16.79ID:pDlob0Fd0
copy on writeだから、コビーの必要性が生じた時にコピーが発生するんだろ
structであっても参照するだけならコピーはしない(はず)
2017/05/25(木) 17:59:30.69ID:trjr6FJg0
>>674
だよなー、昔もSwiftはCOWで処理するからコピーするわけない!!みたいな奴がいて
ずっと首を捻ってたから、このドキュメントで裏付け取れて良かったわ

>>672, 675
お前はフィーリングだけで物を言わず、COWの実装を学べ

あと>>671でprotocolでラップとか言ったけど意味ないな
protocolはI/F切るだけのものだから、class/structで差をつけないと参照/値渡しには影響ないわ
2017/05/25(木) 18:01:40.91ID:trjr6FJg0
structの参照渡しのためのin-out parameter(inout)は使いたくないと思った
それするなら、最初からclassでAPIを設計しろというね
2017/05/25(木) 18:02:56.87ID:pDlob0Fd0
>>676
常にコピーなら、コピーオンライトとは呼べないな
2017/05/25(木) 18:12:33.09ID:pDlob0Fd0
>>677
inoutを指定しなくないから、クラスにするって考え方がそもそもおかしい
680デフォルトの名無しさん (スプッッ Sdbf-4cAo)
垢版 |
2017/05/25(木) 18:31:58.93ID:ud72tGp9d
>>678
メモリ操作としてのコピーと、変数への代入時の複製を混同すると、そういう訳のわからない議論になるね
structはコピーオンライトと言っても、osやハードウェアのレイヤーになるとclassであっても必要に応じてコピー(と消去を組み合わせた移動)を行ってるんだけどね。
swiftのレイヤーでは、常にコピーされるって言って良いんじゃないかな
コピーの為に支払うコストがいつ払うことになるか、そもそも払う必要が生じるのか、っていう部分にコピーオンライトの概念が関係してくるだけなんだから
2017/05/25(木) 18:40:08.35ID:pDlob0Fd0
>>680
ごちゃごちゃした理論は言語設計者の領域の話で
プラグラマ視点でのコピーオンライトという文脈では書き換え時にコピー(コスト)が発生するという単純な理解で特に問題ないだろ
じゃないと、Structは常にコピーが発生するからデータの粒度をなるべく小さくして関数への引数渡しも注意しないととか余計な設計負荷を意識しないといけなくなる
2017/05/25(木) 19:05:12.83ID:rwN5JfUNp
structは値渡し、classは参照渡し、Array Structの中身はCOWで処理、プログラマはこれを意識して最適化しろ
>>671のリンク先で言ってるわけだが?
プログラマのレイヤーで考えるべきことが提示されてるのに、なぜそれを見ようとしないのか
2017/05/25(木) 19:55:10.84ID:pDlob0Fd0
でかいデータをstructにつっこんで扱う時に注意すべきことが書いてあるだけだろ
つまり代入が頻繁に発生する状況でも、そのプロパティに実際にアクセスがあるまでコピーを遅延させるテクニックについて触れられてるだけ
別に関数の引数に値型を使うなとかとんちんかんなことは書いてないな
684デフォルトの名無しさん (ワッチョイ 9f3c-V38z)
垢版 |
2017/05/25(木) 21:10:12.75ID:1RtxtHBK0
SwiftでCOW意識する人なんているんだ。
そういう人はC++とかRustとか使えばいいのに。
2017/05/25(木) 22:26:04.80ID:VkchUDpW0
最適化しない場所も含めて意識くらいはするでしょ
その程度のことで言語を変える理由にはならんよ

むしろStructでCoWという設計だからこと気兼ねなく渡せるってことに気付いた方がいい
2017/05/26(金) 05:16:56.16ID:xRlJL6be0
誤: StructでCoWという設計だからこと気兼ねなく渡せる
正: Array StructでCoWという設計だからこと気兼ねなく渡せる

どうしてもSturct全般でCOWが適用されると思い込みたいアホが食いしばってて笑う
2017/05/26(金) 07:23:41.84ID:nbO+4ovP0
>>686
「Structが」じゃなくて「Structで」な
Arrayに限らず、StringやDictionaryなどのstructでCoWを実装したもの全般

classでCoWを実装する場合は使う側が明示的にcopy()clone()などを呼ぶかinitを使う必要があるが
structでは代入,引数渡し,戻り値がコピーセマンティクスなので透過的に扱うことが出来る
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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