Нет ли более чистого способа сделать это?Как упростить этот код F #
let Triplets = List.zip3 A B C
let T1 (x, _, _) = x
let T2 (_, x, _) = x
let T3 (_, _, x) = x
let Best = List.maxBy T3 Triplets
T1 Best,T2 Best // return to C# code
Нет ли более чистого способа сделать это?Как упростить этот код F #
let Triplets = List.zip3 A B C
let T1 (x, _, _) = x
let T2 (_, x, _) = x
let T3 (_, _, x) = x
let Best = List.maxBy T3 Triplets
T1 Best,T2 Best // return to C# code
Главное улучшение заключается в использовании сопоставления шаблонов для извлечения данных из кортежей.
Я бы с чем-то по следующим направлениям (показано как функция под названием myFunc
, который я назвал с примерами данных, чтобы проверить мое понимание вашего намерения):
let A = [1; 2; 3]
let B = [4; 5; 6]
let C = [6; 7; 6]
let myFunc A B C =
let triplets = List.zip3 A B C
match List.maxBy (fun (_, _, x) -> x) triplets with
| (a, b, _) -> (a, b)
let result = myFunc A B C //returns (2, 5)
Вы могли бы сократить myFunc
еще быть обжигающе определение triplets
в List.maxBy
, но в какой-то стоимости читаемости, например: предложение
let myFunc A B C =
match List.zip3 A B C |> List.maxBy (fun (_, _, x) -> x) with
| (a, b, _) -> (a, b)
phoog в уберет соответствие:
let myFunc A B C =
let (a, b, _) = List.zip3 A B C |> List.maxBy (fun (_, _, x) -> x)
(a, b)
еще один вариант: 'let (a, b, _) = List.maxBy (fun (_, _, x) -> x) triplets в a, b' - в многострочном примере, замените' in' Конечно, ключевое слово с символом новой строки. – phoog
Это больше подходит для [CodeReview.SE] (http://codereview.stackexchange.com). – ildjarn
@ildjarn Нет, к сожалению, это не так. Этот код является фрагментированным фрагментом кода, здесь нет никакого контекста, и нет описания того, что делает код, это считается «примером кода», который является не по теме для обзора кода. –
Я здесь довольно новый. Вы, ребята, говорите, что мой вопрос нигде не подходит? Я думал, что это хороший стиль, чтобы вырезать код для сообщения. Что касается кода, я думал, что вполне очевидно, что он объединяет 3 списка, находит максимум и возвращает 2 элемента максимума. –