我在Homebrew中遇到权限问题:在我安装Node并尝试使用curl命令安装npm后,Homebrew告诉你使用它,它会因EACCESS错误而失败.我检查了节点文件夹,权限是a)用户无法拥有(我必须知道它)和b)没有写权限(我不得不chmod 755).
我已经修复了NPM的问题,但我不得不将其安装脚本作为sudo运行(这很糟糕!).
我假设我必须以root用户或类似方式安装Homebrew.我希望重新安装将解决它,但我找不到如何重新安装Homebrew的来源.
当我在终端中重新运行安装程序时,我得到:
/usr/local/.git already exists!
Run Code Online (Sandbox Code Playgroud) class MyThing {
protected HashMap<String,Object> fields;
protected MyThing(HashMap<String,Object> newFields){
fields.putAll(newFields);
}
protected Object get(String key){
return fields.get(key);
}
}
Run Code Online (Sandbox Code Playgroud)
现在有点背景.我使用这个类作为一个超类来代表一堆不同的类,它们代表XML文件中的对象.这基本上是API包装器的实现,我将其用作API中的解析XML和数据库之间的适配器.转换被委托给get方法的调用者.如果子类在创建时或者返回变量时需要执行某些操作,则只需调用super,然后操作之后返回的内容.例如.:
class Event extends MyThing {
public Event(HashMap<String,Object> newFields){
super(newFields);
// Removes anything after an @ symbol in returned data
Pattern p = Pattern.compile("\\@.*$");
Matcher m = p.matcher((String)fields.get("id"));
boolean result = m.find();
if (result)
fields.put("id", m.replaceFirst(""));
}
}
public Object get(String key){
Object obj = super(key);
if (key.equals("name")){
return "Mr./Mrs. " + ((String)obj);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得我应该这样做的原因是因为它们具有不同的属性,所以我不必为每个子类编写getId,getName,getWhatever方法.它可以节省时间,而且非常自我解释.
现在这显然是"unJavalike",而且更像是一种半语言的做事方式,但是有理由说我绝对不应该这样做吗?
我正在使用数据类型int32_t为iOS创建一个位掩码.然后将其设置为接受NSInteger的变量.这没有像预期的那样抛出编译时错误,但我想知道 - 是否有某种方式可能导致将来运行时错误?