Шаблон [(b,c)]
соответствует единственному списку пар. Таким образом, он будет совпадать с [("hello", "world)]
, но не будет совпадать с [("hello", "world"); ("another", "pair")]
, []
или любым списком, длина которого не равна единице. Если вы хотите сопоставить любой список с длиной более одного, вам нужно использовать шаблон first :: rest
, где first
будет соответствовать первому элементу списка, а rest
- остальной части списка ( все, что находится за пределами первого элемента).
Следующая функция извлечет имя первого столбца,
type column = string * string list (* name, values *)
type base = string * column list (* tableName, columns *)
let firstColumnName : base -> string = fun table -> match table with
| (_tableName, (columnName,_values) :: _otherColumns) -> columnName
| _ -> failwith "wrong table representation"
Пример,
# firstColumnName tableWithOneColumn;;
- : string = "RegNumber"
# firstColumnName tableWithManyColumns;;
- : string = "RegNumber"