F# 在F中使用属性#
希望这是连贯的,尽管冗长 我正在尝试在一个F# 在F中使用属性#,f#,module,F#,Module,希望这是连贯的,尽管冗长 我正在尝试在一个.fs文件中创建一个属性,可以从单独的.fs文件中设置该属性,然后在第一个.fs文件的模块中使用该值。。。比如说, 在我的第一个文件function.fs中,我想定义一个属性theta 然后我想在function.fs中定义一个函数Q,以便: 函数Q=Q(r)和。。。 Q(r)依赖于某些依赖于theta, i、 e A1(θ)、A2(θ)、A3(θ) Q以列表的形式返回数据集 我还想在主.fs文件program.fs中维护一组θ值(即 theta=[90
.fs
文件中创建一个属性,可以从单独的.fs
文件中设置该属性,然后在第一个.fs
文件的模块中使用该值。。。比如说,
在我的第一个文件function.fs
中,我想定义一个属性theta
然后我想在function.fs
中定义一个函数Q
,以便:
函数Q=Q(r)
和。。。
Q(r)
依赖于某些依赖于theta
,i、 e
A1(θ)、A2(θ)、A3(θ)
Q
以列表的形式返回数据集
我还想在主.fs文件program.fs
中维护一组θ值(即theta=[90;120;150;180])
然后我想从function.fs
为每个theta
生成一个数据集
我的想法是通过为属性θ设置一个值,运行程序生成一个数据集,为θ设置一个新值,运行程序生成一个数据集,重复。。。我已经做了大量的研究,但我不清楚的是,我如何在Q(r)
的代码中回忆起财产的价值
我已成功地在我的function.fs
文件中设置了一个属性,可以从program.fs
设置该属性:
在function.fs
中,我有:
namespace models.test
type ContactAngle() =
let mutable m_theta = 90.0
//read only property
member this.Empty =
m_theta = 90.0
//read-write property
//i think i'm onto something with this static...
member this.Angle
with get() =
m_theta
and set newAmt =
m_theta <- newAmt
//module HTModel =
open models.test
let me = new ContactAngle()
printfn "%A" me.Angle
me.Angle <- 120.0
printfn "%A" me.Angle
这允许我重新定义值theta
。我现在所面临的困难是如何在function.fs
中的函数中使用新的属性值
我觉得我错过了一些非常基本的东西,需要一些帮助!如有任何见解,将不胜感激 由于函数在被调用时求值,而不是在创建时求值(与中的完全相同,例如,C#),因此您可以在ContactAngle
中创建一个普通函数,如下所示:
member this.DoSomenthingWithTheta multiplier
m_theta <- m_theta * multiplier
member this.DoSomenthingWithTheta乘数
m_theta我认为这不是很清楚-你是在问类似于让我们回忆。。。还有…
但是翻阅文件?我试图理解,但我迷路了。。。如果你重新措辞,让它变得更简单,我很乐意告诉你,似乎有一个基本的误解:为什么要谈论代码的位置?为了使用代码,您需要调用它,而程序并不关心它是在哪个文件中定义的。如果你打电话给它,它不知道它在哪里,它会在编译时吠叫。但在那之后,这是他的工作…感谢所有的反馈。你的评论让我重新思考我想做什么,结果发现答案太复杂了。如果不明显的话,我不是一个开发者,而是一个试图用F#从论文中复制模型的工科学生。我没有重写我的帖子,而是放弃了我的第一次尝试,将它全部放在一个文件中,并通过多个列表使用递归来完成我的任务,而且成功了!谢谢你的帮助和洞察力!