[英]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#中更簡潔/慣用。
您可以使用fst
或snd
函數來獲取變量中的各個值(請注意,這只適用於大小為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.