【发布时间】:2018-06-12 19:19:19
【问题描述】:
Beginning Elm - Let Expression 页面建立在上一页的基础上,但不包括如何更新 main 函数,用正向函数表示法编写,即:
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")
【问题讨论】:
-
whereToLand不会“打印”,因为它不是从函数返回的。它在 let 表达式中定义,但未在表达式中使用。 -
谢谢 Tyler,我明白了我的错误,第二个应该是 else whereToLand fuelStatus,而不是 else "Come back"