識別子パターンの結果をasパターンにコピーしてタプルを作るにはどうすればいいですか?識別子パターンを `as`パターンと組み合わせる
私の質問が混乱しているので、私は例を作成し、私は教師や学生のいずれかである人物の情報を印刷したい:
type Person =
| Teacher of name: string * age: int * classIds: int list
| Student of name: string
let printTeacher (name, age, classIds) =
printfn "Teacher: %s; Age: %d; Classes: %A" name age classIds
let print = function
| Teacher (name, age, classIds) -> printTeacher (name, age, classIds)
| Student name -> printfn "Student: %s" name
マッチングパターンが長いと繰り返しです:
| Teacher (name, age, classIds) -> printTeacher (name, age, classIds)
だから私はas
パターンを使用して、それを短くしようとしましたが、失敗しました:
| Teacher ((_, _, _) as teacher) -> printTeacher teacher
上記teacher
はPerson
タイプであり、string*int*int list
ではないためです。 printTeacher
タイプの署名string*int*int list -> unit
を変更せずに、パターンを短くするにはどうすればよいですか?私は考えることができる