Beginning Elm - Let Expression页面建立在前一页上,但它没有涵盖如何更新主函数,用前向函数表示法编写,它是:
main =
time 2 3
|> speed 7.67
|> escapeEarth 11
|> Html.text
包括新的fuelStatus参数。
编译器抱怨类型不匹配,这是正确的,因为escapeEarth现在有第三个参数,这是一个字符串。
如该站点所述“转发函数应用程序运算符从前一个表达式获取结果,并将其作为最后一个参数传递给下一个函数应用程序。”
换句话说,我该怎么写:
Html.text (escapeEarth 11 (speed 7.67 (time 2 3)) "low")
使用前向表示法?
另外,为什么不打印“陆上无人机”,以及“留在轨道上”?它只打印“留在轨道上”:
module Playground exposing (..)
import Html
escapeEarth velocity speed fuelStatus =
let
escapeVelocityInKmPerSec =
11.186
orbitalSpeedInKmPerSec =
7.67
whereToLand fuelStatus =
if fuelStatus == "low" then
"Land on droneship"
else
"Land on launchpad"
in
if velocity > escapeVelocityInKmPerSec then
"Godspeed"
else if speed == orbitalSpeedInKmPerSec then
"Stay in orbit"
else
"Come back"
speed distance time =
distance / time
time startTime endTime =
endTime - startTime
main =
Html.text (escapeEarth 11 (speed 7.67 (time 2 3)) "low")
我想你需要的是
main =
time 2 3
|> speed 7.67
|> \spd -> escapeEarth 11 spd "low"
|> Html.text
换句话说,您定义一个小的匿名函数来正确插入值。您可能想要查看是否应使用不同的顺序定义escapeEarth函数。
如果你喜欢“免费点”的另一种选择
main =
time 2 3
|> speed 7.67
|> flip (escapeEarth 11) "low"
|> Html.text
有些人会认为这不太清楚
至于你的第二个问题,你已经在let语句中定义了函数,但从未实际使用它