Каков хороший и эффективный способ сделать такой бросок?Значения seq.cast tuple от obj до строки
seq { yield (box "key", box "val") }
|> Seq.cast<string*string>
Так как это выглядит очень некрасиво:
seq { yield (box "key", box "val") }
|> Seq.map (fun (k,v) -> k.ToString(), v.ToString())
Как это:
seq { yield (box "key", box "val") }
|> Seq.map (fun (k,v) -> unbox<string>(k), unbox<string>(v))
Есть ли способ "распаковывать" кортеж в другой кортеж?
просто скомпрометируйте его в функции unBoxString (k, v). И вы можете вызвать .ToString() непосредственно на объект в штучной упаковке. – s952163
Благодарим вас за предложение, но я не могу называть 'ToString()' на коробчатом кортеже, так как получаю строковое представление. И вместо этого я хочу получить кортеж из двух строк. – derwasp
Да, конечно. Я имел в виду это, как в ответе Марка, где используется строковая функция. Вам нужно будет вызвать его на каждый объект в штучной упаковке, который вы уже делаете. Я думаю, когда он чувствует себя «уродливым», легко написать один лайнер. Наличие многих вспомогательных функций является идиоматическим. Ответ является хорошим примером этого. – s952163