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/04/18(火) 00:31:05.68ID:nxzSbT3m0
>>355
こんなぶれぶれの独善言語についてってる奴の気が知れんわ
2017/04/18(火) 00:36:29.63ID:84Yej/faa
そんな言語のスレをヲチしてるお前もなー
2017/04/18(火) 10:13:46.23ID:GdlQD+8N0
型表記中の「->」は右結合ってことでいいんだよね?
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) としか解釈できない
371デフォルトの名無しさん (ワッチョイ 5bf3-CJGP)
垢版 |
2017/04/18(火) 12:45:37.54ID:3Ay0w4VK0
>>370
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 {
以下略
2017/04/18(火) 13:01:42.04ID:XspPM/3op
右から左方向が優先度高いのか
左から右に流してるイメージで逆方向のがしっくりくるが
関数型の思想としてそういうものだっけかな
2017/04/18(火) 13:28:19.45ID:AUE9Rrcca
俺は若干右曲がり
2017/04/18(火) 20:55:52.53ID:L5MP9LYsd
可読性の高いSwift()
2017/04/18(火) 21:25:36.15ID:dlRGmA3w0
>>366
初期から使ってるけどSwiftにはいい加減枯れてくれって思ってる。
社内で必死こいてSwift移行推進した人たちは今肩身の狭い思いをしてるのでは。
2017/04/18(火) 22:03:34.33ID:Cbc6ZCQLp
Ojb-C使ってても毎年のようにAPIレベルでDeprecatedが量産されるから
Obj-Cなら変更コストが低いってわけでもない
378デフォルトの名無しさん (スプッッ Sd3f-IVUN)
垢版 |
2017/04/19(水) 10:54:38.73ID:aMVSfr6md
>>351
3.1で4の書き方でやったらどうなるか試そうと思ったけど、眠くて忘れてたわ
誰かどうなるか教えて
379デフォルトの名無しさん (ワッチョイ 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、引数が多すぎ!
380デフォルトの名無しさん (スプッッ Sd3f-IVUN)
垢版 |
2017/04/19(水) 12:18:48.30ID:aMVSfr6md
>>379
ということは、元々括弧を省略した書き方をしなければ問題ないわけね
2017/04/19(水) 20:19:15.30ID:Vhy+qJiMd
Swiftの関数の書き方に近いシンタックスの言語ってある?
2017/04/19(水) 22:12:07.64ID:RnslI5DB0
たくさんある
2017/04/20(木) 14:01:17.17ID:sKYAHXfOa
たくさんあるかは分からんけど、Rustは比較的似てる気がする
Go とか Kotlin辺りもちょっと似てるかな
2017/04/20(木) 14:07:23.48ID:Vb04xDKlp
Java8も近い気がする
2017/04/20(木) 17:04:27.86ID:VpJy20l50
String再実装の第一弾と複数行文字列リテラルがレビュー通った
386デフォルトの名無しさん (ワッチョイ bff3-QkHB)
垢版 |
2017/04/21(金) 08:24:24.47ID:ZBCs1arm0
>>385
RubyのHere Documentみたいなもんか?
json = <<'EOS'
{
"language": "Ruby"
}
EOS
2017/04/21(金) 12:37:01.73ID:PVM41qEx0
let json = """
    {
        "lang": "Swift"
    }
    """"
json == "{¥n    ¥"lang¥": ¥"Swift¥"¥n}"

閉じ"""の行と同じインデントが自動的に削除される(行頭が閉じ"""に揃う)
便利
2017/04/21(金) 12:49:25.47ID:z0f2AZORp
発展途上の言語はどんどん便利になるからいいね
389デフォルトの名無しさん (ワッチョイ 7f54-ddVw)
垢版 |
2017/04/22(土) 08:43:07.39ID:kAxmCg/50
>>387
詳しく!
2017/04/22(土) 15:30:44.86ID:z7G2zYcp0
こんなものが今頃入るとか発展途上すぎるんだよ
2017/04/22(土) 15:35:08.08ID:PgVA7Plza
Javaにはないけどな
Swiftのはインデントまで考慮されて洗練されてるし
2017/04/22(土) 15:42:53.58ID:z7G2zYcp0
インデント考慮って逆に分かりづらくなるような気が。。。
Optionalもそうだと思うけどSwiftって一見便利そうに見えて却って面倒くさくなってる要素が多いと思う
2017/04/22(土) 15:58:34.23ID:kAxmCg/50
>>392
あんまり、ルールが多くなると、C++みたく、不人気になるんだよねぇ。
2017/04/23(日) 12:04:02.69ID:OKIxwLfDp
>>390
1.0 stableだ、ヒャッハーって始めて、その後半年単位で破壊変更受けた絶望に比べたら別に、、、
発展途上どんと来い、商業採用しない前提でポストObjCの進化は愉快
2017/04/23(日) 13:12:37.68ID:PRvAU6qE0
>>393
今のSwiftも十分ルール多いと思うぞ
2017/04/23(日) 13:18:16.81ID:16+ithPZ0
>>395
同意
だから、Swift不人気になって、だれも使われなくなる。
ってストーリー展開が危険。
2017/04/23(日) 13:20:20.98ID:16+ithPZ0
>>394
破壊的変更だけど、事前通告もあるし。。。will be depreridated. warningとか。

納得できる変更だし、改善方向に向かってるのでOK。
改悪とか、こんな機能、だれも使わんぜぇ。ってのが無いのでoK.

Windows 10の3D Paint Brush機能って必要か?
2017/04/23(日) 13:52:00.91ID:HtOZeUof0
Swiftって読みにくすぎ
ObjC 3.0でいいわまじで
政治的に生まれた言語はどこかで無理が生じる
2017/04/23(日) 22:20:07.29ID:d5pkzuTb0
ObjCの方が読みづらいわ
読みづらいというより書きづらい…かな
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!
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買わなくなっちゃいましたヨォ。俺は!
2017/04/24(月) 10:15:52.44ID:PIzQilqTd
買ったのならもういいじゃん
406デフォルトの名無しさん (スプッッ Sd4a-skpP)
垢版 |
2017/04/24(月) 11:07:05.55ID:mLc1nANzd
>>403
Objective-Cの考え方は、ドキュメンテーションコード。
だから、名前を短くするのはナンセンス。
407デフォルトの名無しさん (スプッッ Sd4a-a9+m)
垢版 |
2017/04/24(月) 12:02:48.74ID:SvpXvUmYd
>>399
書くのがめんどくさいってのはある
2017/04/24(月) 21:16:37.16ID:P6Dtc6ePd
単純に文の長さが短いだけで読みにくいのは高級言語としては微妙だな
409デフォルトの名無しさん (ワッチョイ 8ad4-a9+m)
垢版 |
2017/04/24(月) 22:06:57.16ID:hcHY62kZ0
「!」は最初見たときは分かりづらいと思ったが、慣れると危険な部分が分かりやすくて良いなと思ってる
2017/04/24(月) 22:16:59.71ID:o8gY9V3aa
!?
2017/04/25(火) 08:29:23.45ID:O6rTDgi/0
プログラミング初心者なんですが、 delegateの概念がよく分かりません。

プロトコルは実装しないといけないメソッドとかをまとめるもの?という認識ですが。

開発チュートリアルやってると、なんの説明も無しにいきなり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
2017/04/25(火) 09:52:21.41ID:o+aECIKxa
デリゲートってのはなぁ・・おっと、後は>>145頼む
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/
2017/04/25(火) 10:58:46.24ID:3wBLGJN/0
片側Rangeが通った
a[..<i] とか a[...i] とか a[i...] ってデフォで書ける
2017/04/25(火) 11:06:07.97ID:3fSgT78Np
今までデフォじゃなければ書けたの?
ユーザが拡張可能なコンパイラプラグインIFってswiftにあったっけかな
419デフォルトの名無しさん (スプッッ Sd33-a9+m)
垢版 |
2017/04/25(火) 11:23:22.00ID:DixYtrACd
a.prefix(i) // a[..<i]
a.dropFirst(i) // a[i..]
と、手で書き換えるとか?
420デフォルトの名無しさん (スップ Sdaa-skpP)
垢版 |
2017/04/25(火) 12:09:00.58ID:uC0QdnUhd
>>417
gj!
nice「とか」!
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がないから、ちょっとコードの重複ができてしまった
422デフォルトの名無しさん (ワッチョイ bff3-QkHB)
垢版 |
2017/04/25(火) 12:45:51.70ID:uqhlwSBc0
>>421
動いた。
こんなのチャチャッっと書けるなんて、すごいねぇ。
2017/04/25(火) 13:29:21.36ID:3fSgT78Np
あー、オペレーションのオーバーロードか
オーバーロードしてまで使いたいとは思わないけどpythonの同類文法が使えるようになるのは幸せ

>>419-420
とか定期(俺が日本語不自由
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という名前を省略してると考えてるといいかも
425デフォルトの名無しさん (スップ Sdaa-skpP)
垢版 |
2017/04/25(火) 20:11:15.65ID:uC0QdnUhd
でもAppleはblockを奨めているから
今時delegateじゃないよね
まあ知っておいた方が良いかな程度?
2017/04/25(火) 20:23:32.46ID:8UEDmHts0
blockと何の関係があるの?
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をメンバに持てば良い。
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パターン
両者を上手く使い分けるのが吉!
2017/04/26(水) 01:11:59.43ID:zySdwBLY0
inheritanceかな
2017/04/26(水) 08:47:49.85ID:0yNg6j//p
>>426
スレチだけどURLConnection(非推奨)とURLSession(推奨)見比べろ
2017/04/26(水) 11:01:47.26ID:8tL6gyso0
>>425
>>430
クラスやメソッドの役割によるもので単にBlock推奨、delegateが古いという話ではない
NSURLSessionのヘッダ見りゃ分かるけどSessionとTaskの関連メソッドではdelegateでの定義の方が多い
2017/04/26(水) 11:05:31.83ID:GvwT/G3X0
数で比較するんじゃなくて、どっちをユーザに使わせようとしてるかを比較するんだよ?
UIAlertController(推奨)とUIAlertView(非推奨)みたいなのもあるな
2017/04/26(水) 11:25:04.64ID:8tL6gyso0
すまん、数を持ち出したのは間違いだったが物事を単純に考えてる奴には目で見て分かりやすいと思ったので
新しいAPIでもcompletionHandlerもあればdelegateもあるし適材適所って事
2017/04/26(水) 11:38:07.27ID:GvwT/G3X0
適材適所であることに異論はないが、今までdelegateだったものがblockに移行してる事実はあるよね
>>426の「何の関係があるの?」の疑問は解決したかな

同じようにObjCだったものがSwiftに移行・・・はして失敗してるんだよなぁ
Swiftに移行したけど破壊変更が頻繁でメンテナンス性が悪いからObjCに差し戻そうって意見が割とガチで出て辛い
2017/04/26(水) 14:54:49.58ID:rNMObgtm0
>>430
なるほど>>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メソッドを定義できるの?
2017/04/26(水) 15:08:18.39ID:gZc0mpUPa
>>436
スレチもいいとこ
2017/04/26(水) 15:17:06.14ID:rNMObgtm0
>>436
何もしないデフォルト実装を用意する
439デフォルトの名無しさん (ワッチョイ bff3-QkHB)
垢版 |
2017/04/26(水) 15:54:00.63ID:3mj2KO3W0
>>438
なるほどぉ。
2017/04/26(水) 19:42:58.31ID:7DECPBe+d
funcって書くのにメソッドなの??
2017/04/26(水) 19:59:41.32ID:lYhaqZk40
そもそもfuncとmethodを分ける意味ってあんの?
会話で通じないとかなくね?
2017/04/26(水) 20:56:10.25ID:2ExUo8Ujp
Fuck!!!
443デフォルトの名無しさん (スッップ Sdaa-skpP)
垢版 |
2017/04/26(水) 21:12:05.58ID:7OfAzagzd
関数の事をmethodって言う奴は「解ってないなあ」と思う。

あと、宣言と定義の使い分けできていない人も苦手だな。
2017/04/26(水) 21:14:41.12ID:yg9vhXXld
伝わればなんでもいいよ
2017/04/26(水) 21:15:15.06ID:lYhaqZk40
ヘッダーがなくなった時点で、宣言も定義もほぼ同義じゃねーの
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」も使われたり混同されたりしてるようだけど
2017/04/26(水) 22:01:01.52ID:H5XmXuTS0
>>443
うっそーん?

instance method, type methodっていう言い方はするが、
instance function, type function(class function)なんて聞いたこと
ないぞぉ。
2017/04/27(木) 02:46:48.47ID:v69LNgpd0
>>443>>447みたいなことを口に出す人は若いなぁと思う
自分も若かりし頃は気にしてたけど年取ったら思ってても意図が伝わればどうでもいいわとなった
どうせswiftコード上だとfuncが共通で使われるし、小面倒な奴と会話するときは「ファンク」とでも言っとけばおk
2017/04/27(木) 08:03:13.29ID:T2cThVGm0
いやだからなんでfuncって書くのにメソッドやねん
だったらmethにでもしとけばええやん
2017/04/27(木) 08:35:20.62ID:7p4DwLyja
グローバルな関数とメソッドでfuncとmethを書き分けろっての?
ただの関数にmethとか使うのは抵抗あるわ
メソッドにfunc使うのは他の言語の例もあるので違和感ないけど
2017/04/27(木) 09:04:29.23ID:N3r3uYtra
そもそもメソッドというのはSmalltalkのコミュニティが使い始めた用語で
もともともはメッセージを受け取ったオブジェクトが目指すゴールを記述するための新しい言語要素を想定してたんだよね

だけど、けっきょくそのSmalltalkも-76以降はSimula67(ALGOLの拡張)スタイルの普通の関数に落ち着いたし
その後ブームとなったJavaもそのまま用語を採用した経緯もあって
メソッドと関数っていうのはインスタンスとオブジェクトみたいなもので区別はあまり意味をもたなくなっちゃっている

強いて言えば、クラスに属する(言語によってはプラスして暗黙のselfを受け取れる)関数をメソッドと呼ぶとかゆるいくくり
2017/04/27(木) 09:05:58.12ID:OI3ixlBfF
funcyな言語やで
453デフォルトの名無しさん (ワッチョイ 0bf3-czGs)
垢版 |
2017/04/27(木) 10:36:56.84ID:OuTFIb+i0
>>451
それも、うっそーん!
Smalltalkではmethodをmessageっていうゾォ。
2017/04/27(木) 11:23:38.37ID:N3r3uYtra
>>453
ああ、それはSmalltalkの(というかOOPの)メッセージングというコンセプトをよくわかっていない人がやりがちな間違いで
メッセージと、それを送ることでコールされるメソッド(関数)は別物

たとえばメッセージ(仮にmとしよう)を送ってもmとは関係ないメソッドがコールされることもあるし
極端な話、何もしないという選択肢(振る舞い)もありうる

もっとも多くの場合、メッセージ(厳密にはメッセージを構成するセレクタ)とメソッド名は一致させるのが普通なので
混同するのも無理からぬことだけれども
2017/04/27(木) 11:49:48.89ID:7p4DwLyja
Obj-Cの場合はメッセージ=メソッド的なとこあるけど、Smalltalkは違うんかね
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 |};
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
2017/04/27(木) 14:47:27.97ID:52wV30cHp
以上って言っても、small talkやobjcについてスレチ上等で会話してる奴等には通じない、、、

大元の>>440だけ考えたら、コード上でfunc, methの書き分けなんて面倒っていう
コンパイラ側とコーダー側の双方メリットによるものだろうよ
459デフォルトの名無しさん (ワッチョイ 5b3c-C6JC)
垢版 |
2017/04/27(木) 15:27:43.95ID:573QYR970
戻り値が void の function なんてのは C で初めて見た。
例えば BASIC や Pascal では戻り値が無いのは procedure で 戻り値があるのが function だ。

method はやり方とか手順とかいう意味で routine や procedure と同じような意味合いだ。

function というからには副作用が無い(引数以外が戻り値に影響しない)ことを期待したいところだが、「機能」という意味合いに着目すると、これらの中で最も曖昧であって、一つで済ませるなら便利かもね。
460デフォルトの名無しさん (JP 0H9f-PkLO)
垢版 |
2017/04/27(木) 16:23:53.95ID:a+4IBLmkH
Cのvoidはアキュムレータの値を還すよ
2017/04/27(木) 16:43:42.91ID:QxU5eB0Ka
そんなもの返されたところで使い道は無ぇ
2017/04/27(木) 16:48:34.82ID:R6dFUrFW0
るーびーですねわかります
2017/04/27(木) 19:19:04.75ID:5OLYtE1F0
>>460
それは返すとは言いません
2017/04/27(木) 21:03:25.93ID:8BI3unQLd
>>458
つまり全部関数って呼べばいいんじゃないの
わざわざメソッドとか言わずに
2017/04/27(木) 21:31:33.44ID:i5BzzK+e0
>>464
普通の人はそれで良いと思う
頭固い偏屈な奴だけメソッドって言い張れば良いんじゃないかなぁ
と自分は思います
2017/04/27(木) 22:14:36.28ID:52wV30cHp
教祖様がコード上はfuncをキーワードにするけど、>>457の通り人間向けはmethodがいいって言ってる
ケースバイケースで言い換えたい所存、信仰したくない宗教だけど敬意は払う

信者はsmall talk原理主義やobjc至上主義で討論してるけど結論出ないだろ
2017/04/27(木) 23:12:26.96ID:Wv+Yc+Vq0
>>464
メソッドって呼んだ場合は単なる関数じゃなく
クラスや構造体なんかの特定の型に紐付いた関数だっていう意味が付随するの
それが不要だと思うなら全部関数って呼べばいいと思うよ

メソッドに限らずクロージャなんて呼ばずに全部関数って呼んでもいいし
逆に関数なんて呼ばずに全部クロージャって呼んでもいい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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