Swift part10at TECH
Swift part10 - 暇つぶし2ch381:デフォルトの名無しさん (ワッチョイ 5bf3-CJGP)
17/04/18 12:45:37.54 3Ay0w4VK0.net
>>370
THX
原則は、
1. 引数は()で囲む。囲まないと、error: require parentheses
2. 右から左方向へグループ化
例:
(S) -> (T) -> (U)

(S) -> ((T) -> (U))
と解釈される。

382:デフォルトの名無しさん (ワッチョイ 5bf3-CJGP)
17/04/18 12:47:38.45 3Ay0w4VK0.net
Reactive.itemsメソッドがこんな感じ
public func items<S: Sequence, Cell: UICollectionViewCell, O : ObservableType>
(cellIdentifier: String, cellType: Cell.Type = Cell.self)
-> (_ source: O)
-> (_ configureCell: @escaping (Int, S.Iterator.Element, Cell) -> Void)
-> Disposable where O.E == S {
以下略

383:デフォルトの名無しさん (ササクッテロラ Sp6f-+fOQ)
17/04/18 13:01:42.04 XspPM/3op.net
右から左方向が優先度高いのか
左から右に流してるイメージで逆方向のがしっくりくるが
関数型の思想としてそういうものだっけかな

384:デフォルトの名無しさん (アウアウウー Saaf-vZSP)
17/04/18 13:28:19.45 AUE9Rrcca.net
俺は若干右曲がり

385:デフォルトの名無しさん (スプッッ Sd3f-bNqD)
17/04/18 20:55:52.53 L5MP9LYsd.net
可読性の高いSwift()

386:デフォルトの名無しさん (ワッチョイ 1f3c-xLT8)
17/04/18 21:25:36.15 dlRGmA3w0.net
>>366
初期から使ってるけどSwiftにはいい加減枯れてくれって思ってる。
社内で必死こいてSwift移行推進した人たちは今肩身の狭い思いをしてるのでは。

387:デフォルトの名無しさん (ササクッテロロ Sp6f-vZSP)
17/04/18 22:03:34.33 Cbc6ZCQLp.net
Ojb-C使ってても毎年のようにAPIレベルでDeprecatedが量産されるから
Obj-Cなら変更コストが低いってわけでもない

388:デフォルトの名無しさん (スプッッ Sd3f-IVUN)
17/04/19 10:54:38.73 aMVSfr6md.net
>>351
3.1で4の書き方でやったらどうなるか試そうと思ったけど、眠くて忘れてたわ
誰かどうなるか教えて

389:デフォルトの名無しさん (ワッチョイ 5bf3-CJGP)
17/04/19 11:22:12.10 2o4P71X40.net
>>378
let fn1: ((Int, Int)) -> Void = { x in
print(x.0 + x.1)
}
fn1((1,2)) // => 3
//fn1(1,2) // error: extra argument、引数が多すぎ!

390:デフォルトの名無しさん (スプッッ Sd3f-IVUN)
17/04/19 12:18:48.30 aMVSfr6md.net
>>379
ということは、元々括弧を省略した書き方をしなければ問題ないわけね

391:デフォルトの名無しさん (スプッッ Sd3f-bNqD)
17/04/19 20:19:15.30 Vhy+qJiMd.net
Swiftの関数の書き方に近いシンタックスの言語ってある?

392:デフォルトの名無しさん (ワッチョイ 1ff3-vZSP)
17/04/19 22:12:07.64 RnslI5DB0.net
たくさんある

393:デフォルトの名無しさん (アウアウエー Sa82-p2Ky)
17/04/20 14:01:17.17 sKYAHXfOa.net
たくさんあるかは分からんけど、Rustは比較的似てる気がする
Go とか Kotlin辺りもちょっと似てるかな

394:デフォルトの名無しさん (ササクッテロラ Sp23-G776)
17/04/20 14:07:23.48 Vb04xDKlp.net
Java8も近い気がする

395:デフォルトの名無しさん (ワッチョイ 4af3-p2Ky)
17/04/20 17:04:27.86 VpJy20l50.net
String再実装の第一弾と複�


396:剥s文字列リテラルがレビュー通った



397:デフォルトの名無しさん (ワッチョイ bff3-QkHB)
17/04/21 08:24:24.47 ZBCs1arm0.net
>>385
RubyのHere Documentみたいなもんか?
json = <<'EOS'
{
"language": "Ruby"
}
EOS

398:デフォルトの名無しさん (ワッチョイ 4af3-p2Ky)
17/04/21 12:37:01.73 PVM41qEx0.net
let json = """
    {
        "lang": "Swift"
    }
    """"
json == "{¥n    ¥"lang¥": ¥"Swift¥"¥n}"
閉じ"""の行と同じインデントが自動的に削除される(行頭が閉じ"""に揃う)
便利

399:デフォルトの名無しさん (ササクッテロラ Sp23-p2Ky)
17/04/21 12:49:25.47 z0f2AZORp.net
発展途上の言語はどんどん便利になるからいいね

400:デフォルトの名無しさん (ワッチョイ 7f54-ddVw)
17/04/22 08:43:07.39 kAxmCg/50.net
>>387
詳しく!

401:デフォルトの名無しさん (ワッチョイ de92-UbXF)
17/04/22 15:30:44.86 z7G2zYcp0.net
こんなものが今頃入るとか発展途上すぎるんだよ

402:デフォルトの名無しさん (アウアウエー Sa82-p2Ky)
17/04/22 15:35:08.08 PgVA7Plza.net
Javaにはないけどな
Swiftのはインデントまで考慮されて洗練されてるし

403:デフォルトの名無しさん (ワッチョイ de92-UbXF)
17/04/22 15:42:53.58 z7G2zYcp0.net
インデント考慮って逆に分かりづらくなるような気が。。。
Optionalもそうだと思うけどSwiftって一見便利そうに見えて却って面倒くさくなってる要素が多いと思う

404:デフォルトの名無しさん (ワッチョイ 7f54-2dAw)
17/04/22 15:58:34.23 kAxmCg/50.net
>>392
あんまり、ルールが多くなると、C++みたく、不人気になるんだよねぇ。

405:デフォルトの名無しさん
17/04/23 12:04:02.69 OKIxwLfDp.net
>>390
1.0 stableだ、ヒャッハーって始めて、その後半年単位で破壊変更受けた絶望に比べたら別に、、、
発展途上どんと来い、商業採用しない前提でポストObjCの進化は愉快

406:デフォルトの名無しさん
17/04/23 13:12:37.68 PRvAU6qE0.net
>>393
今のSwiftも十分ルール多いと思うぞ

407:デフォルトの名無しさん
17/04/23 13:18:16.81 16+ithPZ0.net
>>395
同意
だから、Swift不人気になって、だれも使われなくなる。
ってストーリー展開が危険。

408:デフォルトの名無しさん
17/04/23 13:20:20.98 16+ithPZ0.net
>>394
破壊的変更だけど、事前通告もあるし。。。will be depreridated. warningとか。
納得できる変更だし、改善方向に向かってるのでOK。
改悪とか、こんな機能、だれも使わんぜぇ。ってのが無いのでoK.
Windows 10の3D Paint Brush機能って必要か?

409:デフォルトの名無しさん
17/04/23 13:52:00.91 HtOZeUof0.net
Swiftって読みにくすぎ
ObjC 3.0でいいわまじで
政治的に生まれた言語はどこかで無理が生じる

410:デフォルトの名無しさん
17/04/23 22:20:07.29 d5pkzuTb0.net
ObjCの方が読みづらいわ
読みづらいというより書きづらい…かな

411:デフォルトの名無しさん
17/04/24 09:18:14.98 OVGIDxevd.net
>>399
禿同

412:デフォルトの名無しさん
17/04/24 09:47:25.07 Et0GUfRD0.net
ObjC-2.1っての出してくれないかなぁ。
Swift2.x -> 3.xへの破壊的変更をObj-Cへも適用して欲しい。
たくさんあるinitializerをinit(xxx:)にまとめるとか、Foundation, AppKitにあるClassのメソッド名を洗練させるとか。
Foundation, AppKitって1980年代の設計のままだから、あの長いメソッド名を
ちょっとだけ短くするだけで、まだまだObj-Cは延命できそうな気がする。
Swift3.x見たく、メソッド名の短縮化をObj-Cへcome on!

413:デフォルトの名無しさん
17/04/24 09:52:31.43 mLc1nANzd.net
>>401
解ってないなあ。

414:デフォルトの名無しさん
17/04/24 10:00:22.08 Et0GUfRD0.net
>>402
詳しく!

415:デフォルトの名無しさん
17/04/24 10:02:56.87 Et0GUfRD0.net
Obj-C開発コミュニティーは崩壊しており、いまさらObj-Cのupgradeは難しいって事でしょうか?
だから、Swiftの開発が始まったって事でしょうか?
Obj-Cってコンパイル早くていい感じ何ですけど。Xcodeもサクサク動くし。
SwiftのせいでMacbook Pro15買わなくなっちゃいましたヨォ。俺は!

416:デフォルトの名無しさん
17/04/24 10:15:52.44 PIzQilqTd.net
買ったのならもういいじゃん

417:デフォルトの名無しさん
17/04/24 11:07:05.55 mLc1nANzd.net
>>403
Objective-Cの考え方は、ドキュメンテーションコード。
だから、名前を短くするのはナンセンス。

418:デフォルトの名無しさん
17/04/24 12:02:48.74 SvpXvUmYd.net
>>399
書くのがめんどくさいってのはある

419:デフォルトの名無しさん
17/04/24 21:16:37.16 P6Dtc6ePd.net
単純に文の長さが短いだけで読みにくいのは高級言語としては微妙だな

420:デフォルトの名無しさん
17/04/24 22:06:57.16 hcHY62kZ0.net
「!」は最初見たときは分かりづらいと思ったが、慣れると危険な部分が分かりやすくて良いなと思ってる

421:デフォルトの名無しさん
17/04/24 22:16:59.71 o8gY9V3aa.net
!?

422:デフォルトの名無しさん
17/04/25 08:29:23.45 O6rTDgi/0.net
プログラミング初心者なんですが、 delegateの概念がよく分かりません。
プロトコルは実装しないといけないメソッドとかをまとめるもの?という認識ですが。
開発チュートリアルやってると、なんの説明も無しにいきなりdelegateは何とかを他のクラスに委任できるなんちゃらとか、
説明が意味不明過ぎて詰みました
だれかわかりやすく説明できる方いますか?
わかりやすいサイトでもいいです
英語サイトやYouTubeでもいいです

423:デフォルトの名無しさん
17/04/25 08:33:44.54 DixYtrACd.net
>>411
スレチ

424:デフォルトの名無しさん
17/04/25 08:43:07.85 uqhlwSBc0.net
>>411
スレチ、とかってのは無視してOKっすからね。
あとdelegateパターン、delegateメソッド、delegate変数って言葉を使える様に
ならないとね。
delegateの概念ってのは、「クラスに委任」とかっていうのは単なる辞書を引いた
だけの説明なのでこれも無視です。
delegateパターンってのは2つのクラス、1つのプロトコルを使ったパターンです。
あまりにも、当たり前に使われるので、説明無しにdelegateパターンって出てきます。
この記事が参考になるんちゃいまっしゃろか?
UIKit類似Frameworkを自作してみる
URLリンク(qiita.com)

425:デフォルトの名無しさん
17/04/25 09:52:21.41 o+aECIKxa.net
デリゲートってのはなぁ・・おっと、後は>>145頼む

426:デフォルトの名無しさん
17/04/25 09:58:28.39 o+aECIKxa.net
あぁ、デリゲート先間違えた。>>416頼む

427:デフォルトの名無しさん
17/04/25 10:39:09.75 DixYtrACd.net
>>413
スレチはスレチ
swiftに関係ないし初心者質問スレでもないので質問者の想定レベルが不明
しかも>>413はdelegateの説明をしていない
あと紹介するなら、こっちじゃないの?
URLリンク(qiita.com)
iOSに限定したdelegateへの質問なら、こっちの方が答えがあると思う
[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad]
スレリンク(mac板)

428:デフォルトの名無しさん
17/04/25 10:58:46.24 3wBLGJN/0.net
片側Rangeが通った
a[..<i] とか a[...i] とか a[i...] ってデフォで


429:書ける



430:デフォルトの名無しさん
17/04/25 11:06:07.97 3fSgT78Np.net
今までデフォじゃなければ書けたの?
ユーザが拡張可能なコンパイラプラグインIFってswiftにあったっけかな

