添加到.NET 4 的ExpandoObject类允许您在运行时任意设置对象的属性.
使用a Dictionary<string, object>
或者甚至是Hashtable有什么优势吗?据我所知,这只是一个哈希表,您可以使用稍微简洁的语法访问.
例如,为什么这样:
dynamic obj = new ExpandoObject();
obj.MyInt = 3;
obj.MyString = "Foo";
Console.WriteLine(obj.MyString);
Run Code Online (Sandbox Code Playgroud)
真的比以下更好,或者大不相同:
var obj = new Dictionary<string, object>();
obj["MyInt"] = 3;
obj["MyString"] = "Foo";
Console.WriteLine(obj["MyString"]);
Run Code Online (Sandbox Code Playgroud)
使用ExpandoObject而不是仅仅使用任意字典类型可以获得什么真正的优势,除了不明显你正在使用将在运行时确定的类型.
我正在开发一个目前在Linux和uClibc中使用C的嵌入式项目.我们有兴趣将它转移到C++,但我不希望与libstdc ++中的链接相关的开销.我的印象是,如果我们不使用STL中的任何内容,例如iostream或vector,这是可能的.
如何在不链接到libstdc ++的情况下直接编译g ++?
我只是设置了django-sphinx,它工作得很漂亮.我现在能够搜索我的模型并获得惊人的结果.一个问题是我必须使用indexer命令手动构建索引.这意味着每次添加新内容时,我都必须手动命中命令行来重建搜索索引.这是不可接受的.
我可以创建一个自动运行索引器命令的cron作业,但这远非最佳.在cron再次运行之前,不会对新数据编制索引.此外,索引器将大多数时间不必要地运行,因为我的站点没有经常添加数据.
如何设置它,以便只要在可搜索的django模型中添加或修改数据,Sphinx索引就会自动重建?
我发现自己编写的代码如下:
foreach($array as $key => $value) {
switch($key) {
case 'something':
doSomething($value);
break;
case 'somethingelse':
doSomethingElse($value);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来解决这个问题?对我来说似乎很脏,但我可能只是在思考它.
我能想到的唯一另一种选择是每个键的if语句,这似乎没有任何好处.即:
if($array[0] == 'something') {
doSomething($array[0]);
}
if($array[1] == 'somethingelse') {
doSomethingElse($array[1]);
}
Run Code Online (Sandbox Code Playgroud)
(或类似的东西)
如果需要,我可以发布确切的代码,但这是发生的事情的大致轮廓.请批评,但请记住我在这里寻求帮助.所以,如果我做了一些非常错误的事情,那就指出来吧.
我有一个Android Spinner
,当用户从弹出对话框中选择一些内容时,我想收到一个回调.它似乎setOnItemClickListener()
或setOnItemSelectedListener()
将是正确的使用方法,但是当我选择微调器中的一个项时,都不会被调用.
有没有正确的方法来做到这一点?
UPDATE
根据commonsware的建议,我做了以下操作,但我的onItemSelected()
方法永远不会被调用:
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter( new ArrayAdapter<SettingValue>(getContext(), android.R.layout.simple_list_item_1, android.R.id.text1, setting.getSettingValues() ) );
spinner.setOnItemSelectedListener( new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("BOOGA");
final SettingValue settingValue = (SettingValue)parent.getSelectedItem();
final Editor edit = getContext().getSharedPreferences( PREFS_CONTEXT_NAME, Context.MODE_PRIVATE).edit();
edit.putString(setting.name(), settingValue.name());
edit.commit();
}
public void onNothingSelected(AdapterView<?> parent) {
// do nothing
}
});
Run Code Online (Sandbox Code Playgroud) 我试图导航我的新EC2设置,并希望找到Rails的AMI设置.我一直遇到麻烦.基本上,我正在寻找这样的东西:
* Apache 2.2
* Ruby Enterprise Edtion (REE)
* Passenger
* MySql Installed and configured with Ruby
Run Code Online (Sandbox Code Playgroud)
任何人都有一个AMI,他们可以指向我的基本轨道堆栈?
感谢您的回复/想法.我见过大多数这些选择.我想我会选择一个干净的Linux AMI,然后使用这样的东西自己定制它:
http://www.rubyinside.com/how-to-install-a-ruby-18-stack-on-ubuntu-810-from-scratch-1566.html
此外,是的,我计划在单个EC2实例上运行Rails作为VPS的替代方案.如果我使用预留的实例,我基本上可以获得一台专用机器和1.7GB的RAM,每月约22美元.这击败了我发现的任何VPS.还有其他成本和负担,但我会继续调查是否有可能.
谢谢.
我希望看到下一个push
会做的所有更改的列表.git status
似乎知道我已经做了本地提交......我怎么能告诉我这些是什么?我一直在做的是这样的:
% git status
# On branch master
# Your branch is ahead of 'origin/master' by 7 commits.
...
Run Code Online (Sandbox Code Playgroud)
好吧,它说了7次提交.那么我呢
% git diff --name-status HEAD~7
M bin/bench
M scala/001/02.scala
M scala/007/01.scala
A scala/010/01.scala
A scala/016/01.scala
A scala/020/01.scala
Run Code Online (Sandbox Code Playgroud)
有没有更简洁的方法来做到这一点?我习惯于svn"svn diff"基本上会这样做,因为没有staged/unstaged的概念.
我有用户选择的行列表,我想逐个删除它们,并在最后显示结果.
很明显,如果我只做简单的循环并且每次调用ajax函数,但是我如何循环并检查哪一个成功,哪一个失败以及何时完成?
你会怎么做?什么是批量编辑/删除的正确方法?