解释elm函数声明语法
我无法掌握elm语言的以下函数声明和定义语法解释elm函数声明语法,elm,Elm,我无法掌握elm语言的以下函数声明和定义语法 keyDown: (Int -> Msg) -> Attribute msg keyDown event = on "keydown" (Json.map event keyCode) 第一行是什么意思? keyDown:(Int->Msg)->属性Msg。这是否意味着,keyDown函数接受,Int和Msg类型参数并返回类型属性 函数定义部分到底发生了什么 函数的参数是如何定义的?TL;博士 keyDown函数接受另一个函数作为
keyDown: (Int -> Msg) -> Attribute msg
keyDown event =
on "keydown" (Json.map event keyCode)
第一行是什么意思?
keyDown:(Int->Msg)->属性Msg
。这是否意味着,keyDown
函数接受,Int
和Msg
类型参数并返回类型属性
函数定义部分到底发生了什么
函数的参数是如何定义的?TL;博士
keyDown
函数接受另一个函数作为参数并返回一个属性,Elm的渲染器使用该属性附加事件侦听器
如果您定义一个类型
type Msg
= KeyDown Int
KeyDown
充当类型为Msg
的值的构造函数,因此我们可以说它的隐式类型是KeyDown:Int->Msg
,这是您想要从DOM事件检索键代码时所需要的
解释
首先,我必须说,正确的实施应该是这样的:
keyDown : (Int -> msg) -> Attribute msg
keyDown tagger =
on "keydown" (Json.Decode.map tagger keyCode)
签名中必须有msg
type变量,因此可以在应用程序的不同部分使用此事件侦听器,其中Html
发出不同类型的msg
为了了解这里发生了什么,让我们仔细看看
每个DOM事件都表示为带有特定字段的JavaScript对象。要从JavaScript中检索数据,Elm需要将其传递给一个脚本,以确保运行时的类型安全,就像HTTP请求一样
上的中的解码器预期会产生与属性本身相同类型的消息
默认情况下,解码器解码Int
值,但我们想要的是发出一些消息
这有助于我们获取Int
并应用一些tagger
函数,该函数生成一条消息
译码器
整个(Json.map event keyCode)
部分本质上是一个解码器msg
,它应用于事件对象以提取密钥代码并用消息“标记”它。TL;博士
keyDown
函数接受另一个函数作为参数并返回一个属性,Elm的渲染器使用该属性附加事件侦听器
如果您定义一个类型
type Msg
= KeyDown Int
KeyDown
充当类型为Msg
的值的构造函数,因此我们可以说它的隐式类型是KeyDown:Int->Msg
,这是您想要从DOM事件检索键代码时所需要的
解释
首先,我必须说,正确的实施应该是这样的:
keyDown : (Int -> msg) -> Attribute msg
keyDown tagger =
on "keydown" (Json.Decode.map tagger keyCode)
签名中必须有msg
type变量,因此可以在应用程序的不同部分使用此事件侦听器,其中Html
发出不同类型的msg
为了了解这里发生了什么,让我们仔细看看
每个DOM事件都表示为带有特定字段的JavaScript对象。要从JavaScript中检索数据,Elm需要将其传递给一个脚本,以确保运行时的类型安全,就像HTTP请求一样
上的中的解码器预期会产生与属性本身相同类型的消息
默认情况下,解码器解码Int
值,但我们想要的是发出一些消息
这有助于我们获取Int
并应用一些tagger
函数,该函数生成一条消息
译码器
整个(Json.map event keyCode)
部分本质上是一个解码器msg
,它应用于事件对象以提取密钥代码并用消息“标记”它。您好,感谢您的回复。这里的tagger
是什么?@explorer“tagger”是这些函数的通用名称,用于从解码器检索数据并将其转换为消息。我的问题是语法。你能给我解释一下下面每个部分吗keyDown tagger=on“keyDown”(Json.Decode.map tagger-keyCode)
。无法解释按键标记器=
。例如,无法在“keydown”(Json.Decode.map tagger keyCode)上解释
。如果我能做到这一点,那么大多数事情都会突然变得有意义。从文档中,我能够理解on
函数采用偶数名称(字符串)
&解码器
。但是,我无法得到(Json.Decode.map tagger keyCode)
的确切含义。你能解释一下吗?例如,从(Json.Decode.map tagger-keyCode)
,我不能理解的是,调用了哪个函数,输入是什么,输出是什么?好的,现在我看到Json.Decode.map
是一个函数,tagger
,keyCode
是map
函数的参数。但是,我仍然无法理解这些参数是如何创建的&在哪里创建的。您好,谢谢您的回复。这里的tagger
是什么?@explorer“tagger”是这些函数的通用名称,用于从解码器检索数据并将其转换为消息。我的问题是语法。你能给我解释一下下面每个部分吗keyDown tagger=on“keyDown”(Json.Decode.map tagger-keyCode)
。无法解释按键标记器=
。例如,无法在“keydown”(Json.Decode.map tagger keyCode)上解释
。如果我能做到这一点,那么大多数事情都会突然变得有意义。从文档中,我能够理解on
函数采用偶数名称(字符串)
&解码器
。但是,我无法得到(Json.Decode.map tagger keyCode)
的确切含义。您能解释一下吗?例如,从(Json.Decode.map tagger keyCode)
,我无法理解的是,调用了哪个函数,输入是什么,输出是什么?好的,现在我看到了Json.Decode.map