榆树:部分功能应用和让

问题描述 投票:2回答:1

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")
elm let
1个回答
4
投票

我想你需要的是

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语句中定义了函数,但从未实际使用它

© www.soinside.com 2019 - 2024. All rights reserved.