【发布时间】:2015-10-04 08:36:02
【问题描述】:
我在编写线-线相交函数时遇到问题。这是我目前所拥有的:
type Line = float*float
let LinesIntersection x y =
if x.a <> y.a then
Some ((x.b - y.b)/(y.a - x.a), (y.a*x.b - x.a*y.b)/(y.a - x.a))
else None
let l1 = (2.0,-3.0)
let l2 = (-3.0, 2.0)
let l3 = (2.0, 4.0)
LinesIntersection l1 l2 |> printfn "%A"
LinesIntersection l1 l3 |> printfn "%A"
输出:
stdin(73,19): error FS0001: This expression was expected to have type
Line
but here has type
float * float
有什么帮助吗?
【问题讨论】:
-
你在期待什么,例如
x.a做什么?元组没有a成员... -
他们可能想要将
Line声明更改为type Line = { a: float; b: float}并相应地将 l1 设置为 l3:let l1 = { a=2.0; b= -3.0 } -
我正在尝试获取作为元组返回的值
-
投反对票。抱歉,您从 stackoverflow.com/questions/32683811/… 获取代码并更改行 Type = {a:double; b:double} 类型 line = float*float。你甚至没有尝试自己做某事。究竟是什么问题?你已经几乎拥有一切
标签: f# f#-interactive f#-3.0