人们,我怀疑这是我或我的电脑是否在这里很慢。
我跟着编码片:
DatePicker datePicker = new DatePicker();
datePicker.setDateFormat(new SimpleDateFormat("dd.MM.yy"));
datePicker.getComponent(0).setFont(font);
int height = datePicker.getComponent(0).getPreferredSize().height;
datePicker.getComponent(1).setPreferredSize(new Dimension(height, height));
inputList.add(datePicker);
除了是一个丑陋的代码,它没有按预期工作。 这里的想法是使这个方法接受字符串和字符串数组作为参数,并且在数组的情况下,递归自身以处理每个字符串。
当提供一个数组作为参数时,发生了if和class Whatever
{
...
private function requireFile($filePath)
{
if(is_array($filePath))
foreach($filePath as $singleFilePath)
if($this->requireFile($singleFilePath))
break;
elseif(($filePath = stream_resolve_include_path($filePath = $filePath . '.php')) !== false)
return require_once $filePath;
}
}
块的执行,从而使PHP解析器在{{{{}}中发出一个数组到字符串的转换。 1}}行。
我不理解为什么在elseif
块周围添加括号(将它们置于elseif
或if
内部并不会改变任何内容)是为了使一切工作像一个魅力,因为foreach
下面只有一个声明,因此不需要它们在那里:
if
有人可以帮助我吗?这段代码有什么问题?
编辑:谢谢大家。哈哈,我想你的答案证明我在这里很慢,哈哈哈。几个月的编程让人们写出疯狂的东西......
答案 0 :(得分:3)
如果没有括号,PHP解析器将解析与{strong>第二 elseif
相关的if
语句,而不是第一个(外部)。添加括号会告诉解析器elseif
属于第一个if
。
PHP 不像一样,其中缩进告诉解析器语句之间的关系。
答案 1 :(得分:1)
我假设当你在if语句周围放括号时它可以工作。无论如何,这就是为什么它不起作用。
if($this->requireFile($singleFilePath))
break;
elseif(($filePath = stream_resolve_include_path($filePath = $filePath . '.php')) !== false)
return require_once $filePath;
elseif
与最后if
语句分组,在这种情况下遇到内部if
,您需要在外部if
周围添加括号以明确告诉解析器else if
属于外部而不是内部if
。缩进在PHP中没有区别。
另一方面,你在elseif分支中有一个不必要的分配:$filePath = resolve_include_path($filePath = $filePath . '.php')
可以在没有第二个分配$filePath = resolve_include_path($filePath . '.php')
的情况下完成。