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
探検
Swift part10 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 3b3c-eq+O)
2017/02/20(月) 10:00:13.40ID:ChbPWtRt0359デフォルトの名無しさん (ワッチョイ 5b54-axuq)
2017/04/17(月) 20:40:25.07ID:oD+wMWyY0360デフォルトの名無しさん (アウアウウー Saaf-vZSP)
2017/04/17(月) 20:46:01.79ID:lXU86btga ヒマなんですね
361デフォルトの名無しさん (エムゾネ FF3f-IVUN)
2017/04/17(月) 21:24:11.38ID:6RZC9xguF >>354
まあ、curry化ってそういうものだしね
まあ、curry化ってそういうものだしね
362デフォルトの名無しさん (アウアウウー Saaf-vZSP)
2017/04/17(月) 21:25:12.82ID:lXU86btga インド人もびっくりだよね
363デフォルトの名無しさん (ワッチョイ 4b3c-5IwN)
2017/04/17(月) 22:47:26.87ID:+gxNPbQK0364デフォルトの名無しさん (ワッチョイ 3b0f-n2Cn)
2017/04/17(月) 23:10:09.48ID:/M+7HM4c0 >>350
いいからさっさと++、--、for(;;)を復活させろ
いいからさっさと++、--、for(;;)を復活させろ
365デフォルトの名無しさん (ワッチョイ 3b0f-n2Cn)
2017/04/17(月) 23:10:51.44ID:/M+7HM4c0366デフォルトの名無しさん (ササクッテロラ Sp6f-+fOQ)
2017/04/18(火) 00:02:25.56ID:xQgWcwpBp >>355は4で破壊変更あることを今更知ったnewbieじゃないかな
破壊しないswiftなんてswiftじゃないと思って使ってるけど、3で安定したと思っちゃった子はそこそこいそう
破壊しないswiftなんてswiftじゃないと思って使ってるけど、3で安定したと思っちゃった子はそこそこいそう
367デフォルトの名無しさん (ワッチョイ 3b0f-bNqD)
2017/04/18(火) 00:31:05.68ID:nxzSbT3m0 >>355
こんなぶれぶれの独善言語についてってる奴の気が知れんわ
こんなぶれぶれの独善言語についてってる奴の気が知れんわ
368デフォルトの名無しさん (アウアウウー Saaf-vZSP)
2017/04/18(火) 00:36:29.63ID:84Yej/faa そんな言語のスレをヲチしてるお前もなー
369デフォルトの名無しさん (ワッチョイ fbf9-kKgC)
2017/04/18(火) 10:13:46.23ID:GdlQD+8N0 型表記中の「->」は右結合ってことでいいんだよね?
370デフォルトの名無しさん (ワッチョイ 1ff3-vZSP)
2017/04/18(火) 12:14:40.44ID:Q87oUFLG0 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/swift/grammar/function-type
If a function type includes more than a single arrow (->), the function types are grouped from right to left.
For example, the function type (Int) -> (Int) -> Int is understood as (Int) -> ((Int) -> Int)
―that is, a function that takes an Int and returns another function that takes and returns an Int.
引数は必ず()で囲まないといけないから、もし ((Int) -> (Int)) -> Int なら前半の()が必須
そういう意味でも (Int) -> ((Int) -> Int) としか解釈できない
If a function type includes more than a single arrow (->), the function types are grouped from right to left.
For example, the function type (Int) -> (Int) -> Int is understood as (Int) -> ((Int) -> Int)
―that is, a function that takes an Int and returns another function that takes and returns an Int.
引数は必ず()で囲まないといけないから、もし ((Int) -> (Int)) -> Int なら前半の()が必須
そういう意味でも (Int) -> ((Int) -> Int) としか解釈できない
371デフォルトの名無しさん (ワッチョイ 5bf3-CJGP)
2017/04/18(火) 12:45:37.54ID:3Ay0w4VK0 >>370
THX
原則は、
1. 引数は()で囲む。囲まないと、error: require parentheses
2. 右から左方向へグループ化
例:
(S) -> (T) -> (U)
は
(S) -> ((T) -> (U))
と解釈される。
THX
原則は、
1. 引数は()で囲む。囲まないと、error: require parentheses
2. 右から左方向へグループ化
例:
(S) -> (T) -> (U)
は
(S) -> ((T) -> (U))
と解釈される。
372デフォルトの名無しさん (ワッチョイ 5bf3-CJGP)
2017/04/18(火) 12:47:38.45ID:3Ay0w4VK0 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 {
以下略
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 {
以下略
373デフォルトの名無しさん (ササクッテロラ Sp6f-+fOQ)
2017/04/18(火) 13:01:42.04ID:XspPM/3op 右から左方向が優先度高いのか
左から右に流してるイメージで逆方向のがしっくりくるが
関数型の思想としてそういうものだっけかな
左から右に流してるイメージで逆方向のがしっくりくるが
関数型の思想としてそういうものだっけかな
374デフォルトの名無しさん (アウアウウー Saaf-vZSP)
2017/04/18(火) 13:28:19.45ID:AUE9Rrcca 俺は若干右曲がり
375デフォルトの名無しさん (スプッッ Sd3f-bNqD)
2017/04/18(火) 20:55:52.53ID:L5MP9LYsd 可読性の高いSwift()
376デフォルトの名無しさん (ワッチョイ 1f3c-xLT8)
2017/04/18(火) 21:25:36.15ID:dlRGmA3w0377デフォルトの名無しさん (ササクッテロロ Sp6f-vZSP)
2017/04/18(火) 22:03:34.33ID:Cbc6ZCQLp Ojb-C使ってても毎年のようにAPIレベルでDeprecatedが量産されるから
Obj-Cなら変更コストが低いってわけでもない
Obj-Cなら変更コストが低いってわけでもない
378デフォルトの名無しさん (スプッッ Sd3f-IVUN)
2017/04/19(水) 10:54:38.73ID:aMVSfr6md379デフォルトの名無しさん (ワッチョイ 5bf3-CJGP)
2017/04/19(水) 11:22:12.10ID:2o4P71X40 >>378
let fn1: ((Int, Int)) -> Void = { x in
print(x.0 + x.1)
}
fn1((1,2)) // => 3
//fn1(1,2) // error: extra argument、引数が多すぎ!
let fn1: ((Int, Int)) -> Void = { x in
print(x.0 + x.1)
}
fn1((1,2)) // => 3
//fn1(1,2) // error: extra argument、引数が多すぎ!
380デフォルトの名無しさん (スプッッ Sd3f-IVUN)
2017/04/19(水) 12:18:48.30ID:aMVSfr6md >>379
ということは、元々括弧を省略した書き方をしなければ問題ないわけね
ということは、元々括弧を省略した書き方をしなければ問題ないわけね
381デフォルトの名無しさん (スプッッ Sd3f-bNqD)
2017/04/19(水) 20:19:15.30ID:Vhy+qJiMd Swiftの関数の書き方に近いシンタックスの言語ってある?
382デフォルトの名無しさん (ワッチョイ 1ff3-vZSP)
2017/04/19(水) 22:12:07.64ID:RnslI5DB0 たくさんある
383デフォルトの名無しさん (アウアウエー Sa82-p2Ky)
2017/04/20(木) 14:01:17.17ID:sKYAHXfOa たくさんあるかは分からんけど、Rustは比較的似てる気がする
Go とか Kotlin辺りもちょっと似てるかな
Go とか Kotlin辺りもちょっと似てるかな
384デフォルトの名無しさん (ササクッテロラ Sp23-G776)
2017/04/20(木) 14:07:23.48ID:Vb04xDKlp Java8も近い気がする
385デフォルトの名無しさん (ワッチョイ 4af3-p2Ky)
2017/04/20(木) 17:04:27.86ID:VpJy20l50 String再実装の第一弾と複数行文字列リテラルがレビュー通った
386デフォルトの名無しさん (ワッチョイ bff3-QkHB)
2017/04/21(金) 08:24:24.47ID:ZBCs1arm0387デフォルトの名無しさん (ワッチョイ 4af3-p2Ky)
2017/04/21(金) 12:37:01.73ID:PVM41qEx0 let json = """
{
"lang": "Swift"
}
""""
json == "{¥n ¥"lang¥": ¥"Swift¥"¥n}"
閉じ"""の行と同じインデントが自動的に削除される(行頭が閉じ"""に揃う)
便利
{
"lang": "Swift"
}
""""
json == "{¥n ¥"lang¥": ¥"Swift¥"¥n}"
閉じ"""の行と同じインデントが自動的に削除される(行頭が閉じ"""に揃う)
便利
388デフォルトの名無しさん (ササクッテロラ Sp23-p2Ky)
2017/04/21(金) 12:49:25.47ID:z0f2AZORp 発展途上の言語はどんどん便利になるからいいね
389デフォルトの名無しさん (ワッチョイ 7f54-ddVw)
2017/04/22(土) 08:43:07.39ID:kAxmCg/50 >>387
詳しく!
詳しく!
390デフォルトの名無しさん (ワッチョイ de92-UbXF)
2017/04/22(土) 15:30:44.86ID:z7G2zYcp0 こんなものが今頃入るとか発展途上すぎるんだよ
391デフォルトの名無しさん (アウアウエー Sa82-p2Ky)
2017/04/22(土) 15:35:08.08ID:PgVA7Plza Javaにはないけどな
Swiftのはインデントまで考慮されて洗練されてるし
Swiftのはインデントまで考慮されて洗練されてるし
392デフォルトの名無しさん (ワッチョイ de92-UbXF)
2017/04/22(土) 15:42:53.58ID:z7G2zYcp0 インデント考慮って逆に分かりづらくなるような気が。。。
Optionalもそうだと思うけどSwiftって一見便利そうに見えて却って面倒くさくなってる要素が多いと思う
Optionalもそうだと思うけどSwiftって一見便利そうに見えて却って面倒くさくなってる要素が多いと思う
393デフォルトの名無しさん (ワッチョイ 7f54-2dAw)
2017/04/22(土) 15:58:34.23ID:kAxmCg/50 >>392
あんまり、ルールが多くなると、C++みたく、不人気になるんだよねぇ。
あんまり、ルールが多くなると、C++みたく、不人気になるんだよねぇ。
394デフォルトの名無しさん (ササクッテロリ Sp23-G776)
2017/04/23(日) 12:04:02.69ID:OKIxwLfDp395デフォルトの名無しさん (ワッチョイ 8a3c-06LW)
2017/04/23(日) 13:12:37.68ID:PRvAU6qE0 >>393
今のSwiftも十分ルール多いと思うぞ
今のSwiftも十分ルール多いと思うぞ
396デフォルトの名無しさん (ワッチョイ 7f54-2dAw)
2017/04/23(日) 13:18:16.81ID:16+ithPZ0397デフォルトの名無しさん (ワッチョイ 7f54-2dAw)
2017/04/23(日) 13:20:20.98ID:16+ithPZ0 >>394
破壊的変更だけど、事前通告もあるし。。。will be depreridated. warningとか。
納得できる変更だし、改善方向に向かってるのでOK。
改悪とか、こんな機能、だれも使わんぜぇ。ってのが無いのでoK.
Windows 10の3D Paint Brush機能って必要か?
破壊的変更だけど、事前通告もあるし。。。will be depreridated. warningとか。
納得できる変更だし、改善方向に向かってるのでOK。
改悪とか、こんな機能、だれも使わんぜぇ。ってのが無いのでoK.
Windows 10の3D Paint Brush機能って必要か?
398デフォルトの名無しさん (ワッチョイ 270f-SXGp)
2017/04/23(日) 13:52:00.91ID:HtOZeUof0 Swiftって読みにくすぎ
ObjC 3.0でいいわまじで
政治的に生まれた言語はどこかで無理が生じる
ObjC 3.0でいいわまじで
政治的に生まれた言語はどこかで無理が生じる
399デフォルトの名無しさん (ワッチョイ 533c-p2Ky)
2017/04/23(日) 22:20:07.29ID:d5pkzuTb0 ObjCの方が読みづらいわ
読みづらいというより書きづらい…かな
読みづらいというより書きづらい…かな
400デフォルトの名無しさん (スプッッ Sd4a-mqxQ)
2017/04/24(月) 09:18:14.98ID:OVGIDxevd >>399
禿同
禿同
401デフォルトの名無しさん (ワッチョイ bff3-QkHB)
2017/04/24(月) 09:47:25.07ID:Et0GUfRD0 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!
Swift2.x -> 3.xへの破壊的変更をObj-Cへも適用して欲しい。
たくさんあるinitializerをinit(xxx:)にまとめるとか、Foundation, AppKitにあるClassのメソッド名を洗練させるとか。
Foundation, AppKitって1980年代の設計のままだから、あの長いメソッド名を
ちょっとだけ短くするだけで、まだまだObj-Cは延命できそうな気がする。
Swift3.x見たく、メソッド名の短縮化をObj-Cへcome on!
402デフォルトの名無しさん (スプッッ Sd4a-skpP)
2017/04/24(月) 09:52:31.43ID:mLc1nANzd >>401
解ってないなあ。
解ってないなあ。
403デフォルトの名無しさん (ワッチョイ bff3-QkHB)
2017/04/24(月) 10:00:22.08ID:Et0GUfRD0 >>402
詳しく!
詳しく!
404デフォルトの名無しさん (ワッチョイ bff3-QkHB)
2017/04/24(月) 10:02:56.87ID:Et0GUfRD0 Obj-C開発コミュニティーは崩壊しており、いまさらObj-Cのupgradeは難しいって事でしょうか?
だから、Swiftの開発が始まったって事でしょうか?
Obj-Cってコンパイル早くていい感じ何ですけど。Xcodeもサクサク動くし。
SwiftのせいでMacbook Pro15買わなくなっちゃいましたヨォ。俺は!
だから、Swiftの開発が始まったって事でしょうか?
Obj-Cってコンパイル早くていい感じ何ですけど。Xcodeもサクサク動くし。
SwiftのせいでMacbook Pro15買わなくなっちゃいましたヨォ。俺は!
405デフォルトの名無しさん (スプッッ Sd4a-mqxQ)
2017/04/24(月) 10:15:52.44ID:PIzQilqTd 買ったのならもういいじゃん
406デフォルトの名無しさん (スプッッ Sd4a-skpP)
2017/04/24(月) 11:07:05.55ID:mLc1nANzd407デフォルトの名無しさん (スプッッ Sd4a-a9+m)
2017/04/24(月) 12:02:48.74ID:SvpXvUmYd >>399
書くのがめんどくさいってのはある
書くのがめんどくさいってのはある
408デフォルトの名無しさん (スップ Sd4a-SXGp)
2017/04/24(月) 21:16:37.16ID:P6Dtc6ePd 単純に文の長さが短いだけで読みにくいのは高級言語としては微妙だな
409デフォルトの名無しさん (ワッチョイ 8ad4-a9+m)
2017/04/24(月) 22:06:57.16ID:hcHY62kZ0 「!」は最初見たときは分かりづらいと思ったが、慣れると危険な部分が分かりやすくて良いなと思ってる
410デフォルトの名無しさん (アウアウエー Sa82-p2Ky)
2017/04/24(月) 22:16:59.71ID:o8gY9V3aa !?
411デフォルトの名無しさん (ワッチョイ bb1f-vPNP)
2017/04/25(火) 08:29:23.45ID:O6rTDgi/0 プログラミング初心者なんですが、 delegateの概念がよく分かりません。
プロトコルは実装しないといけないメソッドとかをまとめるもの?という認識ですが。
開発チュートリアルやってると、なんの説明も無しにいきなりdelegateは何とかを他のクラスに委任できるなんちゃらとか、
説明が意味不明過ぎて詰みました
だれかわかりやすく説明できる方いますか?
わかりやすいサイトでもいいです
英語サイトやYouTubeでもいいです
プロトコルは実装しないといけないメソッドとかをまとめるもの?という認識ですが。
開発チュートリアルやってると、なんの説明も無しにいきなりdelegateは何とかを他のクラスに委任できるなんちゃらとか、
説明が意味不明過ぎて詰みました
だれかわかりやすく説明できる方いますか?
わかりやすいサイトでもいいです
英語サイトやYouTubeでもいいです
412デフォルトの名無しさん (スプッッ Sd33-a9+m)
2017/04/25(火) 08:33:44.54ID:DixYtrACd >>411
スレチ
スレチ
413デフォルトの名無しさん (ワッチョイ bff3-QkHB)
2017/04/25(火) 08:43:07.85ID:uqhlwSBc0 >>411
スレチ、とかってのは無視してOKっすからね。
あとdelegateパターン、delegateメソッド、delegate変数って言葉を使える様に
ならないとね。
delegateの概念ってのは、「クラスに委任」とかっていうのは単なる辞書を引いた
だけの説明なのでこれも無視です。
delegateパターンってのは2つのクラス、1つのプロトコルを使ったパターンです。
あまりにも、当たり前に使われるので、説明無しにdelegateパターンって出てきます。
この記事が参考になるんちゃいまっしゃろか?
UIKit類似Frameworkを自作してみる
http://qiita.com/externvoid@github/items/c70ce09aea758a548b22
スレチ、とかってのは無視してOKっすからね。
あとdelegateパターン、delegateメソッド、delegate変数って言葉を使える様に
ならないとね。
delegateの概念ってのは、「クラスに委任」とかっていうのは単なる辞書を引いた
だけの説明なのでこれも無視です。
delegateパターンってのは2つのクラス、1つのプロトコルを使ったパターンです。
あまりにも、当たり前に使われるので、説明無しにdelegateパターンって出てきます。
この記事が参考になるんちゃいまっしゃろか?
UIKit類似Frameworkを自作してみる
http://qiita.com/externvoid@github/items/c70ce09aea758a548b22
414デフォルトの名無しさん (アウアウカー Saeb-Xafy)
2017/04/25(火) 09:52:21.41ID:o+aECIKxa デリゲートってのはなぁ・・おっと、後は>>145頼む
415デフォルトの名無しさん (アウアウカー Saeb-Xafy)
2017/04/25(火) 09:58:28.39ID:o+aECIKxa あぁ、デリゲート先間違えた。>>416頼む
416デフォルトの名無しさん (スプッッ Sd33-a9+m)
2017/04/25(火) 10:39:09.75ID:DixYtrACd >>413
スレチはスレチ
swiftに関係ないし初心者質問スレでもないので質問者の想定レベルが不明
しかも>>413はdelegateの説明をしていない
あと紹介するなら、こっちじゃないの?
http://qiita.com/mochizukikotaro/items/a5bc60d92aa2d6fe52ca
iOSに限定したdelegateへの質問なら、こっちの方が答えがあると思う
[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad]
http://egg.2ch.net/test/read.cgi/mac/1484217623/
スレチはスレチ
swiftに関係ないし初心者質問スレでもないので質問者の想定レベルが不明
しかも>>413はdelegateの説明をしていない
あと紹介するなら、こっちじゃないの?
http://qiita.com/mochizukikotaro/items/a5bc60d92aa2d6fe52ca
iOSに限定したdelegateへの質問なら、こっちの方が答えがあると思う
[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad]
http://egg.2ch.net/test/read.cgi/mac/1484217623/
417デフォルトの名無しさん (ワッチョイ 4af3-p2Ky)
2017/04/25(火) 10:58:46.24ID:3wBLGJN/0 片側Rangeが通った
a[..<i] とか a[...i] とか a[i...] ってデフォで書ける
a[..<i] とか a[...i] とか a[i...] ってデフォで書ける
418デフォルトの名無しさん (ササクッテロラ Sp23-G776)
2017/04/25(火) 11:06:07.97ID:3fSgT78Np 今までデフォじゃなければ書けたの?
ユーザが拡張可能なコンパイラプラグインIFってswiftにあったっけかな
ユーザが拡張可能なコンパイラプラグインIFってswiftにあったっけかな
419デフォルトの名無しさん (スプッッ Sd33-a9+m)
2017/04/25(火) 11:23:22.00ID:DixYtrACd a.prefix(i) // a[..<i]
a.dropFirst(i) // a[i..]
と、手で書き換えるとか?
a.dropFirst(i) // a[i..]
と、手で書き換えるとか?
420デフォルトの名無しさん (スップ Sdaa-skpP)
2017/04/25(火) 12:09:00.58ID:uC0QdnUhd421デフォルトの名無しさん (ワッチョイ 4af3-p2Ky)
2017/04/25(火) 12:18:09.30ID:3wBLGJN/0 prefix operator ..<
prefix operator ...
postfix operator ...
を定義するだけ
SE-172のDetailed design真似して3.1で書いてみた
http://swift.sandbox.bluemix.net/#/repl/58febd1c8ef5d90dc580fb9b
まだSE-148のジェネリックなsubscriptがないから、ちょっとコードの重複ができてしまった
prefix operator ...
postfix operator ...
を定義するだけ
SE-172のDetailed design真似して3.1で書いてみた
http://swift.sandbox.bluemix.net/#/repl/58febd1c8ef5d90dc580fb9b
まだSE-148のジェネリックなsubscriptがないから、ちょっとコードの重複ができてしまった
422デフォルトの名無しさん (ワッチョイ bff3-QkHB)
2017/04/25(火) 12:45:51.70ID:uqhlwSBc0423デフォルトの名無しさん (ササクッテロラ Sp23-G776)
2017/04/25(火) 13:29:21.36ID:3fSgT78Np424デフォルトの名無しさん (ワッチョイ 4a3c-TbnN)
2017/04/25(火) 18:50:45.06ID:8UEDmHts0 >>411
https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html
http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/delegation.html#Structure
https://code.tutsplus.com/articles/design-patterns-delegation--cms-23901
Delegateはデリゲーションパターンにおいて処理を委譲されるクラスの役割名
「委譲する」という意味の動詞としても使われる
プロトコルは他言語で言うインターフェース
DelegationはCocoaでフレームワークから開発者の書いたコードを呼び出す場合によく使われるパターン
例えばTableViewの行を選択した時に何か独自の動作を行いたいなら
UITableViewDelegateに定義されている特定のメソッドを実装してDelegateとして設定しておくと
ユーザーが行を選択した時にDelegateとして設定したクラスの該当メソッドが呼び出されて開発者が書いたコードが実行される
UITableViewDelegateがプロトコルでそのプロトコルを実装したクラスがDelegate
プロトコルとの関係がわかりにくければUITableViewDelegateProtocolという名前を省略してると考えてるといいかも
https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html
http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/delegation.html#Structure
https://code.tutsplus.com/articles/design-patterns-delegation--cms-23901
Delegateはデリゲーションパターンにおいて処理を委譲されるクラスの役割名
「委譲する」という意味の動詞としても使われる
プロトコルは他言語で言うインターフェース
DelegationはCocoaでフレームワークから開発者の書いたコードを呼び出す場合によく使われるパターン
例えばTableViewの行を選択した時に何か独自の動作を行いたいなら
UITableViewDelegateに定義されている特定のメソッドを実装してDelegateとして設定しておくと
ユーザーが行を選択した時にDelegateとして設定したクラスの該当メソッドが呼び出されて開発者が書いたコードが実行される
UITableViewDelegateがプロトコルでそのプロトコルを実装したクラスがDelegate
プロトコルとの関係がわかりにくければUITableViewDelegateProtocolという名前を省略してると考えてるといいかも
425デフォルトの名無しさん (スップ Sdaa-skpP)
2017/04/25(火) 20:11:15.65ID:uC0QdnUhd でもAppleはblockを奨めているから
今時delegateじゃないよね
まあ知っておいた方が良いかな程度?
今時delegateじゃないよね
まあ知っておいた方が良いかな程度?
426デフォルトの名無しさん (ワッチョイ 4a3c-TbnN)
2017/04/25(火) 20:23:32.46ID:8UEDmHts0 blockと何の関係があるの?
427デフォルトの名無しさん (ワッチョイ 7f54-2dAw)
2017/04/25(火) 20:30:05.59ID:wOaxuRz+0 >>424
thx
2番目のURL記載のMultiple Inheritanceを避けて
Single Inheritance with Delegationってのが判りやすっすね。
CにはAの機能とBの機能が欲しい。じゃぁ、CはA, B2つのクラスを継承させれば良いか?というとそうでは無い。
CはAを継承しつつ、Bをメンバに持てば良い。
thx
2番目のURL記載のMultiple Inheritanceを避けて
Single Inheritance with Delegationってのが判りやすっすね。
CにはAの機能とBの機能が欲しい。じゃぁ、CはA, B2つのクラスを継承させれば良いか?というとそうでは無い。
CはAを継承しつつ、Bをメンバに持てば良い。
428デフォルトの名無しさん (ワッチョイ 7f54-2dAw)
2017/04/25(火) 20:59:50.91ID:wOaxuRz+0 is-a関係、part-of関係がはっきり決まるオブジェクト間の関係ばかりでは無い。
例:
- 正常運転 is-a 運転、復旧運転 is-a 運転
- 正常運転 part-of 運転、復旧運転 part-of 運転
同じ概念間にis-a関係、part-of関係の両方が同時に成立する事は
ありえず、どこか間違っている。
is-a関係:Interitance
part-of関係:delegateパターン
両者を上手く使い分けるのが吉!
例:
- 正常運転 is-a 運転、復旧運転 is-a 運転
- 正常運転 part-of 運転、復旧運転 part-of 運転
同じ概念間にis-a関係、part-of関係の両方が同時に成立する事は
ありえず、どこか間違っている。
is-a関係:Interitance
part-of関係:delegateパターン
両者を上手く使い分けるのが吉!
429デフォルトの名無しさん (ワッチョイ 270f-SXGp)
2017/04/26(水) 01:11:59.43ID:zySdwBLY0 inheritanceかな
430デフォルトの名無しさん (ササクッテロラ Sp23-G776)
2017/04/26(水) 08:47:49.85ID:0yNg6j//p >>426
スレチだけどURLConnection(非推奨)とURLSession(推奨)見比べろ
スレチだけどURLConnection(非推奨)とURLSession(推奨)見比べろ
431デフォルトの名無しさん (ワッチョイ 6372-Xafy)
2017/04/26(水) 11:01:47.26ID:8tL6gyso0432デフォルトの名無しさん (ワッチョイ ab05-MGa5)
2017/04/26(水) 11:05:31.83ID:GvwT/G3X0 数で比較するんじゃなくて、どっちをユーザに使わせようとしてるかを比較するんだよ?
UIAlertController(推奨)とUIAlertView(非推奨)みたいなのもあるな
UIAlertController(推奨)とUIAlertView(非推奨)みたいなのもあるな
433デフォルトの名無しさん (ワッチョイ 6372-Xafy)
2017/04/26(水) 11:25:04.64ID:8tL6gyso0 すまん、数を持ち出したのは間違いだったが物事を単純に考えてる奴には目で見て分かりやすいと思ったので
新しいAPIでもcompletionHandlerもあればdelegateもあるし適材適所って事
新しいAPIでもcompletionHandlerもあればdelegateもあるし適材適所って事
434デフォルトの名無しさん (ワッチョイ ab05-MGa5)
2017/04/26(水) 11:38:07.27ID:GvwT/G3X0 適材適所であることに異論はないが、今までdelegateだったものがblockに移行してる事実はあるよね
>>426の「何の関係があるの?」の疑問は解決したかな
同じようにObjCだったものがSwiftに移行・・・はして失敗してるんだよなぁ
Swiftに移行したけど破壊変更が頻繁でメンテナンス性が悪いからObjCに差し戻そうって意見が割とガチで出て辛い
>>426の「何の関係があるの?」の疑問は解決したかな
同じようにObjCだったものがSwiftに移行・・・はして失敗してるんだよなぁ
Swiftに移行したけど破壊変更が頻繁でメンテナンス性が悪いからObjCに差し戻そうって意見が割とガチで出て辛い
435デフォルトの名無しさん (ワッチョイ 4a3c-TbnN)
2017/04/26(水) 14:54:49.58ID:rNMObgtm0 >>430
なるほど>>425が言いたいことは理解したわ
Delegateをコールバックを実現する仕組みの一つとして捉えると
わざわざDelegateを定義しなくてもcompletionHandlerみたいなblockパラメータって十分ってことかな
シンプルなケースはそれでいいけど少し複雑になるとDelegate使ったほうが良いケースもあるし使い分けだよね
自分で新しく作るんじゃなくUITableViewDelegateみたいなフレームワークで用意されたプロトコルを使う場合は
コールバックを実現する仕組みというより事前に用意された拡張ポイントを使う方法として捉えてる
その場合サブクラス化、デリゲート、イベントなんかは同じグループとして捉えてるけどBlockは抽象度違うからグループの外だね
なるほど>>425が言いたいことは理解したわ
Delegateをコールバックを実現する仕組みの一つとして捉えると
わざわざDelegateを定義しなくてもcompletionHandlerみたいなblockパラメータって十分ってことかな
シンプルなケースはそれでいいけど少し複雑になるとDelegate使ったほうが良いケースもあるし使い分けだよね
自分で新しく作るんじゃなくUITableViewDelegateみたいなフレームワークで用意されたプロトコルを使う場合は
コールバックを実現する仕組みというより事前に用意された拡張ポイントを使う方法として捉えてる
その場合サブクラス化、デリゲート、イベントなんかは同じグループとして捉えてるけどBlockは抽象度違うからグループの外だね
436デフォルトの名無しさん (ワッチョイ bff3-QkHB)
2017/04/26(水) 15:04:57.22ID:3mj2KO3W0 SwiftのprotocolはJavaのinterfaceみたいなもんだと説明されるけど、Javaでoptionalメソッドを定義できるの?
437デフォルトの名無しさん (アウアウエー Sa82-p2Ky)
2017/04/26(水) 15:08:18.39ID:gZc0mpUPa >>436
スレチもいいとこ
スレチもいいとこ
438デフォルトの名無しさん (ワッチョイ 4a3c-TbnN)
2017/04/26(水) 15:17:06.14ID:rNMObgtm0 >>436
何もしないデフォルト実装を用意する
何もしないデフォルト実装を用意する
439デフォルトの名無しさん (ワッチョイ bff3-QkHB)
2017/04/26(水) 15:54:00.63ID:3mj2KO3W0 >>438
なるほどぉ。
なるほどぉ。
440デフォルトの名無しさん (スップ Sdaa-SXGp)
2017/04/26(水) 19:42:58.31ID:7DECPBe+d funcって書くのにメソッドなの??
441デフォルトの名無しさん (ワッチョイ 533c-p2Ky)
2017/04/26(水) 19:59:41.32ID:lYhaqZk40 そもそもfuncとmethodを分ける意味ってあんの?
会話で通じないとかなくね?
会話で通じないとかなくね?
442デフォルトの名無しさん (ササクッテロレ Sp23-p2Ky)
2017/04/26(水) 20:56:10.25ID:2ExUo8Ujp Fuck!!!
443デフォルトの名無しさん (スッップ Sdaa-skpP)
2017/04/26(水) 21:12:05.58ID:7OfAzagzd 関数の事をmethodって言う奴は「解ってないなあ」と思う。
あと、宣言と定義の使い分けできていない人も苦手だな。
あと、宣言と定義の使い分けできていない人も苦手だな。
444デフォルトの名無しさん (スップ Sd4a-mqxQ)
2017/04/26(水) 21:14:41.12ID:yg9vhXXld 伝わればなんでもいいよ
445デフォルトの名無しさん (ワッチョイ 533c-p2Ky)
2017/04/26(水) 21:15:15.06ID:lYhaqZk40 ヘッダーがなくなった時点で、宣言も定義もほぼ同義じゃねーの
446デフォルトの名無しさん (ワッチョイ 4af3-p2Ky)
2017/04/26(水) 21:43:02.76ID:ZkZBCOOl0 Swiftでは公式に用語がどう定義されてんだろうと思って探したら丁度ズバリ書いてた
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-ID351
In Swift, most 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」も使われたり混同されたりしてるようだけど
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-ID351
In Swift, most 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」も使われたり混同されたりしてるようだけど
447デフォルトの名無しさん (ワッチョイ 7f54-2dAw)
2017/04/26(水) 22:01:01.52ID:H5XmXuTS0 >>443
うっそーん?
instance method, type methodっていう言い方はするが、
instance function, type function(class function)なんて聞いたこと
ないぞぉ。
うっそーん?
instance method, type methodっていう言い方はするが、
instance function, type function(class function)なんて聞いたこと
ないぞぉ。
448デフォルトの名無しさん (ワッチョイ 5b05-yA3i)
2017/04/27(木) 02:46:48.47ID:v69LNgpd0449デフォルトの名無しさん (ワッチョイ 6b0f-T1v3)
2017/04/27(木) 08:03:13.29ID:T2cThVGm0 いやだからなんでfuncって書くのにメソッドやねん
だったらmethにでもしとけばええやん
だったらmethにでもしとけばええやん
450デフォルトの名無しさん (アウアウエー Sa7f-L4LY)
2017/04/27(木) 08:35:20.62ID:7p4DwLyja グローバルな関数とメソッドでfuncとmethを書き分けろっての?
ただの関数にmethとか使うのは抵抗あるわ
メソッドにfunc使うのは他の言語の例もあるので違和感ないけど
ただの関数にmethとか使うのは抵抗あるわ
メソッドにfunc使うのは他の言語の例もあるので違和感ないけど
451デフォルトの名無しさん (アウアウエー Sa7f-cD9Q)
2017/04/27(木) 09:04:29.23ID:N3r3uYtra そもそもメソッドというのはSmalltalkのコミュニティが使い始めた用語で
もともともはメッセージを受け取ったオブジェクトが目指すゴールを記述するための新しい言語要素を想定してたんだよね
だけど、けっきょくそのSmalltalkも-76以降はSimula67(ALGOLの拡張)スタイルの普通の関数に落ち着いたし
その後ブームとなったJavaもそのまま用語を採用した経緯もあって
メソッドと関数っていうのはインスタンスとオブジェクトみたいなもので区別はあまり意味をもたなくなっちゃっている
強いて言えば、クラスに属する(言語によってはプラスして暗黙のselfを受け取れる)関数をメソッドと呼ぶとかゆるいくくり
もともともはメッセージを受け取ったオブジェクトが目指すゴールを記述するための新しい言語要素を想定してたんだよね
だけど、けっきょくそのSmalltalkも-76以降はSimula67(ALGOLの拡張)スタイルの普通の関数に落ち着いたし
その後ブームとなったJavaもそのまま用語を採用した経緯もあって
メソッドと関数っていうのはインスタンスとオブジェクトみたいなもので区別はあまり意味をもたなくなっちゃっている
強いて言えば、クラスに属する(言語によってはプラスして暗黙のselfを受け取れる)関数をメソッドと呼ぶとかゆるいくくり
452デフォルトの名無しさん (エムゾネ FF7f-T1v3)
2017/04/27(木) 09:05:58.12ID:OI3ixlBfF funcyな言語やで
453デフォルトの名無しさん (ワッチョイ 0bf3-czGs)
2017/04/27(木) 10:36:56.84ID:OuTFIb+i0454デフォルトの名無しさん (アウアウエー Sa7f-cD9Q)
2017/04/27(木) 11:23:38.37ID:N3r3uYtra >>453
ああ、それはSmalltalkの(というかOOPの)メッセージングというコンセプトをよくわかっていない人がやりがちな間違いで
メッセージと、それを送ることでコールされるメソッド(関数)は別物
たとえばメッセージ(仮にmとしよう)を送ってもmとは関係ないメソッドがコールされることもあるし
極端な話、何もしないという選択肢(振る舞い)もありうる
もっとも多くの場合、メッセージ(厳密にはメッセージを構成するセレクタ)とメソッド名は一致させるのが普通なので
混同するのも無理からぬことだけれども
ああ、それはSmalltalkの(というかOOPの)メッセージングというコンセプトをよくわかっていない人がやりがちな間違いで
メッセージと、それを送ることでコールされるメソッド(関数)は別物
たとえばメッセージ(仮にmとしよう)を送ってもmとは関係ないメソッドがコールされることもあるし
極端な話、何もしないという選択肢(振る舞い)もありうる
もっとも多くの場合、メッセージ(厳密にはメッセージを構成するセレクタ)とメソッド名は一致させるのが普通なので
混同するのも無理からぬことだけれども
455デフォルトの名無しさん (アウアウエー Sa7f-L4LY)
2017/04/27(木) 11:49:48.89ID:7p4DwLyja Obj-Cの場合はメッセージ=メソッド的なとこあるけど、Smalltalkは違うんかね
456デフォルトの名無しさん (アウアウエー Sa7f-cD9Q)
2017/04/27(木) 12:55:56.69ID:N3r3uYtra >>455
んー、Obj-Cのコミュニティ(Appleの公式文書も含め)が勘違いを広めているってよくない傾向はあるけど
Obj-CもSmalltalkもメッセージングの根本の考え方は変わらない
そもそもObj-CはSmalltalkのやっていることをCのプリプロセッサでやろうとした試みからスタートしたので変えたら意味ないし
ちなみにそのときの文法はまだメッセージ式ではなかったから純粋にコンセプトだけをなぞろうとしたことがわかる
http://dl.acm.org/citation.cfm?id=948095 (残念ながら有償)
mySodaMachine = {| SodaMachine, "comb:model:", 23, 4 |};
んー、Obj-Cのコミュニティ(Appleの公式文書も含め)が勘違いを広めているってよくない傾向はあるけど
Obj-CもSmalltalkもメッセージングの根本の考え方は変わらない
そもそもObj-CはSmalltalkのやっていることをCのプリプロセッサでやろうとした試みからスタートしたので変えたら意味ないし
ちなみにそのときの文法はまだメッセージ式ではなかったから純粋にコンセプトだけをなぞろうとしたことがわかる
http://dl.acm.org/citation.cfm?id=948095 (残念ながら有償)
mySodaMachine = {| SodaMachine, "comb:model:", 23, 4 |};
457デフォルトの名無しさん (ワッチョイ 5f3c-0aF+)
2017/04/27(木) 14:07:08.57ID:Wv+Yc+Vq0 Methods are functions that are associated with a particular type
以上。
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html
以上。
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html
458デフォルトの名無しさん (ササクッテロラ Sp1f-eQq1)
2017/04/27(木) 14:47:27.97ID:52wV30cHp 以上って言っても、small talkやobjcについてスレチ上等で会話してる奴等には通じない、、、
大元の>>440だけ考えたら、コード上でfunc, methの書き分けなんて面倒っていう
コンパイラ側とコーダー側の双方メリットによるものだろうよ
大元の>>440だけ考えたら、コード上でfunc, methの書き分けなんて面倒っていう
コンパイラ側とコーダー側の双方メリットによるものだろうよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★3 [蚤の市★]
- 【ド軍】山本由伸、WBC出場を決断!ドジャースが本人の意向を尊重、佐々木朗希はチームが故障歴を懸念で不参加 [鉄チーズ烏★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 秋田内陸縦貫鉄道「列車が脱線、転覆」と通報 北秋田市、萱草駅付近 [蚤の市★]
- 本当は健康に悪いけど、腹筋割れてる女のエロさは異常
- 【画像】海外の寿司パーティー、レベチwwwwwwwwww [834922174]
- お前らってほんとに純正品?
- 中国人、超ド正論。「チベットやウイグルに住んでるのはチベット族やウイグル族だが、アイヌから奪った土地に住んでる日本人こそ侵略者」 [314039747]
- 喫煙しない鳥ってなーんだ?
- 玉木雄一郎「日本は労働時間が短すぎる!これが経済の足を引っ張っている。労働増・企業に投資減税・教育予算増、これで財政破綻回避 [256556981]
