标签: higher-order-functions

haskell,映射两个列表,将一个列表的每个元素与另一个列表的每个元素相加

有一个以列表理解风格给出的函数

f1 :: [Int] -> [Int] -> [Int]
f1 xs ys = [ x+y | x <- xs, y <-ys ]
Run Code Online (Sandbox Code Playgroud)

那没那么复杂。示例输出:

*主> f2 [1,2,3,4] [5,6,7,8]
[6,7,8,9,7,8,9,10,8,9,10,11,9,10 ,11,12]

任务是转换这个函数和其他几个函数,只使用map,filterconcat。其他函数没有问题,但我不知道如何解决map这里的嵌套。第一个列表的每个元素都将添加到另一个列表中的每个元素。

haskell list-comprehension higher-order-functions

1
推荐指数
1
解决办法
2292
查看次数

在 React 中使用 Mocha 测试高阶组件

我在 React 组件中使用HOC,如下所示:

import React from 'react';
import Wrapper from 'wrapper';
class Component extends React.Component {
  render () {
    return (
      <div className='component' />
    )
  };
}
export default Wrapper(Component)
Run Code Online (Sandbox Code Playgroud)

使用 Mocha 测试 Component 时,我试图查找应包含在 Component 中的类名。像这样:

describe('Component', function () {
  it('can be mounted with the required class', function () {
    const component = shallow(
      <Component />
    );
    expect(component).to.have.className('component');
  });
});
Run Code Online (Sandbox Code Playgroud)

问题是 Mocha 不知道在包装器中查找组件并尝试在 HOC 中找到它。这当然不会。

我收到的错误是:

AssertionError: expected <Wrapper(Component) /> to have a 'component' class, but it …
Run Code Online (Sandbox Code Playgroud)

testing mocha.js higher-order-functions reactjs enzyme

1
推荐指数
1
解决办法
1926
查看次数

使用reduce从数组中删除项目

我需要一些帮助才能从数组中删除项目。我有许多复选框,每个复选框都有一个动态创建的数据属性。在取消选中复选框时,我想从数组中删除与每个数组项的 item.sector 值匹配的项。我不能让它正常工作。任何帮助,将不胜感激。

let mapMarkers = [];

