簡體   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