431:デフォルトの名無しさん
17/04/25 11:23:22.00 DixYtrACd.net
a.prefix(i) // a[..<i]
a.dropFirst(i) // a[i..]
と、手で書き換えるとか?

432:デフォルトの名無しさん
17/04/25 12:09:00.58 uC0QdnUhd.net
>>417
gj!
nice「とか」!

433:デフォルトの名無しさん
17/04/25 12:18:09.30 3wBLGJN/0.net
prefix operator ..<
prefix operator ...
postfix operator ...
を定義するだけ
SE-172のDetailed design真似して3.1で書いてみた
URLリンク(swift.sandbox.bluemix.net)
まだSE-148のジェネリックなsubscriptがないから、ちょっとコードの重複ができてしまった

434:デフォルトの名無しさん
17/04/25 12:45:51.70 uqhlwSBc0.net
>>421
動いた。
こんなのチャチャッっと書けるなんて、すごいねぇ。

435:デフォルトの名無しさん
17/04/25 13:29:21.36 3fSgT78Np.net
あー、オペレーションのオーバーロードか
オーバーロードしてまで使いたいとは思わないけどpythonの同類文法が使えるようになるのは幸せ
>>419-420
とか定期(俺が日本語不自由

436:デフォルトの名無しさん
17/04/25 18:50:45.06 8UEDmHts0.net
>>411
URLリンク(developer.apple.com)
URLリンク(best-practice-software-engineering.ifs.tuwien.ac.at)
URLリンク(code.tutsplus.com)
Delegateはデリゲーションパターンにおいて処理を委譲されるクラスの役割名
「委譲する」という意味の動詞としても使われる
プロトコルは他言語で言うインターフェース
DelegationはCocoaでフレームワークから開発者の書いたコードを呼び出す場合によく使われるパターン
例えばTableViewの行を選択した時に何か独自の動作を行いたいなら
UITableViewDelegateに定義されている特定のメソッドを実装してDelegateとして設定しておくと
ユーザーが行を選択した時にDelegateとして設定したクラスの該当メソッドが呼び出されて開発者が書いたコードが実行される
UITableViewDelegateがプロトコルでそのプロトコルを実装したクラスがDelegate
プロトコルとの関係がわかりにくければUITableViewDelegateProtocolという名前を省略してると考えてるといいかも

437:デフォルトの名無しさん
17/04/25 20:11:15.65 uC0QdnUhd.net
でもAppleはblockを奨めているから
今時delegateじゃないよね
まあ知っておいた方が良いかな程度?

438:デフォルトの名無しさん
17/04/25 20:23:32.46 8UEDmHts0.net
blockと何の関係があるの?

439:デフォルトの名無しさん
17/04/25 20:30:05.59 wOaxuRz+0.net
>>424
thx
2番目のURL記載のMultiple Inheritanceを避けて
Single Inheritance with Delegationってのが判りやすっすね。
CにはAの機能とBの機能が欲しい。じゃぁ、CはA, B2つのクラスを継承させれば良いか?というとそうでは無い。
CはAを継承しつつ、Bをメンバに持てば良い。

440:デフォルトの名無しさん
17/04/25 20:59:50.91 wOaxuRz+0.net
is-a関係、part-of関係がはっきり決まるオブジェクト間の関係ばかりでは無い。
例:
- 正常運転 is-a 運転、復旧運転 is-a 運転
- 正常運転 part-of 運転、復旧運転 part-of 運転
同じ概念間にis-a関係、part-of関係の両方が同時に成立する事は
ありえず、どこか間違っている。
is-a関係:Interitance
part-of関係:delegateパターン
両者を上手く使い分けるのが吉!

441:デフォルトの名無しさん
17/04/26 01:11:59.43 zySdwBLY0.net
inheritanceかな

442:デフォルトの名無しさん
17/04/26 08:47:49.85 0yNg6j//p.net
>>426
スレチだけどURLConnection(非推奨)とURLSession(推奨)見比べろ

443:デフォルトの名無しさん
17/04/26 11:01:47.26 8tL6gyso0.net
>>425
>>430
クラスやメソッドの役割によるもので単にBlock推奨、delegateが古いという話ではない
NSURLSessionのヘッダ見りゃ分かるけどSessionとTaskの関連メソッドではdelegateでの定義の方が多い

444:デフォルトの名無しさん
17/04/26 11:05:31.83 GvwT/G3X0.net
数で比較するんじゃなくて、どっちをユーザに使わせようとしてるかを比較するんだよ?
UIAlertController(推奨)とUIAlertView(非推奨)みたいなのもあるな

445:デフォルトの名無しさん
17/04/26 11:25:04.64 8tL6gyso0.net
すまん、数を持ち出したのは間違いだったが物事を単純に考えてる奴には目で見て分かりやすいと思ったので
新しいAPIでもcompletionHandlerもあればdelegateもあるし適材適所って事

446:デフォルトの名無しさん
17/04/26 11:38:07.27 GvwT/G3X0.net
適材適所であることに異論はないが、今までdelegateだったものがblockに移行してる事実はあるよね
>>426の「何の関係があるの?」の疑問は解決したかな
同じようにObjCだったものがSwiftに移行・・・はして失敗してるんだよなぁ
Swiftに移行したけど破壊変更が頻繁でメンテナンス性が悪いからObjCに差し戻そうって意見が割とガチで出て辛い

447:デフォルトの名無しさん
17/04/26 14:54:49.58 rNMObgtm0.net
>>430
なるほど>>425が言いたいことは理解したわ
Delegateをコールバックを実現する仕組みの一つとして捉えると
わざわざDelegateを定義しなくてもcompletionHandlerみたいなblockパラメータって十分ってことかな
シンプルなケースはそれでいいけど少し複雑になるとDelegate使ったほうが良いケースもあるし使い分けだよね
自分で新しく作るんじゃなくUITableViewDelegateみたいなフレームワークで用意されたプロトコルを使う場合は
コールバックを実現する仕組みというより事前に用意された拡張ポイントを使う方法として捉えてる
その場合サブクラス化、デリゲート、イベントなんかは同じグループとして捉えてるけどBlockは抽象度違うからグループの外だね

448:デフォルトの名無しさん
17/04/26 15:04:57.22 3mj2KO3W0.net
SwiftのprotocolはJavaのinterfaceみたいなもんだと説明されるけど、Javaでoptionalメソッドを定義できるの?

449:デフォルトの名無しさん
17/04/26 15:08:18.39 gZc0mpUPa.net
>>436
スレチもいいとこ

450:デフォルトの名無しさん
17/04/26 15:17:06.14 rNMObgtm0.net
>>436
何もしないデフォルト実装を用意する

451:デフォルトの名無しさん
17/04/26 15:54:00.63 3mj2KO3W0.net
>>438
なるほどぉ。

452:デフォルトの名無しさん
17/04/26 19:42:58.31 7DECPBe+d.net
funcって書くのにメソッドなの??

453:デフォルトの名無しさん
17/04/26 19:59:41.32 lYhaqZk40.net
そもそもfuncとmethodを分ける意味ってあんの?
会話で通じないとかなくね?

454:デフォルトの名無しさん
17/04/26 20:56:10.25 2ExUo8Ujp.net
Fuck!!!

455:デフォルトの名無しさん
17/04/26 21:12:05.58 7OfAzagzd.net
関数の事をmethodって言う奴は「解ってないなあ」と思う。
あと、宣言と定義の使い分けできていない人も苦手だな。

456:デフォルトの名無しさん
17/04/26 21:14:41.12 yg9vhXXld.net
伝わればなんでもいいよ

457:デフォルトの名無しさん
17/04/26 21:15:15.06 lYhaqZk40.net
ヘッダーがなくなった時点で、宣言も定義もほぼ同義じゃねーの

458:デフォルトの名無しさん
17/04/26 21:43:02.76 ZkZBCOOl0.net
Swiftでは公式に用語がどう定義されてんだろうと思って探したら丁度ズバリ書いてた
URLリンク(developer.apple.com)
In Swift, most


459:declarations are also definitions in the sense that they are implemented or initialized at the same time they are declared. That said, because protocols don’t implement their members, most protocol members are declarations only. For convenience and because the distinction isn’t that important in Swift, the term declaration covers both declarations and definitions. Swiftではプロトコルとか一部除いてほぼ宣言と同時に定義するし、いちいち区別するのメンドクセーから「宣言」も「定義」もひっくるめて「宣言」って用語だけ使うわー まぁそれもBNFだけでの話のようで、Guideの他の部分の文章では「definition」も使われたり混同されたりしてるようだけど



460:デフォルトの名無しさん
17/04/26 22:01:01.52 H5XmXuTS0.net
>>443
うっそーん?
instance method, type methodっていう言い方はするが、
instance function, type function(class function)なんて聞いたこと
ないぞぉ。

461:デフォルトの名無しさん
17/04/27 02:46:48.47 v69LNgpd0.net
>>443>>447みたいなことを口に出す人は若いなぁと思う
自分も若かりし頃は気にしてたけど年取ったら思ってても意図が伝わればどうでもいいわとなった
どうせswiftコード上だとfuncが共通で使われるし、小面倒な奴と会話するときは「ファンク」とでも言っとけばおk

462:デフォルトの名無しさん
17/04/27 08:03:13.29 T2cThVGm0.net
いやだからなんでfuncって書くのにメソッドやねん
だったらmethにでもしとけばええやん

463:デフォルトの名無しさん
17/04/27 08:35:20.62 7p4DwLyja.net
グローバルな関数とメソッドでfuncとmethを書き分けろっての?
ただの関数にmethとか使うのは抵抗あるわ
メソッドにfunc使うのは他の言語の例もあるので違和感ないけど

464:デフォルトの名無しさん
17/04/27 09:04:29.23 N3r3uYtra.net
そもそもメソッドというのはSmalltalkのコミュニティが使い始めた用語で
もともともはメッセージを受け取ったオブジェクトが目指すゴールを記述するための新しい言語要素を想定してたんだよね
だけど、けっきょくそのSmalltalkも-76以降はSimula67(ALGOLの拡張)スタイルの普通の関数に落ち着いたし
その後ブームとなったJavaもそのまま用語を採用した経緯もあって
メソッドと関数っていうのはインスタンスとオブジェクトみたいなもので区別はあまり意味をもたなくなっちゃっている
強いて言えば、クラスに属する(言語によってはプラスして暗黙のselfを受け取れる)関数をメソッドと呼ぶとかゆるいくくり

465:デフォルトの名無しさん
17/04/27 09:05:58.12 OI3ixlBfF.net
funcyな言語やで

466:デフォルトの名無しさん
17/04/27 10:36:56.84 OuTFIb+i0.net
>>451
それも、うっそーん!
Smalltalkではmethodをmessageっていうゾォ。

467:デフォルトの名無しさん
17/04/27 11:23:38.37 N3r3uYtra.net
>>453
ああ、それはSmalltalkの(というかOOPの)メッセージングというコンセプトをよくわかっていない人がやりがちな間違いで
メッセージと、それを送ることでコールされるメソッド(関数)は別物
たとえばメッセージ(仮にmとしよう)を送ってもmとは関係ないメソッドがコールされることもあるし
極端な話、何もしないという選択肢(振る舞い)もありうる
もっとも多くの場合、メッセージ(厳密にはメッセージを構成するセレクタ)とメソッド名は一致させるのが普通なので
混同するのも無理からぬことだけれども

468:デフォルトの名無しさん
17/04/27 11:49:48.89 7p4DwLyja.net
Obj-Cの


469:場合はメッセージ=メソッド的なとこあるけど、Smalltalkは違うんかね



470:デフォルトの名無しさん
17/04/27 12:55:56.69 N3r3uYtra.net
>>455
んー、Obj-Cのコミュニティ(Appleの公式文書も含め)が勘違いを広めているってよくない傾向はあるけど
Obj-CもSmalltalkもメッセージングの根本の考え方は変わらない
そもそもObj-CはSmalltalkのやっていることをCのプリプロセッサでやろうとした試みからスタートしたので変えたら意味ないし
ちなみにそのときの文法はまだメッセージ式ではなかったから純粋にコンセプトだけをなぞろうとしたことがわかる
URLリンク(dl.acm.org) (残念ながら有償)
mySodaMachine = {| SodaMachine, "comb:model:", 23, 4 |};

471:デフォルトの名無しさん
17/04/27 14:07:08.57 Wv+Yc+Vq0.net
Methods are functions that are associated with a particular type
以上。
URLリンク(developer.apple.com)

472:デフォルトの名無しさん
17/04/27 14:47:27.97 52wV30cHp.net
以上って言っても、small talkやobjcについてスレチ上等で会話してる奴等には通じない、、、
大元の>>440だけ考えたら、コード上でfunc, methの書き分けなんて面倒っていう
コンパイラ側とコーダー側の双方メリットによるものだろうよ

473:デフォルトの名無しさん
17/04/27 15:27:43.95 573QYR970.net
戻り値が void の function なんてのは C で初めて見た。
例えば BASIC や Pascal では戻り値が無いのは procedure で 戻り値があるのが function だ。
method はやり方とか手順とかいう意味で routine や procedure と同じような意味合いだ。
function というからには副作用が無い(引数以外が戻り値に影響しない)ことを期待したいところだが、「機能」という意味合いに着目すると、これらの中で最も曖昧であって、一つで済ませるなら便利かもね。

474:デフォルトの名無しさん
17/04/27 16:23:53.95 a+4IBLmkH.net
Cのvoidはアキュムレータの値を還すよ

475:デフォルトの名無しさん
17/04/27 16:43:42.91 QxU5eB0Ka.net
そんなもの返されたところで使い道は無ぇ

476:デフォルトの名無しさん
17/04/27 16:48:34.82 R6dFUrFW0.net
るーびーですねわかります

477:デフォルトの名無しさん
17/04/27 19:19:04.75 5OLYtE1F0.net
>>460
それは返すとは言いません

478:デフォルトの名無しさん
17/04/27 21:03:25.93 8BI3unQLd.net
>>458
つまり全部関数って呼べばいいんじゃないの
わざわざメソッドとか言わずに

479:デフォルトの名無しさん
17/04/27 21:31:33.44 i5BzzK+e0.net
>>464
普通の人はそれで良いと思う
頭固い偏屈な奴だけメソッドって言い張れば良いんじゃないかなぁ
と自分は思います

480:デフォルトの名無しさん
17/04/27 22:14:36.28 52wV30cHp.net
教祖様がコード上はfuncをキーワードにするけど、>>457の通り人間向けはmethodがいいって言ってる
ケースバイケースで言い換えたい所存、信仰したくない宗教だけど敬意は払う
信者はsmall talk原理主義やobjc至上主義で討論してるけど結論出ないだろ

481:デフォルトの名無しさん
17/04/27 23:12:26.96 Wv+Yc+Vq0.net
>>464
メソッドって呼んだ場合は単なる関数じゃなく
クラスや構造体なんかの特定の型に紐付いた関数だっていう意味が付随するの
それが不要だと思うなら全部関数って呼べばいいと思うよ
メソッドに限らずクロージャなんて呼ばずに全部関数って呼んでもいいし
逆に関数なんて呼ばずに全部クロージャって呼んでもいい

482:デフォルトの名無しさん
17/04/27 23:16:43.40 Wv+Yc+Vq0.net
>>458
クラスや構造体の中で定義した関数のことをメソッドと呼ぶんだからfuncキーワードを使うのが適切だろ
コンパイラ側とかコーダー側とか関係ない


483:



484:デフォルトの名無しさん
17/04/27 23:28:54.98 8BI3unQLd.net
>>467
じゃあなんでfuncとかいうキーワードなのって思うよね
つーか、キーワードなんかいらなくね?って思うんだが
そのキーワードがないとコンパイラが解釈できないシンタックスなのかな

485:デフォルトの名無しさん
17/04/27 23:37:34.54 +McxYUoga.net
キーワードないと宣言なのか呼び出しなのかコンパイラも判断に迷うだろ

486:デフォルトの名無しさん
17/04/28 00:05:28.20 uTZO7qUH0.net
>>469
もしmethodってキーワード使うとしたら、>>457の定義に従えば
メソッド = 型に関連付けられた関数
func = 関数
class { func } = 型に関連付けられた関数
         = メソッド
class { method } = 型に関連付けられたメソッド
           = 型に関連付けられた(型に関連付けられた関数)
ってことになって「頭痛が痛い」みたいにならね?w

487:デフォルトの名無しさん
17/04/28 04:06:13.32 TMPExC9ya.net
arc4random()をIntに入れるのに完璧なやり方ってある?

488:デフォルトの名無しさん
17/04/28 05:07:09.24 dZlKtiRpd.net
>>470
Cはそんなfuncとかいうキーワードないのに成り立ってて不思議だね

489:デフォルトの名無しさん
17/04/28 07:34:38.00 NEA7d0M1d.net
C言語の場合
プロトタイプ宣言
と言うように、宣言はメモリの確保を伴わない
関数定義
と言うように、定義はメモリの確保を伴う

オブジェクト指向の場合はどうなるんだろうね
コードは宣言でインスタンス化は定義かな

490:デフォルトの名無しさん
17/04/28 08:07:22.91 +uUUmIhK0.net
JavaとかObjective-Cでもfuncとかいうキーワードはないのに成り立ってるね

491:デフォルトの名無しさん
17/04/28 08:23:00.72 Z9SVt9YO0.net
他の新興言語のgoやrustはキーワードつけてるね
あってもなくても成り立たなくはないけど、ある方が流行りなんでしょ
他言語文法仕様をパクってモダンなものを作るんだから流行りに合わせてつけるのは当然でしょ

492:デフォルトの名無しさん
17/04/28 08:24:09.58 +uUUmIhK0.net
なるほどモダンねぇ...

493:デフォルトの名無しさん
17/04/28 08:25:01.60 uTZO7qUH0.net
型が後置だからだろ

494:デフォルトの名無しさん
17/04/28 08:59:20.10 1TnL0+oaF.net
>>478
それな
モダンな表現を実現するためには仕方ないな

495:デフォルトの名無しさん
17/04/28 09:15:26.74 HrVNNKWrp.net
いや、後置でもコンパイラが頑張ればできるでしょ

496:デフォルトの名無しさん
17/04/28 09:57:20.06 Ac9Dm7bId.net
明示しないとコンパイラだけじゃなく人間も頑張らなくちゃならなくなるかも

497:デフォルトの名無しさん
17/04/28 10:00:18.34 K29gCEJ0a.net
>>473
Cは変数も関数も型宣言(関数の場合は返り値の型)が先にくるからね

498:デフォルトの名無しさん
17/04/28 16:06:25.59 pTZXbcwl0.net
構文解析の問題だからメモリ確保云々は関係ないでしょ
funcキーワードを使わないとして
例えば foo() {…} と書いた場合にこれが関数定義なのか
Trailing Closureを付けて関数を実行しようとしてるのか{…}の中身を調べないと分からないし
未定義のものを実行しようとしてるのかどうかの判定も困難
キーワードがあることで構文解析・静的解析・型推論なんかで有利に働いて
言語としての表現力や安全性が高まる 特に表現力
funcじゃなくてletやvarを使ってもいい(Swift的にはこれらは関数とは呼ばないけど)
let foo = {print(“foo”)}
let bar = {() -> () in print(“bar”)}
let baz: () -> () = {…}

499:デフォルトの名無しさん
17/04/28 18:44:38.27 uTZO7qUH0.net
>>472
Intに入れるじゃ何聞きたいのか分からん
var result: Int = 0
arc4random_buf(&result, MemoryLayout.size(ofValue: result))
こういう話?
それとももっと別の話なのか

500:デフォルトの名無しさん
17/04/28 21:07:49.54 pTZXbcwl0.net
>>472
普通にIntでCastして不都合ある?
let random10 = { Int(arc4random_uniform(10)) }

501:デフォルトの名無しさん
17/05/06 16:47:48.74 3sfm3EzD0.net
『詳解Swift』ってどう?Amazonの評価は真っ二つに別れているんだけど

502:デフォルトの名無しさん
17/05/06 17:06:44.06 Vgrr/US10.net
>>486
どんな本も、読者によって評価は分かれる。
いい本とは、万人に受け入れられると考えるのは、間違い。

503:デフォルトの名無しさん
17/05/06 17:17:20.80 Du+O4KVHp.net
中上級者向けの本で内容を理解出来ないと悪いレビューつける奴いるしな

504:デフォルトの名無しさん
17/05/06 17:32:44.31 rU3gcFGYp.net
swift 3に対応した3版は出たのかねぇ
作者も読者も疲れてそうだと思った

505:デフォルトの名無しさん
17/05/06 17:49:37.89 l3lhsLeM0.net
>>486
Appleの公式本読めば十分だよ
日本語という以外の付加価値は全くないけど
公式本に近い内容を日本語で読みたければ買ってもいいと思う
一度読んだら辞書的な使い方はしないので電子版のほうがオススメ
あと荻原本は公式本よりやや説明がくどいので好き嫌い分かれる
目新しい概念をわかりやすく説明してくれてたりはしない

506:デフォルトの名無しさん
17/05/06 17:50:10.60 Vu96M1x5a.net
>>488
百田尚樹の本をサヨクが理解出来ないのと一緒だな

507:デフォルトの名無しさん
17/05/06 17:50:47.77 tXDjXsMUd.net
どうせSwiftの自己満仕様変更で古くなる参考書を何故買うかね?

508:デフォルトの名無しさん
17/05/06 19:55:06.44 3sfm3EzD0.net
古くなるのが嫌なら、IT系の本、特に入門書なんて全部買えないだろ。
それに図書館で買ってもらって読むって手もあるし。

509:デフォルトの名無しさん
17/05/06 20:50:30.20 Vgrr/US10.net
>>489
疲れたヤツも居れば、元気なヤツも居る。
C++11, C++14, C++17と立て続けに改定が進み、
疲れたヤツ、元気なヤツが居るのと同じ。

510:デフォルトの名無しさん
17/05/06 20:51:18.32 Vgrr/US10.net
>>491
素晴らしい比喩

511:デフォルトの名無しさん
17/05/06 20:52:39.76 Vgrr/US10.net
>>492
全ての仕様は、古くなる。
全ての物理常識は古くなる。
天動説だって古くなる。
だから、天動説を知らないで良いとはならんだろう。

512:デフォルトの名無しさん
17/05/06 20:54:11.98 A6Xoj7sWa.net
コンピュータの世界はどんどん新しくなるのが当たり前だろ。
言語は、その中でもまだ遅い方よ。

513:デフォルトの名無しさん
17/05/06 21:30:38.70 RxOQwEquH.net
ネットの情報は新旧混在ですぐデブリだらけになるからな

514:デフォルトの名無しさん
17/05/06 21:58:01.55 I53ls5gra.net
どんどん新しくなるといいながら、未だにフォン・ノイマン型が主流なんだよな

515:デフォルトの名無しさん
17/05/06 22:03:44.34 A6Xoj7sWa.net
分野による。
組み込みじゃハーバード型が主流。

516:デフォルトの名無しさん
17/05/06 22:12:19.08 I53ls5gra.net
ハーバード型もパラダイム的には大して変わんねーから

517:デフォルトの名無しさん
17/05/06 22:17:28.66 A6Xoj7sWa.net
データと命令で分かれてるのは地味に重要だぞ。
高速なCPUじゃ分かりにくいかもだが、低速になる程顕著。

518:デフォルトの名無しさん
17/05/06 22:31:46.28 tXDjXsMUd.net
>>496
言いたいことはまだ発展途上の言語はweb上のドキュメント参照しとけばいいってことだよ

519:デフォルトの名無しさん
17/05/06 22:35:29.44 Vgrr/US10.net
>>498
最近debrisってよく見かける単語だなぁ。
Apple系News Sitesでよく見かけるなぁ。

520:デフォルトの名無しさん
17/05/06 22:37:36.61 Vgrr/US10.net
フォン・ノイマン型 ハーバード型
ってなんの話だ?

521:デフォルトの名無しさん
17/05/06 22:39:01.34 Vgrr/US10.net
AVR, PIC vs Intel, ARM
って事なのね。

522:デフォルトの名無しさん
17/05/07 01:04:29.57 97sXlIAUp.net
早々にSwiftに移行した人達よ、工数人件費は抑えられた?上がった?

523:デフォルトの名無しさん
17/05/07 14:03:00.79 w48Ptm+H0.net
>>491
キチガイの発想は健常者には理解不能


524:だよなあ



525:デフォルトの名無しさん
17/05/07 16:21:15.72 kFOE8CxJp.net
>>507
swift1.1で業務採用して2.3までメンテしてたけど、ムリゲーだwwwってレポート挙げてobjcに差し戻した
工数人件費はお察し

526:デフォルトの名無しさん
17/05/07 17:00:21.83 4+gPHsDZ0.net
>>509
ちょっと、どう言う状況なのか?理解不能。
Swift2.3 - 3.xへの移行が難しいってのはどう言う事?
Unsafe族を使いまくってたのとか?
それでも、なんとか移植できるでしょ。2.x -> 3.xはそんなに
困難?
これから段々、Obj-C世代が居なくなるよ。

527:デフォルトの名無しさん
17/05/07 17:34:13.56 kFOE8CxJp.net
1.xの頃は開発環境が業務に耐える品質じゃなかったし
2.xはまだマシだけどやっぱり更新頻繁だったんよ
半年単位で言語仕様、API仕様が変わってたからメンテ工数がobjcの比じゃなかった
2.3から3の移行が厳しいんじゃなくて、それまでが悲惨すぎてもうやめよってなった
比較的更新速度の遅い3.0以降で業務採用始めてたら違ったかもな
まぁ早々に移行したヤツと、最近移行を考えてるヤツは状況違うから、あんまり参考にならんよ

528:デフォルトの名無しさん
17/05/07 18:21:04.90 Y4rdOdmi0.net
本番に耐えられるのはバージョン3からというしな

529:デフォルトの名無しさん
17/05/07 19:54:43.41 w48Ptm+H0.net
そういうのもあるけどXcodeがクソすぎる

530:デフォルトの名無しさん
17/05/07 20:20:45.01 59YO4yyL0.net
うちはまだSwift2.3 - 3.xへの移行まだしてないな。
GCDあたりとか手作業で書き換えないといけないらしいし、
いっそObj-Cに戻したほうがSwift3→4移行の時も苦労しなくて済みそうな気がしてくる。

531:デフォルトの名無しさん
17/05/07 22:19:05.42 dChYZV8N0.net
swift5もでるみたいだから毎年苦労することになる。

532:デフォルトの名無しさん
17/05/07 22:39:31.23 VGI2seLS0.net
4からCIでソース互換性テストやるようになったから大丈夫だろ

533:デフォルトの名無しさん
17/05/07 22:45:12.18 DJhnYmDa0.net
そろそろ仕様は安定しましたか?

534:デフォルトの名無しさん
17/05/08 00:46:35.42 j5FwBoSL0.net
移行しないという選択肢は

535:デフォルトの名無しさん
17/05/08 08:14:18.24 tEZCpO6i0.net
>>518
Appleが政治的にゴリ押してるから移行する必要性が出てるわけであって、技術的にはそれもあり

536:デフォルトの名無しさん
17/05/08 08:43:41.22 CnaMYymAa.net
>>518
数年しか使わないアプリならそれでいいんじゃない。

537:デフォルトの名無しさん
17/05/08 08:48:43.68 X/V4E59/d.net
>>517
俺は十分に安定したと判断したからswiftに移行したけど、予想が外れたら恨んでくれて良いよ

538:デフォルトの名無しさん
17/05/08 13:41:30.46 Bf5KwLeX0.net
swift触るよりreact native とtypescriptでいいんじゃないかな?
reduxでステート管理できるぜ

539:デフォルトの名無しさん
17/05/08 13:44:43.79 vwxEwAxp0.net
>>522
react nativeもなんだかなぁ。
結局JavaScriptだけで、アプリ作れる訳では無いし。
RxSwift触ってるけど、
なんで、Variableとか、Driverとかがあるのか?良く判らん。
おまけに、RxSwift3.4になって、他にも色々増えてるし。

540:デフォルトの名無しさん
17/05/08 13:46:43.44 vwxEwAxp0.net
Variable, Driver
Single, Maybe, Completable
ってのがあるんだけど、こんなにViewModelが必要なのだろうか?

541:デフォルトの名無しさん
17/05/08 16:14:31.41 bL8ez2V30.net
>>521
ABIの安定化がようやく4でなされる予定で、文法の下位互換保証は5とかになるんじゃないのかね
そんな状況下で仕様安定というのはまだ時期尚早だと思うぞ

542:517
17/05/08 16:27:33.64 WhT9Qpgj0.net
ずっと前から定期的にswiftが安定したかどうかをこのスレで尋ねてきたんだけど
今回初めてポジティブな反応があったってのは喜ばしいです
これから勉強するって立場だと、前みたいにあまりにも大きい変更があるなら
手を出しづらいけど、
そこまで大きくない変更があるぐらいならなんとかなりそうだし、
仕様が安定した頃にはバリバリ書けてる様になれるのが理想なので
そろそろ勉強し始めてみるよ
またこのスレにはお世話になると思うので
今後もよろしくお願いします

543:デフォルトの名無しさん
17/05/08 17:29:23.85 WxeP2eSJ0.net
ABI安定化は延期されたから4には入らないって何度言わせるんだ

544:デフォルトの名無しさん
17/05/08 18:17:19.90 bL8ez2V30.net
あん?3が見送りで4で安定(予定)じゃないのかいな
swift-evolutionのREADMEでは4に入ってんぞ、これからまた変わったのか?

545:デフォルトの名無しさん
17/05/08 18:44:56.25 ZyGEVEkup.net
変化を恐れては何も進歩しない

546:デフォルトの名無しさん
17/05/08 22:24:36.42 Bf5KwLeX0.net
>>523
でも大概のアプリの要求は満たせると思うが。何よりマルチプラットホームなのが嬉しい。
とはいえ、typescrptにも限界はあって
やはり動的言語を無理やり静的言語に見せかけているゆえの謎の不具合は避けられないんだよなぁ

547:デフォルトの名無しさん
17/05/09 00:14:22.36 U8IiXvlVp.net
>>529
Swiftが進歩してもらうのはウェルカムだけどObjective-Cよりメンテコストがかかるのなら敢えて採用は出来ないって会社判断もある
うちはもっと安定してからかな

548:デフォルトの名無しさん
17/05/09 01:22:08.73 U5ulV1PaF.net
>>531
賢明な判断

549:デフォルトの名無しさん
17/05/09 14:41:07.77 saKaHmAZ0.net
import Foundation
extension NSObjectProtocol {
static var className: String {
return String(describing: self)
}
}
print(String.className) // =>NSString
print(String(describing: String.self)) // =>String
最初のprint文の出力は、これで良いのでしょうか?
Terminal.appで実行しました。
513> swift -v
Apple Swift version 3.1 (swiftlang-802.0.53 clang-802.0.42)
Target: x86_64-apple-macosx10.9
です。

550:デフォルトの名無しさん
17/05/09 14:43:56.95 saKaHmAZ0.net
あと昔、NSObject classとNSObject protocolの2つがあった様に
記憶してますが、
protocolの方はNSObjectProtocol protocolに改名されたのでしょうか?

551:デフォルトの名無しさん
17/05/09 14:47:24.26 saKaHmAZ0.net
obj-cのNSObject protocolがswiftのNSObjectProtocolなんですね。

552:デフォルトの名無しさん
17/05/09 16:26:35.60 +4v+N8Ofp.net
ストーリーボードを使わずに開発したいんだけど、参考になる書籍がなかなか見つからん..
なんかオススメの本あったら教えてくれ

553:デフォルトの名無しさん
17/05/09 16:41:53.42 saKaHmAZ0.net
>>536
大都市圏にお住まいじゃないのかな?

554:デフォルトの名無しさん
17/05/09 16:43:02.60 aBFiO8O6a.net
>>536
ストーリーボード使えばいいじゃん
楽だよ

555:デフォルトの名無しさん
17/05/09 16:53:15.00 99drGKBN0.net
便乗で質問です。
Swiftの言語自体の解説は書籍もサイトも見つかるのですが、
ストーリーボード自体の解説をしている書籍とかサイトって、
あまり見当たり


556:ません。 なんかお勧めとかありますでしょうか?



557:デフォルトの名無しさん
17/05/09 16:57:06.02 PFfvqZY+0.net
>>533
バグっぽい
SE-0072 で String から NSString への暗黙的なキャストは禁止になったけど
NSObjectProtocol のメソッドを呼ぶときは暗黙的に NSString にキャストされるままになってしまってる
今 master の最近のビルドで試してみたらコンパイルエラーになったから 4.0 で修正されると思われる
print(NSString.className) // NSString
// print(String.className) // error: static member 'className' cannot be used on instance of type 'NSString'
print(type(of: "" as NSString).className) // NSString
Swift version 4.0-dev (LLVM 3df4892fbe, Clang 1a30829a18, Swift 79258866a2)
Target: x86_64-unknown-linux-gnu

558:デフォルトの名無しさん
17/05/09 17:02:09.65 PFfvqZY+0.net
>>536
>>539
ここは言語自体のスレなので、iOS開発関連の質問は↓このへんで聞いたほうがいい
[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad]
スレリンク(mac板)
Xcode part14
スレリンク(mac板)

559:デフォルトの名無しさん
17/05/09 17:09:44.77 99drGKBN0.net
>>541
了解です。ありがとうございます。

560:デフォルトの名無しさん
17/05/09 17:14:04.01 saKaHmAZ0.net
>>536
秘密!
俺って意地悪。
自己嫌悪。

561:デフォルトの名無しさん
17/05/09 17:21:32.43 +4v+N8Ofp.net
>>538
使わないほうがプロジェクトの管理的にいいんですよね..
>>541
すみません、誘導ありがとうございます。
そちらのスレで質問してみます。

562:デフォルトの名無しさん
17/05/09 17:23:30.33 aBFiO8O6a.net
>>544
>使わないほうがプロジェクトの管理的にいいんですよね..
なんで? 意味が分からん

563:デフォルトの名無しさん
17/05/09 17:41:17.37 XATV1oVDp.net
1つの.storyboardを複数名が修正して発狂するのはiOS/macOS開発の宿命
じゃあswiftだけ作ればいいって言うと更に発狂するし
storyboardを複数に分けるとビルド時間延びて発狂する
ホントXcodeはクソやでぇ、、、
まぁビルド時間はswift使う時点で頭くるほど延びてるんだけども
1.xの頃はホントシネと思った

564:デフォルトの名無しさん
17/05/09 19:02:34.86 kVl7/5KVp.net
1つでかいStoryboardがある場合とそれを分割した場合とじゃ後者の方がビルド早くない?ビルドキャッシュのおかげかな?

565:デフォルトの名無しさん
17/05/10 14:08:08.73 w+pKES+H0.net
>>540
THX
WWDC2017ではSwift4.0betaが出現かなぁ。
Swift3.1と4.0betaは共存できるのかな?

566:デフォルトの名無しさん
17/05/10 16:46:03.36 5zfXjNQY0.net
Swiftで開発中にハマまくったけど結局コンパイラのバグだったって経験ある人いる?
そういうのが怖くてSwift始められない人って多いと思う。

567:デフォルトの名無しさん
17/05/10 17:02:30.52 w+pKES+H0.net
>>549
540にbugの例があるだろ!
bugの回避を見つけられないなら、始めない方が良いと思う。

568:デフォルトの名無しさん
17/05/12 12:44:09.77 5uMNbvu6M.net
[速報]マイクロソフト、「Xamarin Live Player」発表。Visual Studioで開発したコードを直接iOS
/Androidデバイスに転送、実行、リモートデバッグ。Mac不要。Build 2017
URLリンク(www.publickey1.jp)
Xamarinに移行するわ。

569:デフォルトの名無しさん
17/05/12 13:59:51.73 lhbTqX1Q0.net
>>551
なかなか、良さそう。
Xamarin Live PlayerってのiPhoneへ放り込むって事で、WiFi経由でdebugできるってことか。
1本1,000円のLightning Cableが不要になるのはありがたい。

570:デフォルトの名無しさん
17/05/12 14:05:12.34 2mn6Y2Vsa.net
MS社員きてんね

571:デフォルトの名無しさん
17/05/12 14:05:21.37 Q17vINXP0.net
グダグダなswiftをみると、まともなC#に移行したくなるわな

572:デフォルトの名無しさん
17/05/12 14:36:33.56 lhbTqX1Q0.net
>>554
C#は歴史があるからなぁ。

573:デフォルトの名無しさん
17/05/12 14:37:19.76 lhbTqX1Q0.net
Microsoft Fluent Design System - YouTube
この動画感動。なんかすごそう。
簡単に、こんな、UI/UXできれば良いが。

574:デフォルトの名無しさん
17/05/12 18:51:17.19 adrx7z+4a.net
音量でかすぎた

575:デフォルトの名無しさん
17/05/12 20:26:13.04 PRgqKdu8M.net
Unityみたいにエミュレートなんじゃないのかな

576:デフォルトの名無しさん
17/05/12 20:36:48.20 eVJpK769p.net
あの日の夕暮れ時の輝くUnityみたいな君の笑顔を忘れない
Forever

577:デフォルトの名無しさん
17/05/12 22:48:43.99 lZ6lnHgt0.net
>>551
ますます、Swiftの存在価値に疑問符が打たれてきたな

578:デフォルトの名無しさん
17/05/12 22:52:46.78 5e8sApFSd.net
腐林檎怒らんの?

579:デフォルトの名無しさん
17/05/13 01:57:49.50 IqEmk/XX0.net
>>561
Appleと協議してOK出てるらしいよ

580:デフォルトの名無しさん
17/05/13 02:01:24.32 1JN0T2YBp.net
Xamarin Live Playerを使うことで、MacがなくともiOSデバイスへ開発中のアプリケーションをデプロイできるようになったため、
アプリケーション開発段階ではすべての作業をWindowsマシンだけで行うことができるようになりました(ただしAppleへの申請などのためにMacは必要となります)。
>ただしAppleへの申請などのためにMacは必要となります
>ただしAppleへの申請などのためにMacは必要となります
>ただしAppleへの申請などのためにMacは必要となります
Appleも抜かりはないな

581:デフォルトの名無しさん
17/05/13 02:03:40.83 hinxYcJy0.net
>>563
でも、それだけであればくそ高いmac本体買わないで済むわ

582:デフォルトの名無しさん
17/05/13 02:14:36.61 1JN0T2YBp.net
ユーザ拡大になるし、Mac miniでも買ってもらえるし、Developperプログラムの年会費も払ってもらえるし
まぁ、Appleにとってもメリットあるしな

583:デフォルトの名無しさん
17/05/13 06:43:51.68 As0eJ5kQ0.net
今までありがとう!Swift
Thank you Swift !!!

584:デフォルトの名無しさん
17/05/13 08:57:29.66 Z7L9CwYa0.net
低消費電力でモデム内蔵のARMベースプロセッサを使ったWindows 10マシン
今年年末に登場しそう。

585:デフォルトの名無しさん
17/05/13 09:37:10.68 rqW5CPNwa.net
C#の方が開発効率がいいってこともないしな

586:デフォルトの名無しさん
17/05/13 09:52:22.76 GNfu9LRLp.net
言語(swift)と開発環境(Xamarin)を比較しても意味もなし
でも久し振りのXamarinステマ荒しは懐かしくて感慨深い
MS買収前に結構必死にステマしに来てたよな
挙げ句、荒し隔離のためXamarin本スレが立てられたのは何年前か

587:デフォルトの名無しさん
17/05/13 11:40:17.12 XbcTyLeU0.net
業務でXcode以外でSwift使ってる人いる?

588:デフォルトの名無しさん
17/05/13 12:59:31.23 zXljI+dv0.net
Xamarin Live Playerを使ってみたので導入手順をまとめます!
URLリンク(qiita.com)

589:デフォルトの名無しさん
17/05/13 13:04:23.39 As0eJ5kQ0.net
>>570
Xcodeの補完機能があってこそかろうじて使えるswiftをわざわざ他の環境で使うメリットがあると思うなら書いて欲しい

590:デフォルトの名無しさん
17/05/13 13:15:08.25 GNfu9LRLp.net
IntelliJ系列のどこぞのIDEがswiftもサポートしてたはずで
Android Studioと操作が変わらないから Android/iOS平行実装の開発効率が良い、と�


591:イ物語を言ってみる 実際はstoryboardを十分に扱えない時点で耐えないんだけども UI伴わないライブラリ部分の実装なら可能性はある?



592:デフォルトの名無しさん
17/05/13 13:18:23.20 xkrIKHJy0.net
>>571
アザっす!

593:デフォルトの名無しさん
17/05/13 14:31:08.02 ip/BeLNq0.net
ちょっとしたことでXcode立ち上げるのめんどいときはAtomやVimもよく使う

594:デフォルトの名無しさん
17/05/13 14:41:37.17 Z7L9CwYa0.net
>>575
俺もコードの断片を試すのにVim使ってる。
Atomも気になるけど、まだ未体験。
command+Iでコードを実行できるってのが素敵。

595:デフォルトの名無しさん
17/05/13 14:47:23.12 OMAeHVCMa.net
Xcodeは普通立ち上げっぱなしやろ

596:デフォルトの名無しさん
17/05/13 23:05:16.12 GNfu9LRLp.net
vim + swiftc は正義
メモリ4Gの安いものMBAだとXcodeも重くてたまらんわー

597:デフォルトの名無しさん
17/05/14 09:22:38.57 HODPBKt90.net
>>578
偉い!
4GでXcodeは、Yosemiteだと割と快適だった。
SierraになってmacOS自体のメモリ消費が激しいのかな?
Xcode重いぜよ

598:デフォルトの名無しさん
17/05/14 20:05:43.28 oVGn9/4Pa.net
【北朝鮮ミサイル】射程4000キロ超か
株売って、疎開せえやwww

599:デフォルトの名無しさん
17/05/14 20:21:34.19 HODPBKt90.net
>>577
Xcodeたち上げっぱなし、俺もそう。

600:デフォルトの名無しさん
17/05/14 20:25:19.44 HODPBKt90.net
開発機の予備が欲しいんだけど、どっちが良いだろう?
MacBook Air 1600/13.3 MMGF2J/A
最安価格(税込):¥86,726

MacBook Pro Retinaディスプレイ 2700/13.3 MF839J/A
最安価格(税込):¥118,330

どちらも外部LCD接続で使用予定。

601:デフォルトの名無しさん
17/05/14 20:28:05.05 HODPBKt90.net
iMac Retina 4Kディスプレイモデル MK452J/A [3100]
Retina 4Kディスプレイ搭載のiMac

最安価格(税込):¥138,799 (前週比:-26円↓)

開発機にはこれが良いかも。Quad Coreだし、16GBメモリへ増設可能だし。

602:デフォルトの名無しさん
17/05/14 23:04:39.52 uv93vc4+0.net
atomの立ち上げ時間も結構しんどいよ…

603:デフォルトの名無しさん
17/05/15 11:57:21.79 EZXo4zola.net
開発機の予備なら何でもいいんじゃない。
Appleはそれほど種類があるわけでもないし。

604:デフォルトの名無しさん
17/05/15 16:35:12.83 GeJVogvRa.net
鼻味噌

605:デフォルトの名無しさん
17/05/16 09:55:12.80 5DkIZU+i0.net
ちょいと長いコード(170lines)なんですが、コンパイル出来ずに困ってます。
URLリンク(swift.sandbox.bluemix.net)

ERROR at line 64, col 9: value of type 'Bag<AnyObserver<String>>' has no member 'on'
bag.on(.next(value))

RxSwiftと同じ動きをするclass, protocolを自作しようとしているコードなんですが、コンパイル成功させるにはどの様に修正すれば良いでしょう?

コードのオリジナルは、
URLリンク(qiita.com)
から拾って来ました。オリジナルをSwift3.1へ移植したコードをswift.sandbox.bluemixへ貼りました。

606:デフォルトの名無しさん
17/05/16 11:59:38.46 ICwew/1a0.net
>>587
記事が2016年という前提で
↓のextensionが足りない
URLリンク(github.com)
正常動作かどうかは知らないがとりあえず追�


607:チ http://swift.sandbox.bluemix.net/#/repl/591a698acfa69e773dc97f42



608:デフォルトの名無しさん
17/05/16 13:30:21.26 5DkIZU+i0.net
>>588
THX
今日は、現実逃避の為にRxSwift三昧です。
こんなメール
>>今期のxxxさんの業務目標について、iOSアプリについては、私から指示があります。
しばらく、ブッチしよう。

609:デフォルトの名無しさん
17/05/16 16:38:05.02 5DkIZU+i0.net
>>588
あんた、達人だね。

610:デフォルトの名無しさん
17/05/16 21:01:58.80 V62zB62H0.net
RxSwiftみたいな何年も前の流行りモノを業務時間内に学習してる後輩/部下がいたら指導するわw
Swift 2.xの頃にEitherフレームワークが便利!と食いついて3.0でorzになった奴らと大して変わらんと思うんよ

Either、使いやすそうだったから言語公式に入ってくれたら良かったのになぁ
3.0でthrowsが入った時には、ObjCとの兼ね合い上、そうなるしかないのか・・・とSwiftに対して諦観した

611:デフォルトの名無しさん
17/05/17 00:39:16.19 Ohq1+PUR0.net
throwsが入ったのは2.0だが

612:デフォルトの名無しさん
17/05/17 01:01:44.90 jqU81Xra0.net
>>582
air はクソ コンパイルが遅い
Swiftで使うのは酷だな

613:デフォルトの名無しさん
17/05/17 01:03:27.25 jqU81Xra0.net
>>572
結局そこだよな
ウンコ環境のXCodeでテキスト書かないと行けないのが
Swiftの生産性の低さだし

614:デフォルトの名無しさん
17/05/17 01:09:00.66 wBpGRZBOa.net
C#とかJavaってテキストエディタだけでも生産性高いの?

615:デフォルトの名無しさん
17/05/17 02:12:48.46 v4KZ2kPEa.net
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だけで良くなった。
その他色々短縮したり仕様上、出来なかったことが出来るようになったり。

616:デフォルトの名無しさん
17/05/17 09:19:35.81 ZxePWPEe0.net
>>592
orz、Swiftに諦観したのはそんな前だったか
それでもまぁあの頃は更新頻繁で楽しかった、今は更新少なくて寂しい

617:デフォルトの名無しさん
17/05/17 11:35:09.00 q4Dy9Gb80.net
>>596
これだけじゃぁ何がすごいのかわからないなりよ

618:デフォルトの名無しさん
17/05/17 13:56:25.22 8ydAfzFNp.net
以前は
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!")

619:デフォルトの名無しさん
17/05/17 14:03:46.15 AiW2lEeYp.net
::::::::        ┌──────── ┐
::::::::        |  C#がやられたようだな….      │
:::::   ┌──└──────v──┬┘
:::::   |フフフ…奴は四天王の中でも最弱 ….      │
┌─└────v─┬────┘
| Swiftごときに笑われるとは    │
|  我ら四天王の面汚しよ…    │
└──v─────┘
  |ミ,  /  `ヽ /!    ,.─、
  |彡/二Oニニ|ノ    /三三三!,       |!
  `,' \、、_,|/-ャ    ト `=j r=レ     /ミ !彡
T 爪| / / ̄|/´__,ャ  |`三三‐/     |`=、|,='|
/人 ヽ ミ='/|`:::::::/イ__ ト`ー く__,-,  、 _!_ /
/  `ー─'" |_,.イ、 | |/、   Y  /| | | j / ミ`┴'彡\
    C++        Java     JavaScript

620:デフォルトの名無しさん
17/05/17 17:22:44.69 i1ICJ16i0.net
   /ミ !彡      ●  
  |`=、|,='|    _(_
   、 _!_ /   ( ゚ω゚ )
 / ミ`┴'彡\ '    ` 
          Visual Basic

621:デフォルトの名無しさん
17/05/17 23:03:15.55 Noyf0zx+a.net
あれ。。。
SwiftってもしかしてLL?
インタプリタ?

622:デフォルトの名無しさん
17/05/17 23:06:00.60 Noyf0zx+a.net
とりまC#6の新機能紹介のページググったわ
URLリンク(www.buildinsider.net)

623:デフォルトの名無しさん
17/05/18 09:19:16.04 pNgi+zrhd.net
>>599
皮肉が効いてるな
表面的なコード量が短いことが他の全てのことに優先して正義だと本気で思ってる奴がいるからな

624:デフォルトの名無しさん
17/05/18 10:03:29.76 pE9H07RL0.net
表面的なコード量が長いことをコンプレックスに持ってる言語もいるよね・・・
そして、一長一短の他者を認めることもなく他言語を総じて悪と本気で思ってたり

>>603
ざっと見たけどSwiftで同等のこと出来てね?所詮、四天王最弱か

625:デフォルトの名無しさん
17/05/18 10:44:29.14 rvD/i38o0.net
>>591
あんた、厳しいなぁ。

それから、流行り物っていう評価はどうかな?
今後、廃れていくと言うことを、暗に言ってるつもりなのか?

626:デフォルトの名無しさん
17/05/18 11:51:08.83 cbVNyV680.net
Playgroundでシコシコ遊んでると、そのうち出力が表示されなくなったり無反応になるんだが
どうにかならんもんかね

627:デフォルトの名無しさん
17/05/18 12:01:12.99 rvD/i38o0.net
>>607
そんなもんだ。
Xcode再起動。

628:デフォルトの名無しさん
17/05/18 13:53:48.78 cxDrW8CM0.net
Apple無念・・・

Google、KotlinをAndroidアプリ開発言語に選定―I/O会場から大喝采
URLリンク(jp.techcrunch.com)

629:デフォルトの名無しさん
17/05/18 13:59:24.41 TSzqrQQ0a.net
>>605
まあ最新はC#7で、おいらはプログラミングから離れたんでうらしま太郎状態なんだけどね。
VSやコンパイラもC#で作られたのがC#6からだっけ。。。

630:デフォルトの名無しさん
17/05/18 14:56:56.01 73+z2CN30.net
>>609
何が無念?

631:デフォルトの名無しさん
17/05/18 15:59:16.23 xh1cvqBY0.net
Swiftにならなかった、ということだろう

Google、SwiftをAndroidの第一級言語にすることを検討?
URLリンク(www.excite.co.jp)

632:デフォルトの名無しさん
17/05/18 16:19:36.22 rvD/i38o0.net
>>610
Visual StudioがC#で?
あの遅い言語のC#で?

それは本当か?

633:デフォルトの名無しさん
17/05/18 16:24:16.64 rvD/i38o0.net
>>609
>Kotlin

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

let, varにしてもらわんと、目がチカチカするわぁ。

634:デフォルトの名無しさん
17/05/18 16:25:14.83 rvD/i38o0.net
swift -> kotlinコンバーターとか作れるのかなぁ?

635:デフォルトの名無しさん
17/05/18 16:32:06.75 fOFaQvk5p.net
SwiftはLLVMでコンパイルするんだからJVM向けバイナリ吐けばいいだけでしょ
なんでKotlinを挟む必要があるのか、それがワカラナイ(色んな意味でスットボケ

636:デフォルトの名無しさん
17/05/18 16:33:43.40 rvD/i38o0.net
>>615
>swift -> kotlin
URLリンク(qiita.com)

あまりに似ているので、かえって混乱するかも

637:デフォルトの名無しさん
17/05/19 20:58:58.36 RywFaTWpd.net
swiftでiOS勉強したいのですが、参考になるOSSのアプリとか無いでしょうか
ドキュメントから入るより出来の良いコードを見たい派です

638:デフォルトの名無しさん
17/05/19 21:13:02.47 lzW4mJ600.net
GitHubにいっぱいあるだろ

639:デフォルトの名無しさん
17/05/20 13:02:32.18 wa2Zpry6M.net
>>614
同意

640:デフォルトの名無しさん
17/05/20 14:50:47.85 tp08styd0.net
Kotlinのval,varはScala先輩に倣ったものだから仕方ない

641:デフォルトの名無しさん
17/05/21 00:39:31.16 gwfvvdvz0.net
swift はそろそろ安定期に入ってもいいと思うんだ

642:デフォルトの名無しさん
17/05/21 09:35:27.70 PKguD9Ia0.net
>>622
bugレポ、沢山上がってるが、これはどうする?

643:デフォルトの名無しさん
17/05/21 11:11:35.71 xz6V7we20.net
バグレポを出す時にプルリクをセットにすれば安定はすぐだ

644:デフォルトの名無しさん
17/05/21 11:13:42.65 Wx20c4Ig0.net
>>622
無理無理

645:デフォルトの名無しさん
17/05/22 09:20:46.59 QM6p1JyG0.net
>>622
bugレポ、新機能追加requestともに増えている状況だから
安定なんて、無理じゃね?

646:デフォルトの名無しさん
17/05/22 09:23:11.36 QM6p1JyG0.net
Swift4 betaをinstallした後、Xcode8.3.2で切り替えながら使うqiita記事を見失った。

なんと言うタイトルだったか?どんなtagでqiitaを検索すればhitするのか?
教えてクレェ?

647:デフォルトの名無しさん
17/05/22 10:13:24.24 np8fDJ8H0.net
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で色々試せていい
URLリンク(github.com)

648:デフォルトの名無しさん
17/05/22 10:14:58.82 WxrTRTpJp.net
xcrun selectとか(定期待ち)

649:デフォルトの名無しさん
17/05/22 10:47:13.23 QM6p1JyG0.net
>>628
ありがとう。
超THX

650:デフォルトの名無しさん
17/05/23 10:52:51.90 3fZmvxNt0.net
Swift歴2年、アプリリリース経験無しの非IT系リーマンです。Generics protocolとか難しいなぁと思いながら、RxSwiftのコードを解読してます。

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

Swift, C#, Java, C++の4つの内、どれが一番難しいと思います?

651:デフォルトの名無しさん
17/05/23 11:07:24.17 nyMT4OHb0.net
難しさでいったら、C++ 一択やろなぁ

652:デフォルトの名無しさん
17/05/23 11:12:58.06 3W0XlzKra.net
圧倒的にC++。



653:でもMFCには玄人っぽさへの憧れはあるけど、MFCの本は最盛期に比べて大分減ったなぁ。。。 JavaやC#してから(特にC#のがC++に近いけど分からなくなる一歩手前まで取り入れてるからオススメ)、C++行くと理解が進むね。



654:デフォルトの名無しさん
17/05/23 11:52:49.93 3fZmvxNt0.net
AppleのReferenceで混乱してる記述を発見

1. メタ・タイプを戻すグローバル関数type(of:)の説明には、戻り値がMetatypeとある。
2. メタ・タイプを引数にとるUITableViewCell.registerの説明には、引数がAnyClassとある。
どっちかに記述を統一してほしい。

655:デフォルトの名無しさん
17/05/23 13:01:08.53 IPskfFz70.net
Metatypeはstructやenumも含めた型でAnyClassはclassだけじゃない

656:デフォルトの名無しさん
17/05/23 13:07:30.75 3fZmvxNt0.net
>>635
なるほどぉ

657:デフォルトの名無しさん
17/05/23 13:46:30.45 3fZmvxNt0.net
>>633
Visual Studio6の頃までしか、MFCは知らんけど、
Microsoftは、MFCを放置してるんちゃうの?

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

最近のMicrosoft系開発環境に疎いので間違ってたら申し訳ないすけど。

658:デフォルトの名無しさん
17/05/23 14:21:59.30 ka9VvDM30.net
>>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

659:デフォルトの名無しさん
17/05/23 17:12:29.92 3fZmvxNt0.net
/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番目のソースって事なんでしょうか?

660:デフォルトの名無しさん
17/05/23 18:36:11.48 PJIONmxya.net
>>637
リボンUIはMFCらしいってのまでは追ってたんで、今も地味に進化してると思うけど、おいらも分からん。

あの機能は何の為かとか分かるようになったけど、結局C++触らなくなった。
再入門しようにも入門書の少なさよ。。。

661:デフォルトの名無しさん
17/05/23 19:14:39.26 1Q8iu32F0.net
ビルドキャッシュとして
/var/folders/4x/4kvmnvfd46zdv9xt45wf2kx00000gn/T/vzb3TAU/1
ってファイルがあるんじゃないの
一時的に作られてすぐ削除されるかもしれんから存在確認できるか知らんけど

662:デフォルトの名無しさん
17/05/24 01:14:07.99 9HF6LZlN0.net
そもそもwindowsのアプリ開発でMFC使う事情って保守以外に何あるの?

663:デフォルトの名無しさん
17/05/24 07:14:18.79 6yksy5B10.net
このスレチの話題の結末が

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

だったら感動する

664:デフォルトの名無しさん
17/05/24 10:39:54.11 2xFOJ35Oa.net
感動はするけど、真っ平御免だなw

665:デフォルトの名無しさん
17/05/24 10:40:45.91 2xFOJ35Oa.net
>>642
怖いもの見たさで再挑戦したいだけ。
スレチだし気にしないで。

666:デフォルトの名無しさん
17/05/24 10:44:09.55 vuqBov/y0.net
>>642
動作の軽いアプリが作れる。
.netアプリは動作がモッサリ

667:デフォルトの名無しさん
17/05/24 11:45:23.69 4nncZNTTH.net
MFCはクラスライブラリとは言ってるけどただのモジュールだからなω

668:デフォルトの名無しさん
17/05/24 12:03:02.42 2l4fECtb0.net
KFCはファーストフードとは言ってるけどただのフライドチキンだからなω

669:デフォルトの名無しさん
17/05/24 12:10:44.50 4nncZNTTH.net
KFC高いよね

670:デフォルトの名無しさん
17/05/24 12:40:42.62 QzCZ6xD4a.net
あとポケトも不味いよね

671:デフォルトの名無しさん
17/05/24 12:43:35.78 5Ui6S+Mpp.net
macもファストフードって言ってるけどハンバーガーなんだよな...

672:デフォルトの名無しさん
17/05/24 15:21:05.18 9HF6LZlN0.net
もうkotlinでいいんじゃね。大体同じだし。

673:デフォルトの名無しさん
17/05/24 15:27:20.63 yyV+KPjA0.net
Kotlinの方が名前が可愛いな

674:デフォルトの名無しさん
17/05/24 15:39:03.23 EADXj+S1M.net
バカッターの次はマスト鈍かよ
Swiftはコンパイル必要とかスクリプト言語だとかクッソデタラメばかり撒き散らしてやがる
Swiftはスクリプト言語のようにJIT実行もできるし事前コンパイルして動作することもできるっちゅーねん
よくわかってないからと言って既存のカテゴリに当てはめようとするからおかしくなるんだ。黙ってればいいのに。
twitterもマストドンもバカに絡まれたくないから間違ってても誰も訂正してくれないてことはもうそろそろ理解しないといけないだろうに

675:デフォルトの名無しさん
17/05/24 15:43:46.34 820zba2j0.net
つまりkotlin統一でいいね?

676:デフォルトの名無しさん
17/05/24 16:16:47.79 vuqBov/y0.net
kotlinのvar, valが嫌いだ。
var, letにしてくれ!

677:デフォルトの名無しさん
17/05/24 17:53:01.63 IPRnvfLw0.net
じゃあvar, letにした新言語Kotiftで

678:デフォルトの名無しさん
17/05/24 18:40:00.41 fS2T0Ehba.net
>>647
そうそう。
macで使えるようになって嬉しいとしたらDelphiのVCL。
C#の中の人(Delphiの生みの親)をMSから引き抜けw

679:デフォルトの名無しさん
17/05/25 08:20:49.95 STB2bQ410.net
>>658
VCLって使った事ない。
けど、噂には聞いている。

最近のDelphiではiOSアプリ作れるのか?

680:デフォルトの名無しさん
17/05/25 08:39:03.16 STB2bQ410.net
RAD StudioってのでiOSアプリ作れるみたい。

681:デフォルトの名無しさん
17/05/25 09:04:58.00 STB2bQ410.net
URLリンク(qiita.com)

682:デフォルトの名無しさん
17/05/25 09:55:30.40 pDlob0Fd0.net
>>661
ブラクラ

683:デフォルトの名無しさん
17/05/25 10:26:57.11 nE79I92lH.net
ブラクラではないが特に読む意味もなかった

684:デフォルトの名無しさん
17/05/25 10:35:05.59 jD8c7u6va.net
>>659
.netがVCLに似てる。
ネイティヴ版.netって感じだよ。
言語がC++かObjectPascalってだけで。

.netのForms使えるならVCLも違和感無く使える。

685:デフォルトの名無しさん
17/05/25 11:18:46.81 STB2bQ410.net
>>664
なるほど!VCL良いじゃん。

Common Language RuntimeとかいうInterpreter無しに.netモドキが動くなんて。

686:デフォルトの名無しさん
17/05/25 12:08:23.03 ETNdktOYd.net
>>662
ブラクラとは、どういう意味ですか。

687:デフォルトの名無しさん
17/05/25 12:36:36.05 pDlob0Fd0.net
>>666
ブラクラとは、どういう意味ですか。とは、どういう意味ですか?

688:デフォルトの名無しさん
17/05/25 12:53:08.46 STB2bQ410.net
>>667
お前、相当、捻くれ者!

689:デフォルトの名無しさん
17/05/25 13:09:18.12 pDlob0Fd0.net
>>668
ありがとー

690:デフォルトの名無しさん
17/05/25 13:38:00.17 A2RaX9kE0.net
完全にスレチな話題延々してるのとどっちもどっち

691:デフォルトの名無しさん
17/05/25 16:35:11.41 trjr6FJ


692:g0.net



693:デフォルトの名無しさん
17/05/25 17:14:53.66 pDlob0Fd0.net
どこに
>Copy On Writeで最適化する場合にはprotocolやclassでラップせよ
とか書いてあんだよ

>Copy On Writeって関数引数に単純なstruct型を渡した時の値渡しには適用されないって認識であってる?
んなわけねーだろ

694:デフォルトの名無しさん
17/05/25 17:36:25.00 trjr6FJg0.net
あ、すまん、Advice:の節を注視して前の節を飛ばしてた
> When we copy values (the effect of assignment, initialization, and argument passing) the program will create a new copy of the value.
値渡しはコピーするってしっかり書いてあったわ

695:デフォルトの名無しさん
17/05/25 17:42:45.12 A2RaX9kE0.net
structは常にコピー
このstructはcopy on writeです、という場合も便宜上そう言ってるだけで、実際は中の参照型のストレージをcopy on writeしてるんであってstruct自体は常にコピー
ただしin-out引数だけは例外的にstructでも参照渡しになる場合がある

696:デフォルトの名無しさん
17/05/25 17:46:16.79 pDlob0Fd0.net
copy on writeだから、コビーの必要性が生じた時にコピーが発生するんだろ
structであっても参照するだけならコピーはしない(はず)

697:デフォルトの名無しさん
17/05/25 17:59:30.69 trjr6FJg0.net
>>674
だよなー、昔もSwiftはCOWで処理するからコピーするわけない!!みたいな奴がいて
ずっと首を捻ってたから、このドキュメントで裏付け取れて良かったわ

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

あと>>671でprotocolでラップとか言ったけど意味ないな
protocolはI/F切るだけのものだから、class/structで差をつけないと参照/値渡しには影響ないわ

698:デフォルトの名無しさん
17/05/25 18:01:40.91 trjr6FJg0.net
structの参照渡しのためのin-out parameter(inout)は使いたくないと思った
それするなら、最初からclassでAPIを設計しろというね

699:デフォルトの名無しさん
17/05/25 18:02:56.87 pDlob0Fd0.net
>>676
常にコピーなら、コピーオンライトとは呼べないな

700:デフォルトの名無しさん
17/05/25 18:12:33.09 pDlob0Fd0.net
>>677
inoutを指定しなくないから、クラスにするって考え方がそもそもおかしい

701:デフォルトの名無しさん
17/05/25 18:31:58.93 ud72tGp9d.net
>>678
メモリ操作としてのコピーと、変数への代入時の複製を混同すると、そういう訳のわからない議論になるね
structはコピーオンライトと言っても、osやハードウェアのレイヤーになるとclassであっても必要に応じてコピー(と消去を組み合わせた移動)を行ってるんだけどね。
swiftのレイヤーでは、常にコピーされるって言って良いんじゃないかな
コピーの為に支払うコストがいつ払うことになるか、そもそも払う必要が生じるのか、っていう部分にコピーオンライトの概念が関係してくるだけなんだから

702:デフォルトの名無しさん
17/05/25 18:40:08.35 pDlob0Fd0.net
>>680
ごちゃごちゃした理論は言語設計者の領域の話で
プラグラマ視点でのコピーオンライトという文脈では書き換え時にコピー(コスト)が発生するという単純な理解で特に問題ないだろ
じゃないと、Structは常にコピーが発生するからデータの粒度をなるべく小さくして関数への引数渡しも注意しないととか余計な設計負荷を意識しないといけなくなる

703:デフォルトの名無しさん
17/05/25 19:05:1


704:2.83 ID:rwN5JfUNp.net



705:デフォルトの名無しさん
17/05/25 19:55:10.84 pDlob0Fd0.net
でかいデータをstructにつっこんで扱う時に注意すべきことが書いてあるだけだろ
つまり代入が頻繁に発生する状況でも、そのプロパティに実際にアクセスがあるまでコピーを遅延させるテクニックについて触れられてるだけ
別に関数の引数に値型を使うなとかとんちんかんなことは書いてないな

706:デフォルトの名無しさん
17/05/25 21:10:12.75 1RtxtHBK0.net
SwiftでCOW意識する人なんているんだ。
そういう人はC++とかRustとか使えばいいのに。

707:デフォルトの名無しさん
17/05/25 22:26:04.80 VkchUDpW0.net
最適化しない場所も含めて意識くらいはするでしょ
その程度のことで言語を変える理由にはならんよ

むしろStructでCoWという設計だからこと気兼ねなく渡せるってことに気付いた方がいい

708:デフォルトの名無しさん
17/05/26 05:16:56.16 xRlJL6be0.net
誤: StructでCoWという設計だからこと気兼ねなく渡せる
正: Array StructでCoWという設計だからこと気兼ねなく渡せる

どうしてもSturct全般でCOWが適用されると思い込みたいアホが食いしばってて笑う

709:デフォルトの名無しさん
17/05/26 07:23:41.84 nbO+4ovP0.net
>>686
「Structが」じゃなくて「Structで」な
Arrayに限らず、StringやDictionaryなどのstructでCoWを実装したもの全般

classでCoWを実装する場合は使う側が明示的にcopy()clone()などを呼ぶかinitを使う必要があるが
structでは代入,引数渡し,戻り値がコピーセマンティクスなので透過的に扱うことが出来る

710:デフォルトの名無しさん
17/05/26 08:03:17.32 xRlJL6be0.net
COWの話題から、いつの間にか参照渡し/値渡しの解説になっててワロタ
結局はSturctでCOWが常時適用されるわけじゃないから気をつけようってこったな
参照渡し/値渡しの違いを知らないLL言語勢もいるかもしれんが、別の問題だから気にしない

>>671のReducing Dynamic Dispatchの節も面白い
SwiftはObjective-Cと違ってダイナミックディスパッチを減らす機構を持ってるぜ、と
これを徹底的に使い倒したら、局所的にはObjCよりSwiftの方が性能よくなる可能性が微レ存?

711:デフォルトの名無しさん
17/05/26 08:31:19.29 nbO+4ovP0.net
細かいところだけどclassは参照の値渡しでinoutは参照渡し

712:デフォルトの名無しさん
17/05/26 08:45:20.46 zBDwmOYm0.net
>>676
protocolにまつわる言い回しを色々見ますが、どれが適当なのでしょう?

1. protocolを切る
2. protocolを当てる
3. protocolに準拠させる

すべてadding protocol confromanceの訳語だとおもうんですけど。

713:デフォルトの名無しさん
17/05/26 08:49:45.12 zBDwmOYm0.net
最近のCPUはSIMD命令(SSEとかAVRとか言われるやつ)を内蔵していて、
でかいStructも一発でコピーできるって、理解は正しいっすかねぇ?

512bitレジスタが32個あって、しかもその32レジスタはペアで使える。
って事は、512bit x 32個 = 2Kbyteを一発でレジスタ -> メモリへmoveしたり
メモリ -> レジスタloadできる。

この理解はOKっすかねぇ。

714:デフォルトの名無しさん
17/05/26 10:19:08.37 LS4RNUEG0.net
>>689
in-out引数は参照渡しじゃない
in-out引数のセマンティクスはあくまでcopy-in copy-outで、最適化で参照渡しになる"場合もある"だけ
リファレンスではin-out引数が参照渡しであると想定したコードを書いてはいけないとはっきり言ってる
URLリンク(developer.apple.com)


715:/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-ID545 var i: Int = 0 { willSet { print("willSet: ¥(newValue)") } } i = 1 // prints "willSet: 1" i = 2 // prints "willSet: 2" func f(_ v: inout Int) { v = 3 v = 4 } f(&i) // prints "willSet: 4" 参照渡しなら"willSet: 3"と"willSet: 4"両方表示されるはずだけど 実際には関数に入るときにiの値がvにcopy-inされ 関数から出るときにvの値がiにcopy-outされるので copy-out時の"willSet: 4"しか表示されない



716:デフォルトの名無しさん
17/05/26 10:43:47.67 zBDwmOYm0.net
>>692
すんばらしい、説明

717:デフォルトの名無しさん
17/05/27 14:04:16.20 SDTaiU/Z0.net
>>692
え…
参照渡しと値渡しで違う動作するとき
動作がどっちになるかわからんってこと?

718:デフォルトの名無しさん
17/05/27 21:00:43.52 h0JsdT2O0.net
>>694の心の声
(やべぇ、まじかよ…。バグ仕込んじまった…)

719:デフォルトの名無しさん
17/05/27 21:48:41.96 aL4+kPgB0.net
inoutで渡された配列変数のオリジナルを関数内で操作しても副作用はないみたいただけどな

var a = [Int]()

func f(_ v: inout [Int]) {
v.append(3)
a.append(4)
v.append(5)
}

a.append(1)
f(&a)
a.append(2)

print(a) // [1, 3, 4, 5, 2]

ただ、それを想定するなということなんだろ

720:デフォルトの名無しさん
17/05/27 21:57:51.65 e57lt1AJ0.net
SwiftってiOSアプリ以外に広がる可能性ある?

721:デフォルトの名無しさん
17/05/27 22:13:54.38 7vlRlcaj0.net
少なくともwillSetがある場合は参照渡しの最適化が掛からないようだね
以下のAはcopy-in, copy-outになっていて、Bは参照渡しになってる
URLリンク(swift.sandbox.bluemix.net)

722:デフォルトの名無しさん
17/05/27 22:20:21.28 SDTaiU/Z0.net
>>696
いやそれ副作用ある状態じゃん
関数終わった時点で
a=1,4
v=1,3,5
だからoutでvがaに上書きされて
1,3,5,2 が出ないといけないはず

723:デフォルトの名無しさん
17/05/27 22:21:46.44 7vlRlcaj0.net
>>696
var a = [Int]() { willSet{ } } にしたら [1, 3, 5, 2] になるね

724:デフォルトの名無しさん
17/05/27 22:26:06.26 SDTaiU/Z0.net
えええええ
ほんとに動き違うのかwwww

725:デフォルトの名無しさん
17/05/27 22:26:19.82 aL4+kPgB0.net
>>699
aの内容を変更するためにf()にaを渡したのだから、f()の中ではaとvは同じ扱い
なので、inoutの仕様からすれば、>>696の挙動が自然だと思うけど

726:デフォルトの名無しさん
17/05/27 22:30:22.71 aL4+kPgB0.net
willSetの有無で挙動が変わるのはいただけな
デバッグで混乱する元になる

727:デフォルトの名無しさん
17/05/27 22:31:17.31 SDTaiU/Z0.net
>>702
>>692のリンク先
In-out parameters are passed as follows:
1.When the function is called, the value of the argument is copied.
2.In the body of the function, the copy is modified.
3.When the function returns, the copy’s value is assigned to the original argument.

コピーされるて書いてあるやん!

728:デフォルトの名無しさん
17/05/27 22:38:43.72 aL4+kPgB0.net
>>704
そこに
As an optimization, when the argument is a value stored at a physical address in memory, the same memory location is used both inside and outside the function body. The optimized behavior is known as call by reference
とも書いてある。参照を渡して最適化されると。
それに依存して関数内で参照元にアクセスするなとも書いてあるけど

729:デフォルトの名無しさん
17/05/27 22:41:57.41 SDTaiU/Z0.net
>>705
うん、>>692を誤読してた
動作変わるのは最適化って言わねーよ!

>>696ってほんとに試したんか

730:デフォルトの名無しさん
17/05/27 22:47:16.42 aL4+kPgB0.net
>>706
Playgroundにコピペして試してみればいいだろ

731:デフォルトの名無しさん
17/05/27 22:49:30.62 SDTaiU/Z0.net
Write your code using the model given by copy-in copy-out, without depending on the call-by-reference optimization,
so that it behaves correctly with or without the optimization.

…最適化と言い張ってるがこれはひどい

732:デフォルトの名無しさん
17/05/27 23:01:24.62 aL4+kPgB0.net
このぐらいの最適化はやってくれた方がありがたい
参照渡しの方が確実にパフォーマンス上がるし、通常の使い方で副作用もない
副作用があるようなら書き方に問題があるだろ
inoutで受けた変数のオリジナルにアクセスするコードにワーニングぐらい出してくれたら
とも思うけど、まだそこまで面倒は見きれないんだろ
ただ、最適化の恩恵にあずかりたいなら、willSetなんかは入れない方がいいみたいだな

733:デフォルトの名無しさん
17/05/27 23:07:17.91 Hem7AZxu0.net
>>706
いや最適化だよ
参照渡しにしたとしても、外形的にcopy-in copy-outした場合と全く同じ動作をする場合にだけ、参照渡しに最適化される
ただ、>>696みたいなコード書くとその最適化の前提がぶっ壊れるから絶対するなとリファレンスでも言ってるだけで

リファレンスにはっきりやるなと書いてることをやって壊れたからってそれはプログラマの責任でしょ

まぁ将来的にownershipが入れば>>696みたいなコードもちゃんとコンパイルエラーにしてくれるようになると思うよ

734:デフォルトの名無しさん
17/05/27 23:47:08.68 7vlRlcaj0.net
willSetがあるとmutating funcもself自体がcopy-in copy-outになった
これもリファレンスのどこかにあるのかな

struct A{
var v = [Int]()
var onAppend: (()->())? = nil
mutating func f() {
v.append(1)
onAppend?()
}
}
do {
var a = A()
a.onAppend = { a.v.append(2) }
a.f()
print("willSetなし", a.v) // [1, 2]
}
do {
var a = A() {willSet{}}
a.onAppend = { a.v.append(2) }
a.f()
print("willSetあり", a.v) // [1]
}

willSetなし [1, 2]
willSetあり [1]

735:デフォルトの名無しさん
17/05/28 00:12:22.92 Kbiso++70.net
willSet/didSetの挙動が怪しすぎるな
バグなのかもな

736:デフォルトの名無しさん
17/05/28 08:47:45.67 tTxkySJm0.net
>>712
いや挙動的には予想通りだよ
didSetはともかく、willSetの方は呼ばれたコード内では「変更前のオリジナル変数」と「変更後のnewValue」が用意されてるから別の実体作って変更してる
想像だけどinout引数を持つ関数側はバイナリコードレベルでは常に参照で受取るようになっていて
willSetがある変数でmutating funcやinout渡しをすると、呼ぶ側が一時変数作ってそれを渡すコードを生成してると思う

var a = A() { willSet{ } }
a.f() //mutating func f()
   ↓
var a = A()
func a_willSet(_ newValue:A) { }
do {
var tmp = a
tmp.f()
a_willSet(tmp)
a = tmp
}

inoutの場合は a.f()とtmp.f() が f(&a)とf(&tmp)になるイメージ

737:デフォルトの名無しさん
17/05/28 09:31:38.11 o7LOyvX/0.net
この挙動を理解してなければ、structにwillSet/didSetを実装してパフォーマンスに意図しない影響を与える可能性があるな

738:デフォルトの名無しさん
17/05/28 11:21:48.67 6qJqAaY90.net
>>697
ないっしょ…
なぜSwiftとかいう自己満発展途上言語なんか使ってるかって言ったらApple様ご指定だからってだけだし

739:デフォルトの名無しさん
17/05/28 11:31:20.31 z3zgF0Nw0.net
mutatingはselfをinoutで渡す
a.f() // これは
A.f(&a)() // これと同じ
なので一般のinout引数と同様にmutatingメソッド内のselfもセマンティクス的にはcopy-in copy-out

ただmutatingが暗黙にselfをinoutで渡すって説明はリファレンスには見つけられなかった
リポジトリのdocsに放り込まれてる文書群ではしばしば言及されてるけど

740:デフォルトの名無しさん
17/05/28 12:29:40.83 o7LOyvX/0.net
気軽にプロパティ変えたつもりの1行で、コピーが3回も(うち2回は配列全体のコピー)発生するのね
structのwillSetは曲者だな

struct Weapon {
var name: String {
willSet { print("new wepon name = ¥(newValue)") }
}
}

struct Monster {
var name: String
var weapons: [Weapon] {
willSet { print("new weapons = ¥(newValue)") }
}
}

var monsters = [
Monster(name: "Goblin", weapons: [Weapon(name: "Knife")]),
Monster(name: "Orc", weapons: [Weapon(name: "Sword")]),
Monster(name: "Dragon", weapons: [])
] {
willSet { print("new monsters = ¥(newValue)") }
}


monsters[1].weapons[0].name = "Mace"
// output
/*
new weapon name = mace
new weapons = [Weapon(name: "Mace"]
new monsters = [Monster(name: "Goblin", weapons: [Weapon(name: "Knife")]), Monster(name: "Orc", weapons: [Weapon(name: "Mace")]), Monster(name: "Dragon", weapons: [])]
*/

741:デフォルトの名無しさん
17/05/28 12:30:23.95 o7LOyvX/0.net
クラスで実装すれば、wellSetあってもコピーはプロバティに対しての一回だけ
class Weapon {
var name: String {
willSet { print("new wepon name = ¥(newValue)") }
}
init(name: String) {
self.name = name
}
}
class Monster {
var name: String
var weapons: [Weapon] {
willSet { print("new weapons = ¥(newValue)") }
}
init(name: String, weapons: [Weapon]) {
self.name = name
self.weapons = weapons
}
}
var monsters = [
Monster(name: "Goblin", weapons: [Weapon(name: "Knife")]),
Monster(name: "Orc", weapons: [Weapon(name: "Sword")]),
Monster(name: "Dragon", weapons: [])
] {
willSet { print("new monsters = ¥(newValue)") }
}

monsters[1].weapons[0].name = "Mace"
// output
/*
new wepon name = Mace
*/

742:デフォルトの名無しさん
17/05/28 12:35:53.43 eqNgb5P3p.net
Swift初期にJavaScriptに似てるからWeb屋が参入してくるとか言ってた人もいたけど全然違うしSwiftはObjective-Cより仕様が複雑になってきたね
でもおかしなコードはコンパイラがビシバシ教えてくれるし仕様を詳しく知らなくてもとりあえずコードを書く事はできるかな?

743:デフォルトの名無しさん
17/05/28 22:04:52.22 ls5tm5z70.net
Swiftけっこう難しい
Objective-Cは形式張っていてコードがやたらと長くなるだけで実はそんなに難しくない

744:デフォルトの名無しさん
17/05/28 22:35:10.01 7/a46AkG0.net
>>720
俺もSwift難しい。
structにprotocol適用したり、protocol extensionとか。

745:デフォルトの名無しさん
17/05/28 22:44:58.49 ew7wH7J40.net
詰め込みすぎて開発者のスキルでコードが変わりすぎるのが難点

746:デフォルトの名無しさん
17/05/28 22:57:25.17 Y/jTFKWEd.net
>>720
C知ってればハードル高くないからなObjCは

747:デフォルトの名無しさん
17/05/28 23:22:08.09 o7LOyvX/0.net
そのCがハードル高いからな初心者には

748:デフォルトの名無しさん
17/05/28 23:28:56.75 6qJqAaY90.net
SwiftとCのどっちがハードル高いかって言ったらCとは言えないけどな
Cのシンタックスをベースにしてる言語は多いから、初学者にSwiftとC
どっちをやった方がいいかって言われたら間違いなくCだわ

749:デフォルトの名無しさん
17/05/28 23:30:24.66 o7LOyvX/0.net
初心者にポインターは結構ハードル高いと思うけど
あとメモリ管理にシビアな所とか

750:デフォルトの名無しさん
17/05/29 00:25:02.54 lFCv8yRy0.net
Cもわからんようなもやしエンジニアが増えると思うと先が思いやられる
ソフト屋もハードウェアに近いプリミティブな部分の理解は必要なんだけとな
そういう意味でCは高級アセンブラ的なバランスがちょうどいい

751:デフォルトの名無しさん
17/05/29 00:38:37.93 21264BYsa.net
>>726
ポインタが難しいって言ったって、結局ポインタ的なメモリの知識はあった方がデバッグでメモリ周り疑う疑わないに直結するしなぁ。。。

752:デフォルトの名無しさん
17/05/29 00:47:58.23 3RO08/qX0.net
でも今は簡単なゲーム作りたいとかなら特にポインタの知識なくても作れちゃうからなぁ
初心者にC言語でゲーム作ってだと難しいと思うけど、Swiftなら割と簡単
モグラたたきとかジャンケンゲーム程度なら初心者でも2,3日で作れるかも

753:デフォルトの名無しさん
17/05/29 00:57:45.02 21264BYsa.net
誰もポインタないと作れないなんて言ってない。
ポインタの知識はトラブった時にトラブルの原因の候補にメモリが上がるか?どう状態かを推測出来るか?ってのに直結する。
ポインタと言うか、メモリの構造を知らなけりゃトラブルの原因として候補にす�


754:迴繧ェらない。 下手すれば永延と原因分からないまま、プログラムは未完に終わる。



755:デフォルトの名無しさん
17/05/29 01:03:25.64 3RO08/qX0.net
そんなこと言い出したら究極的にはコンパイラの癖とかハードの特性とかまで知らないとデバッグできないことになる
初心者にそこまで求めるのは余りにも遠い道のりになる

756:デフォルトの名無しさん
17/05/29 01:19:59.07 21264BYsa.net
そこまで言わんが、初心者と言えどもCPUとメモリの仕組みは理解してからプログラミングは始めて欲しいものだが。

体験して見たいだけなら兎も角、プログラマになりたいんならね。

757:デフォルトの名無しさん
17/05/29 06:40:45.44 DGY6L2yw0.net
kotlin nativeがllvm対応してるらしいのでiosでもkotlin使えそう。
となればswiftはもういいかな。

758:デフォルトの名無しさん
17/05/29 07:01:38.32 L9ed4gjcp.net
フフってなった
昔、SwiftもLLVMだからどこでも動くって言ってたなぁ

まぁKotlinは頑張ってポーティングしてるようだから
実用性はさておき動くんだろうけど

759:デフォルトの名無しさん
17/05/29 08:51:21.58 A7rCPaLD0.net
>>722
C言語のソースも、人によって全然違うけどなぁ。
とくに、Headerファイルのマクロ定義によってソースの印象がガラッと変わる。

760:デフォルトの名無しさん
17/05/29 09:10:28.76 96NrxdYRd.net
>>735
Cと比較したらCのがやりたい放題に決まってるだろ…
関数をアドレス指定で直接コールできる言語やぞ…
比較対象がおかしいわ

761:デフォルトの名無しさん
17/05/29 10:41:09.25 M6frmmyd0.net
ポインタとか分からんレベルの人にはやりたい放題出来ないがんじがらめの世界の方がいい気はする
柔軟性はObjective-Cで安全性はSwiftなイメージ

762:デフォルトの名無しさん
17/05/29 11:13:19.98 A7rCPaLD0.net
>>733
Kotlin/Nativeなんてのがあるのね!
知らんかった。JVM無しで動くコードが作れるのかな?

763:デフォルトの名無しさん
17/05/29 11:14:56.30 A7rCPaLD0.net
It is not a fully functional release yet,

Kotlin/Nativeがどの程度動くのか?気になる。

764:デフォルトの名無しさん
17/05/29 11:27:53.51 trx2RJe/F.net
>>729
ポインタ分からないって人は、参照型の値型の違いが理解出来なくないか?

765:デフォルトの名無しさん
17/05/29 12:04:20.43 3RO08/qX0.net
参照型と値型の違いがわからなくても使い方さえ理解できれば簡単なアプリは作れるからな
ある程度の最適化はコンパイラがやってくれるし、ハードの性能も上がってるから、多少の冗長性は無視できる
C言語だとそうはいかない
ポインタを知らないとまずまともなアプリはつくれない
外部のライブラリを利用する場合もポインタの知識は必須になる
ポインタの理解が参照型の理解の助けにはなるだろうけど厳密にはポインタと参照型は同じものでもないし

766:デフォルトの名無しさん
17/05/29 12:14:04.16 idSzy2HYd.net
それは、ポインタを知らなくても使い方さえ覚えれば簡単なアプリは作れる、っていっても同じじゃないか?

767:デフォルトの名無しさん
17/05/29 12:33:55.33 3RO08/qX0.net
ポインタの場合は概念を理解しないで使い方だけ覚えるってのはちと無理がある
Swiftの参照型は概念をきっちり理解できなくても、大概動くものは作れるし、変なことやろうとしてもIDEやコンパイラが注意してくれる

768:デフォルトの名無しさん
17/05/29 13:11:45.84 96NrxdYRd.net
>>740
ポインタしらなくても挙動でわかるだろ

769:デフォルトの名無しさん
17/05/29 13:27:25.51 idSzy2HYd.net
>>744
じゃなくて、ポインタの概念を理解出来ない人は、参照という概念も理解出来ないって言う意味だけど
挙動で理解出来てるなら、それは理解出来る人だよ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch