f# - 圆括号、花括号
问题描述
我试图理解这段代码: https ://github.com/CameronAavik/AdventOfCode/blob/master/Challenges/2018/Day03.fs
但我找不到任何关于“let something (...) { ... } = ...”语法的信息,例如:
let processBoundary (prevY, claimSet, total) {cursor=cursor; isAdding=isAdding; data=(top, height)} = ...
这是什么?让我想起了元组和解构,但也许不是这样。
谢谢
解决方案
它实际上是像元组一样解构,只是在这种情况下它是一条记录。
一个显着的区别是,虽然使用元组您必须匹配各个部分的确切数量和位置,但在解构记录时,您可以忽略此时不感兴趣的任何字段。
我曾经写过一篇关于 F# 中模式匹配/解构的不同方式的(非详尽的)博客文章;也许这有助于理解这里。
推荐阅读
- http - 如何根据其中存在的值过滤 URL 中的记录?
- php - 在window + xampp上带有日文字符的mkdir中的麻烦
- rust - 如何在指定的时间内从 mpsc::channel 读取而没有不稳定的功能或外部 crate?
- c - 剥离 char* myargs 数组中的最后一个字符
- c# - 异步 API 请求需要更长的时间才能返回数百个循环的结果 - 互联网连接是瓶颈吗?
- generics - 制作一个通用的 vhdl 解码器
- php - Laravel 队列 - 运行多个/批处理作业,事务回滚失败并提交完成
- email - 带有内容的邮件访问网站通知警报
- elasticsearch - 为什么@与elasticsearch中的query_string查询不匹配?
- android - 为什么我的凌空没有收到来自 django rest api 的 json?