我正在尝试在我的数组中构建一个if条件,目前看起来像这样但不起作用。
import threading
VAR = 0
def function():
while True:
global VAR
while VAR == VAR:
print VAR
time.sleep(0.5)
THR = threading.Thread(target=function)
THR.start()
time.sleep(1)
function().VAR = 4 # this doesn't affect the output, only adds a seemingly random whitespace before it
time.sleep(2)
THR.VAR = 5 # nothing changes
基本上hasma返回true或false,如果为true,则应添加上述内容,如果为false,则返回(add)no。
答案 0 :(得分:0)
您可以尝试以下方法:
protected $menuItems = [
'items' => [
[
'title' => 'test',
]
]
]
if($this->hasma())
$menuItems['items'][] = ['title' => 'Ma']
查看代码时,我注意到您使用了关键字" protected"这涉及到你在声明中硬编码了你的类属性的值。 相反,您应该在构造方法中初始化所有属性。 代码如下所示:
<?php
class A
{
protected $menuItems;
function __construct()
{
$this->menuItems = [
'items' => [
['title' => 'test']
]
];
if($this->hasma())
$menuItems['items'][] = ['title' => 'Ma'];
}
}
?>
答案 1 :(得分:0)
你做不到。在构造函数中构建该数组。如果以这种方式构建数组,则在对象被安装时调用hasma方法。 所以做这样的事情:
function __construct(){
$this->menuItems=[['title' =>'test']];
if($this->hasma())
$this->menuItems[1]=['title'=>'Ma'];
}
答案 2 :(得分:0)
在声明类属性时,不能使用 $ this 。但是,您可以执行以下操作:
class Test {
protected $menuItems;
function hasma() {
return true;
}
function __construct() {
$this->menuItems = [
'items' => [
[
'title' => 'test',
],
$this->hasma() ? [
'title' => 'Ma',
] : null,
],
];
}
function getMenu() {
return $this->menuItems;
}
}
$test = new Test();
print_r($test->getMenu());