トップページ > プログラム > 2017年02月15日 > 98yhGEhP0

書き込み順位&時間帯一覧

11 位/246 ID中時間01234567891011121314151617181920212223Total
書き込み数2001000000000001001000005



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ f2c9-3OfB)
Swift part9 [無断転載禁止]©2ch.net

書き込みレス一覧

Swift part9 [無断転載禁止]©2ch.net
881 :デフォルトの名無しさん (ワッチョイ f2c9-3OfB)[sage]:2017/02/15(水) 00:05:03.84 ID:98yhGEhP0
>>876
ラップされた側でさらにタプルに包んで渡さないといけないのがつらいけどこれどうにかできんかな

func wrap<T, V>(_ fn: @escaping (T) -> V) -> (T) -> V {
print("¥(T.self) -> ¥(V.self)")

var counter = 0

return { (args: T) -> V in
let mirror = Mirror(reflecting: args)
let inputs = mirror.children.count == 0 ? [args] : mirror.children.map { $0.value }
let result = fn(args)
print("¥(counter): ¥(inputs) -> ¥(result)")

counter += 1

return result
}
}

func f1(a: Int, b: String) -> String { return repeatElement(b, count: a).joined() }
let f2 = wrap(f1)
f2((5, "z"))
f2((3, "abc"))

// (Int, String) -> String
// 0: [5, "z"] -> zzzzz
// 1: [3, "abc"] -> abcabcabc
Swift part9 [無断転載禁止]©2ch.net
883 :デフォルトの名無しさん (ワッチョイ f2c9-3OfB)[sage]:2017/02/15(水) 00:38:51.58 ID:98yhGEhP0
>>882
なるほど、そうなるのか
Swift part9 [無断転載禁止]©2ch.net
886 :デフォルトの名無しさん (ワッチョイ f2c9-3OfB)[sage]:2017/02/15(水) 03:34:27.80 ID:98yhGEhP0
いや、そもそもメンバ変数にしたくない理由が分からんけどな
Swift part9 [無断転載禁止]©2ch.net
892 :デフォルトの名無しさん (ワッチョイ f2c9-3OfB)[sage]:2017/02/15(水) 15:54:15.06 ID:98yhGEhP0
>>889
他のメソッドに触られたくないとなったときに、クラスを分割するんじゃなくてstaticローカル変数でメソッドに閉じ込めたいという状況がわからない
オブジェクト指向的にはそのクラスが適切な凝集度に収まってないってことでしょ
staticローカル変数とかクロージャで状態を関数に閉じ込めてしまうとテストも難しくなる問題もある
Swift part9 [無断転載禁止]©2ch.net
897 :デフォルトの名無しさん (ワッチョイ f2c9-3OfB)[sage]:2017/02/15(水) 18:38:47.57 ID:98yhGEhP0
struct S {
func foo() {
struct T { static var count = 0 }
print(T.count)
T.count += 1
}
}

let s1 = S()
s1.foo()
s1.foo()
s1.foo()

let s2 = S()
s2.foo()
s2.foo()
s2.foo()

これで"0 1 2 0 1 2"を期待するか"0 1 2 3 4 5"を期待するか
読みやすいと思うか読みにくいと思うか
人によって違うだろうしstaticローカル変数があったとしても混乱の元でしかないようなきがする


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。