2016-11-11 2 views
1

Предполагая объявления ниже, как бы я мог взять список ats и получить из него ints, если бы я хотел проверить, были ли они все положительные числа, например? Подсказка приветствуется.F # получение определенного элемента из списка кортежей

type Item = string 
type ItemList = Item * int 

let ad1 = ("machine", 2) 
let ad2 = ("coffee", 1) 
let ad3 = ("washer", 2) 
let ats = [ad1; ad2; ad3; ad1; ad2] 

ответ

3
let ints = ats |> List.map snd 

let allPositive = ints |> List.forall (fun x -> x > 0) 
+0

@ Khaine775 это все о применении функции высшего порядка. :-) В любом случае, если вы хотите разделить x, вы можете сделать его еще короче: 'ints |> List.forall ((<) 0)' – s952163

+0

Уход. Следующий вопрос может быть: Если бы я хотел получить значение 'int'' элементов' в списке с определенным именем, например, я хотел просто получить 'ints' из кортежей, содержащих' coffee'? – Khaine775

+2

'let coffeeInts = ats |> List.filter (fst >> (=)« coffee ») | List.map snd' – rmunn

Смежные вопросы