繁体   English   中英

F#Int * Int混乱

[英]F# Int * Int confusion

首先,我想说,我对这种语言完全不熟悉,而且现在对我来说似乎非常奇怪(作为Java / C#用户)。

我正在做一个uni项目,我必须使用寻路来导航网格(甚至不接近这一点,稍后会处理它) ,我已经创建了一个大小为10x10的二维数组但是我已经发现我可以通过使用像mutable position = 0,0这样的东西来存储我当前的位置,这给了我一种int * int。

这对我来说似乎很棒,因为我可以轻松地存储我的X和Y位置,但是我遇到了一些问题

1)获取变量中的各个值。 IE获取我当前的X位置或获得我当前的Y位置

2)添加到此变量,以便我可以在网格中移动。 IE位置< - 位置+(5,5)

再一次,我对这种语言只有少量的经验,所以请保持温和,尽管我似乎很好地掌握了基础知识。

感谢您提供的任何帮助!

除了Ringil所说的,您可以使用以下方法解构元组:

let xPos, yPos = gridPos

这在F#中更简洁/惯用。

您可以使用fstsnd函数来获取变量中的各个值(请注意,这只适用于大小为2的元组):

let gridPos = 1, 2
//val gridPos : int * int = (1, 2)
let xPos = fst gridPos
//val xPos : int = 1
let yPos  = snd gridPos
//val yPos : int = 2

至于第二个问题,你可以覆盖加法运算符以允许int*int元组添加如下:

let (+) a b = (fst a + fst b, snd a + snd b)
//val ( + ) : int * int -> int * int -> int * int
let newValue = gridPos + (2,5)
//val newValue : int * int = (3, 7)

那说你通常应该避免F#中的可变状态......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM