我想创建一个类,其中有一个自动调用的函数,用于处理存储在此类实例中的信息。
但是,每个实例都有不同的值,并且可能有不同的方式来处理该内容。
因此,我需要与构造函数重载相似但在成员函数中。每个实例都可以重载默认函数或将其保留为默认值来处理输入。
如何实现?
答案 0 :(得分:0)
通过为变量行为use Cake\Utility\Inflector; // write this at the top
class .. extends ... {
/* other code */
public function <your-function> {
$title = $this->request->data['title'];
$slug = Inflector::slug($title); // Converting to slug
}
}
创建一个单独的类,可以导出与该函数相关的本地数据,并通过作为类来导出。
Callable
使用函数运算符class Callable {
public:
int m_Value;
Callable(int value) : m_Value(value)
{
}
void operator()( int val1, double val2 /* whatever makes sense */ ) {
}
};
,我们创建了一种使Callable类型的变量看起来像函数的方法。
void operator()( ...... )
调用class Variable {
public:
Callable myFunction;
Variable(const Callable & howToCall, /* some more stuff */) :
myFunction(howToCall)
{ /* stuff */
}
void aFunction(int data, double value ) {
myFunction( data, value);
}
};
时,会调用aFunction
的当前值。
最后myFunction
可以通过修改myFunction的值来改变它调用的函数....
Variable
答案 1 :(得分:0)
尝试使用if else条件调用Constructor中的函数 像:
class abc{
abc(){
if username == "member 1"
functioncall();
else
functioncall();
}
}
答案 2 :(得分:0)
据我所知,您需要一些虚拟构造仿真。有一种简单的C / C ++方法可以做到。
adattamento: function(data) {
var continua = true;
var scorcfat = this.famiglia;
var scorcroot = {};
this.controlloprimi(scorcroot, scorcfat);
this.root = scorcroot;
console.log("hey!")
console.log(this.root);
},
controlloprimi: function(scorcroot, scorcfat) {
scorcroot.name = scorcfat.name;
scorcroot.hidden = false;
scorcroot.no_parent = true;
if (scorcfat.father != null) {
if (scorcfat.mother != null) {
scorcroot.children = [{}, {}, {}];
this.controlloprimi(scorcroot.children[1], scorcfat.father);
scorcroot.children[2].name = "";
scorcroot.children[2].hidden = true;
scorcroot.children[2].no_parent = false;
this.controlloprimi(scorcroot.children[3], scorcfat.mother)
} else {
scorcroot.children = [{}]
this.controlloprimi(scorcroot.children[1], scorcfat.father);
}
}
if (scorcfat.mother != null) {
scorcroot.children = [{}, {}];
this.controlloprimi(scorcroot.children[1], scorcfat.mother);
}
},
目前还不是很清楚,但仍然可以解决问题。