function addFilter(self) {
        const markerObject = filterObject[self.id];
        const markerID = markerObject[0]["id"];
        const dataSetSector = self.dataset.sector;
        const dataSetYear = self.dataset.year;

        if (self.checked) {
            mapMarkers.push(markerObject);
        } else {
            // data attribute SECTOR exists
            if (self.hasAttribute("data-sector")) {
                mapMarkers = mapMarkers.reduce((acc, curr) => {             
                    if (curr.sector !== dataSetSector) acc.push(curr);
                    return acc;
                });
            } 
            // data attribute YEAR exists
            else if (self.hasAttribute("data-year")) {
                mapMarkers = mapMarkers.reduce((acc, curr) => {         
                    if (curr.sector !== dataSetYear) acc.push(curr);
                    return acc;
                });
            } …
Run Code Online (Sandbox Code Playgroud)

javascript arrays higher-order-functions

1
推荐指数
1
解决办法
4357
查看次数

Scheme/Lisp CAR 和 CDR 函数的 Python 等效项

我目前正在尝试在 Python 中实现fold/ reduce,因为我不喜欢functools. 这自然涉及实现类似 LispCDR函数的东西,因为 Python 似乎没有类似的东西。这是我正在考虑的尝试:

def tail(lat):
  # all elements of list except first
  acc = []
  for i in range(1,len(lat)):
    acc = acc + [lat[i]]
Run Code Online (Sandbox Code Playgroud)

这是实现此功能的有效方法吗?我是否缺少某种内置功能?提前致谢!

python higher-order-functions

1
推荐指数
1
解决办法
2231
查看次数

键入 React HOC 的正确方法是什么?

我试图弄清楚我是否正确输入了我的反应高阶组件。在大多数情况下,这是正常工作的,但是在将 React 引用应用于 HOC 的实例时,我遇到了打字问题。下面是一个简化的再现:

import * as React from "react";

// Is returning a React.ComponentClass correct here?
function HOC(): (Component: React.ComponentType) => React.ComponentClass {
    return function(Component: React.ComponentType): React.ComponentClass {
        return class Bar extends React.Component {}
    }
}

class Foo extends React.Component<{},{}> {}
const Bar = HOC()(Foo);

class Test extends React.Component {
    private ref: React.RefObject<typeof Bar> = React.createRef<typeof Bar>();

    render(): any {
        return (
            <React.Fragment>
              <Bar
                ref={this.ref} // error here
              />
            </React.Fragment>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

我也在这里捕获了这个问题:https : //stackblitz.com/edit/react-ts-rtmfwr

我得到的错误是: …

types higher-order-functions typescript reactjs higher-order-components

1
推荐指数
1
解决办法
690
查看次数

使用地图仅更新 javascript 对象中的单个键

我想更新thumbnail我的对象中的密钥。

products :[
 {
    id: 1,
    name: "sth,
    thumb : 'abc.jpg'
 }
];
Run Code Online (Sandbox Code Playgroud)

我想更新该数组中的products.thumb所有内容,objects例如thumb: 'server/abc.jpg

searchedProducts = products.map(product => {
    return Object.assign({},
    product, 
    product.thumb = product.thumb ? 'server'+product.thumb : '')
});
Run Code Online (Sandbox Code Playgroud)

电流输出

[{
    0: 's,
    1: 'e',
    3: 'r',
    4: 'v',
    5: 'e',
    id: 1,
    thumb :'server/abc.jpg'
}]
Run Code Online (Sandbox Code Playgroud)

javascript higher-order-functions ecmascript-6 map-function

1
推荐指数
1
解决办法
1万
查看次数

将协程函数作为函数参数传递

我需要传递一个协程函数作为另一个函数的参数。例如:

private fun handleIt(here: Long, call: (hereId: Long) -> Unit) {
            call(here)
}
Run Code Online (Sandbox Code Playgroud)

然后从协程范围:

GlobalScope.launch {
                        handleIt(3) { viewModel.doThings(hereId) }
                    }
Run Code Online (Sandbox Code Playgroud)

viewModel 函数如下所示:

suspend fun doThings(hereId: Long) {
        withContext(coroutineContextProvider.io) {
            doSomething(hereId)
        }
    }
Run Code Online (Sandbox Code Playgroud)

但现在,我收到错误:“只能在协程体内调用暂停函数。有什么建议吗?

coroutine higher-order-functions kotlin

1
推荐指数
1
解决办法
1564
查看次数

如何在反应中单击时将元素添加到数组?

我的反应还很新(我只使用过 abit 类),我想添加我的输入值并将foodList它们写在屏幕上,但我的大脑被锁定了,我不知道如何...

任何提示都会有所帮助,谢谢!

import React, {useState, useEffect} from 'react';


const Form = () => {

    const [recipe, setRecipe] = useState("");
    const [ingrediens, setIngrediens] = useState("");
    const [foodList, setFoodList] = useState([])

    const handleChange = event => {
        setIngrediens({[event.target.name]: event.target.value})
        setRecipe({[event.target.name]: event.target.value})
    }

    const handleClick = event => {   // Here is where i get problem

    }   

    return (
        <main>
            <button onClick={handleClick}>add</button>
            <div className="form">
            <input type="text" placeholder="Enter your recipe" name="recipe" onChange={handleChange} ></input>
            <input type="text" placeholder="Enter your ingrediens" name="ingrediens" onChange={handleChange} …
Run Code Online (Sandbox Code Playgroud)

javascript arrays higher-order-functions reactjs

1
推荐指数
1
解决办法
7189
查看次数

模仿 c++17 中的 std::bind_front 来调用成员函数

是否可以std::bind_front在 C++17 中轻松模仿?(仅对于成员函数包装就可以)

我查看了中的实现,旨在复制,但看起来它确实非常具体的实现

我在想 lambda 包装器或模板函数/对象可能有用吗?

(这里性能不是问题)

c++ higher-order-functions template-meta-programming c++17 bind-front

1
推荐指数
1
解决办法
948
查看次数

尽管参数未定义,但返回函数的函数不会引发错误

我在一篇教程中看到了这段代码片段:

\n
const myFunction = () => {\n   return function (caller) {\n     caller(firstFuctnion());\n     caller(secondFunction());\n   };\n};\n
Run Code Online (Sandbox Code Playgroud)\n

一旦我这样称呼它,你能告诉我它是如何工作的吗:

\n
myFunction()\n
Run Code Online (Sandbox Code Playgroud)\n

caller当参数实际上未定义时,为什么我没有 \xe2\x80\x99t 收到错误?

\n

另一方面,如果我省略它并编写如下代码:

\n
const myFunction = () => {\n   return function () {\n     firstFuctnion();\n     secondFunction();\n   };\n };\n
Run Code Online (Sandbox Code Playgroud)\n

这两个函数firstFuction()secondFunction()\xe2\x80\x99t 被执行。那么,caller\xe2\x80\x8a\xe2\x80\x94\xe2\x80\x8a 到底是如何调用\xe2\x80\x80\x99\xe2\x80\x8a\xe2\x80\x94\xe2\x80\ x8a 工作吗?

\n

对于那些可能想查看完整功能代码的人:

\n

\r\n
\r\n
const myFunction = () => {\n   return function (caller) {\n     caller(firstFuctnion());\n     caller(secondFunction());\n   };\n};\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

我不明白这部分。那dispatch实际上是做什么的。它没有作为参数传递,也没有在任何地方定义它是什么。是功能吗?我可以whatever在那里写。 …

javascript higher-order-functions redux

1
推荐指数
1
解决办法
612
查看次数