通过Chai运行一些测试,我发现在此代码下测试将失败:
#include "pch.h"
#include <iostream>
using namespace std;
struct point {
float x, y;
};
class Quadrangle
{
public:
void init() // sets coordinates for A, B, C, D
{
cout << "Input A coordinates (x, y): ";
cin >> A.x >> A.y;
cout << "Input B coordinates (x, y): ";
cin >> B.x >> B.y;
cout << "Input C coordinates (x, y): ";
cin >> C.x >> C.y;
cout << "Input D coordinates (x, y): ";
cin >> D.x >> D.y;
};
void square()
{
// square calculation
};
private:
point A, B, C, D;
};
class Rectangle : public Quadrangle
{
public:
void square()
{
// square calculation
};
private:
point A, B, C, D;
};
但是它会通过以下内容:
const add = require('./addition');
//'add is not a function error' even though it's directly exported as a function
但是在使用npm模块时,所有内容都声明为不带括号:
const {add} = require('./addition');
这些本质上是具有多个属性的对象,可以访问。为什么这样工作?仅仅是必须明确指定为对象的函数导出吗?
答案 0 :(得分:2)
这称为对象分解。请参阅link。
例如,您已经导出了一个名为sampleFunctions.js的文件,该文件具有以下导出功能
function function1(params) {};
function function2(params) {};
module.exports = {
sampleFunc1: function1,
sampleFunc2: function2
}
现在,当您需要它时,有两种方法-
let {sampleFunc1} = require('./sampleFunctions');
sampleFunc1();
在这种情况下,您仅公开了所需的功能,而不公开从该文件导出的所有功能。
let sampleFuncs = require('./sampleFunctions');
let samFunc1 = sampleFuncs.sampleFunc1;
samFunc1()