记录清单上的SML功能 [英] SML function on record list
本文介绍了记录清单上的SML功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试声明一个函数,该函数将元组内的记录列表作为参数,但是语法不如我所希望的直观.
I'm trying to declare a function that takes a list of records inside a tuple as an argument but the syntax is not as intuitive as I would have liked.
这就是我想要做的:
type Player = {id:int, privateStack:int list};
fun foo(({id, x::xs}:Player)::players, ...) = (* wrong syntax *)
(* do something *)
推荐答案
模式匹配需要将记录字段绑定到某些值,因此您必须使用显式记录语法.因此,
Pattern matching requires binding record fields to some values so you have to use explicit record syntax. Therefore,
fun foo(({id = id, privateStack = x::xs})::players, ...) =
(* do something *)
会工作的.
请注意,上面的模式匹配并不详尽,请注意players
的空白列表和privateStack
的空白列表:
Note that above pattern matching is not exhaustive, be aware of empty list for players
and empty list for privateStack
:
fun foo([], ...) = (* do something *)
| foo({id = id, privateStack = []}::players, ...) = (* do something else *)
| foo({id = id, privateStack = x::xs}::players, ...) = (* do something else *)
这篇关于记录清单上的SML功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文