Swift part13 (412レス)
上下前次1-新
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
404(1): (ワッチョイ eb01-v8wM) 06/10(火)23:17 ID:HzGLhqs50(1) AAS
>>399
>これって、スペルミスしやすいですよね
だからマクロ・・・・・
>>402
@objc属性つければ事情が変わる
405: (ワッチョイ fbc8-jSs6) 06/11(水)01:29 ID:Y6NiPAiA0(1/3) AAS
テスト
406(1): (ワッチョイ fb6a-G4JC) 06/11(水)08:54 ID:Y6NiPAiA0(2/3) AAS
>>404
マクロにしても...
すいませんが、サンプルコーディングみせてもらえませんか
お願いします
407(1): (ワッチョイ fbe8-G4JC) 06/11(水)23:22 ID:Y6NiPAiA0(3/3) AAS
関数の引数に関数を指定した場合、引数の関数名取得して適宜分岐処理したかっただけでしたが、実質無理っぽいですね
いろいろと検索してたらObjectIdentifierなるものがあって、試したところ
引数の関数名は取得できないまでも、引数の関数の識別ができたので、解決しました
408(1): (ワッチョイ 0101-v8wM) 06/11(水)23:36 ID:xQ0zj3960(1/2) AAS
>>406
主なところだけ書くけど
let firstArg = node.arguments.first!
let expr = firstArg.expression.trimmedDescription
return "test_func(function: \(expr), name: \"\(expr)\")"
みたいなので
#call_test_func(function: test_func1)みたいな呼び出しを
test_func(function: test_func1, name: "test_func1”)に展開できる
409(1): (ワッチョイ 0101-v8wM) 06/11(水)23:44 ID:xQ0zj3960(2/2) AAS
>>407
高階関数で受け取った関数を識別して分岐処理を書くのは一般的には筋が悪い実装だよ
理解した上であえてやってるならいいけどそうじゃないなら再考を勧める
410(1): (ワッチョイ fbe8-G4JC) 06/12(木)00:07 ID:gPSDSI/z0(1) AAS
>>408
test_func(function: test_func1, name: "test_func1”)
の
test_func1 と "test_func1" として実装するのが気に入らないのです
>>409
そもそも引数に関数ってのが、好ましくないのは承知してます
ただ、どうしても引数とした関数として処理した方が、プログラム上、高メリットとなるので実装してます
余談ながら@objc化して引数の関数名を取得は可能でしたが、Selectorとかなんやらでなんか面倒で...
ObjectIdentifier使った方が、意外にスマートな分岐処理が実装できたので、ObjectIdentifierで処理します
411: (ワッチョイ 0101-v8wM) 06/12(木)01:05 ID:huei3sVu0(1) AAS
>>410
>そもそも引数に関数ってのが、好ましくないのは承知してます
関数を受け渡しするのは別に悪くない
使う状況によってはむしろ好ましいことも多い
悪いのは関数を受け渡しする形にしているにもかかわらず
受け取った側でどの関数が渡されたかを識別して分岐しようとすること
@objcのは最初に書いてあるように一番面倒なやり方だからね
リフレクションを使いまくるような用途じゃなければ割に合わない
412: (ワッチョイ c170-PdR5) 06/12(木)12:08 ID:1TmeXXfD0(1) AAS
ありえん設計だな
何か根本的に勘違いしてるとしか考えられん
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.007s