这是我在php中的类的简化版本:
class someClass {
public function edit_array($array) {
array_walk_recursive($array, 'edit_value');
}
public function edit_value(&$value) {
//edit the value
}
}
Run Code Online (Sandbox Code Playgroud)
现在将类中的函数名称发送到array_walk_recursive显然不起作用.但是,除了使用循环重新创建array_walk_recursive之外还有其他工作吗(我将保存为最后的手段)?提前致谢!
因此,我正在尝试为Chrome构建一个简单的Omnibox扩展,供个人使用.它的工作方式与任何其他Omnibox扩展一样:您输入扩展名关键字并按Tab键,这将提供多功能框的扩展控件.然后键入一个短语或诸如此类的东西,并在多功能框下方弹出一个建议列表.然后,您可以使用箭头键或鼠标选择建议,然后浏览器导航到与该建议相关联的页面.所有这一切都很好.
但是,我想要它做的是,当我在没有选择建议的情况下按回车时,我希望浏览器转到建议列表中的第一个建议.相反,现在发生了什么,我得到这个错误页面:
我在文档中找不到任何答案.这就是我的代码现在(in background.js):
chrome.omnibox.onInputChanged.addListener(
function(text, suggest)
{
text = text.replace(" ", "");
suggest([
{ content: "http://reddit.com/r/" + text, description: "reddit.com/r/" + text },
{ content: "http://imgur.com/r/" + text, description: "imgur.com/r/" + text }
]);
}
);
chrome.omnibox.onInputEntered.addListener(
function(text)
{
chrome.tabs.getSelected(null, function(tab)
{
chrome.tabs.update(tab.id, {url: text});
});
}
);
chrome.omnibox.setDefaultSuggestion({ description: "visit /r/%s" });
Run Code Online (Sandbox Code Playgroud)
那么在没有选择建议的情况下按下回车时是否有一种设置默认操作的方法?有点像自定义搜索功能默认情况下在Chrome多功能框中有效吗?
我有一个Logger类,可以在我的应用程序中记录事件.虽然我在这个应用程序中只需要一个记录器实例,但我希望这个类可以重用,所以我不想让它成为单例并将它与我对该应用程序的特定需求结合起来.
我希望能够从应用程序的任何位置访问此Logger实例,而无需每次都创建一个新的实例或将其传递给可能需要记录某些内容的每个类.我目前所做的是有一个ApplicationUtils单例,我用它作为应用程序Logger的访问点:
object ApplicationUtils {
lazy val log : Logger = new Logger()
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个Loggable特性,我添加到需要Logger的类:
trait Loggable {
protected[this] lazy val log = ApplicationUtils.log
}
Run Code Online (Sandbox Code Playgroud)
对于我想要实现的目标,这是一种有效的方法吗?感觉有点黑客.我可以使用更好的方法吗?我对Scala很新.