通过将列表的列作为函数的参数输入到 elm 中来访问列表的列
Access columns of a list by entering them as arguments of a function in elm
type alias Footballer =
{ name : String, age : Float, overall : Float, potential : Float }
type alias Point =
{ pointName : String, x : Float, y : Float }
pointName : Footballer -> Point
pointName x a b c=
Point x.a x.b x.c
我正在尝试为散点图创建点,并希望能够提供具有 Player 的函数和我希望能够可变地提供的 3 列。
我正在努力使用榆树,因为我试图可变地访问我的足球运动员列表的字段,但我似乎无法找到一种方法来做到这一点,而不是为我想要的每个点的变化重写函数 pointName创建。
Elm 自动为所用记录的所有字段生成多态访问器函数。 (例如 .age : { a | age : b } -> b
)您可以将这些函数用作 pointName
的参数,并将它们应用于函数主体以提取目标字段。
pointName :
r
-> (r -> String)
-> (r -> Float)
-> (r -> Float)
-> Point
pointName r a b c =
Point (a r) (b r) (c r)
player =
{ name = "Messi", age = 34, overall = 99, potential = 100 }
foo =
pointName player .name .age .potential
bar =
pointName player (.age >> String.fromFloat) .overall .potential
type alias Footballer =
{ name : String, age : Float, overall : Float, potential : Float }
type alias Point =
{ pointName : String, x : Float, y : Float }
pointName : Footballer -> Point
pointName x a b c=
Point x.a x.b x.c
我正在尝试为散点图创建点,并希望能够提供具有 Player 的函数和我希望能够可变地提供的 3 列。
我正在努力使用榆树,因为我试图可变地访问我的足球运动员列表的字段,但我似乎无法找到一种方法来做到这一点,而不是为我想要的每个点的变化重写函数 pointName创建。
Elm 自动为所用记录的所有字段生成多态访问器函数。 (例如 .age : { a | age : b } -> b
)您可以将这些函数用作 pointName
的参数,并将它们应用于函数主体以提取目标字段。
pointName :
r
-> (r -> String)
-> (r -> Float)
-> (r -> Float)
-> Point
pointName r a b c =
Point (a r) (b r) (c r)
player =
{ name = "Messi", age = 34, overall = 99, potential = 100 }
foo =
pointName player .name .age .potential
bar =
pointName player (.age >> String.fromFloat) .overall .potential