这是我学习F#的第一天。当我遇到主题作为值的函数
的示例时,我将通过tryfsharp.orglet chrisTest test =
test "Chris"
let isMe x =
if x = "Chris" then
"it is Chris!"
else
"it's someone else"
chrisTest isMe
网站上的说明: - chrisTest是一个简单的高阶函数,它对字符串值执行测试。 isMe函数检查字符串是否等于“Chris”。传递isChris到chrisTest将字符串“Chris”作为参数传递给`isChris'函数,并返回“它是Chris!”的结果。
我的想法: - isMe
函数的值传递给程序的最后一行中的函数chrisTest
。但是我没有得到的是没有传递给isMe
函数的值。 isMe
函数如何决定执行要返回的值?
答案 0 :(得分:4)
对于这种情况,我们可以先替换christest中的所有内容。那你有
chrisTest isMe = isme "Chris" (as test=isme)
然后其余部分遵循类似的程序
答案 1 :(得分:3)
为什么不将它提供给F#interactive,以便您可以随时查看类型:
let chrisTest test = test "Chris";;
val chrisTest:test :( string - >'a) - > “一
这里我们有一个函数,我们可以从string -> 'a
提供另一个函数作为参数(称为test),它将使用参数“Chris”调用这个提供的函数,返回一些结果'a
。
let isMe x =
if x = "Chris" then
"it is Chris!"
else
"it's someone else";;
val isMe:x:string - >串
这里我们有简单的名称检查功能。
请注意,此isMe
函数适合作为christTest
函数的参数提供。另请注意,如果我们提供chrisTest
的参数类型为string -> string
,我们将获得string
结果。希望您可以在此处看到如何使用类型签名来帮助您推断程序的行为。
因此,当我们将isMe
作为chrisTest
的参数提供时,chrisTest
函数使用参数“Chris”运行isMe
函数,返回结果“它是克里斯!“。