我正在尝试编写一个接受数组作为参数的函数.该数组可以包含任意数量的元素.
Function processArr(Arr() As Variant) As String
Dim N As Variant
dim finalStr as string
For N = LBound(Arr) To UBound(Arr)
finalStr = finalStr & Arr(N)
Next N
processArr = finalStr
End Function
Run Code Online (Sandbox Code Playgroud)
以下是我尝试调用该函数的方法:
Sub test()
Dim fString as string
fString = processArr(Array("foo", "bar"))
End Sub
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说:
编译错误:类型不匹配:数组或用户定义的预期类型.
我究竟做错了什么?
我有一个抽象类和一个扩展抽象类的子类.孩子应该是个傻瓜.以下是抽象类的简化示例:
abstract class AbstractClass{
protected static $instance = NULL;
abstract protected function meInit();
private function __construct(){
$this->meInit();
$this->init();
}
private function __clone(){}
static function getInstance(){
if (is_null(self::$instance)){
self::$instance=new self;
}
return self::$instance;
}
function init(){
'code here;
}
}
Run Code Online (Sandbox Code Playgroud)
这是简化的子类:
class ChildClass_A extends AbstractClass{
protected function meInit(){
'some code;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试获取孩子的实例时,$child = ChildClass_A::getInstance();我收到此错误:
致命错误:无法在第7行的C:\ wamp\www\Classes\AbstractClass.php中实例化抽象类AbstractClass
我怀疑是罪魁祸首self::$instance=new self;.我该如何重做以达到我的需要?
我有这样的SAS代码:
%if &tp. = kdb %then %do;
%let sn = "&kdbsn.";
%end;
%if &tp. = bkb %then %do;
%let sn = &bkbsn.;
%end;
%if &tp. = edw %then %do;
%let sn = &edwsn.;
%end;
%if &tp. = odw %then %do;
%let sn = &odwsn.;
%end;
%if &tp. = adw %then %do;
%let sn = &adwsn.;
%end;
%put &sn;
Run Code Online (Sandbox Code Playgroud)
我需要为许多其他情况执行此操作,并且模式始终相同.根据变量,&tp.我将变量设置为与变量&sn.相同的值,该变量的名称前3个字符等于value &tp.和2个附加字符sn.是否有一个函数可以返回我需要的变量名称,所以我不需要无数个if语句?