Ruby是完全面向对象的语言.在红宝石中,一切都是一个对象,因此属于某个类.例如5属于Object class
1.9.3p194 :001 > 5.class
=> Fixnum
1.9.3p194 :002 > 5.class.superclass
=> Integer
1.9.3p194 :003 > 5.class.superclass.superclass
=> Numeric
1.9.3p194 :005 > 5.class.superclass.superclass.superclass
=> Object
1.9.3p194 :006 > 5.class.superclass.superclass.superclass.superclass
=> BasicObject
1.9.3p194 :007 > 5.class.superclass.superclass.superclass.superclass.superclass
=> nil
Run Code Online (Sandbox Code Playgroud)
所以,我们必须通过在类前面添加类/对象名称来调用所有方法Object_name#method_name.例:
5.times{|i| puts i}
Run Code Online (Sandbox Code Playgroud)
现在,Rails有这些所谓的助手一样stylesheet_link_tag,javascript_include_tag,form_for等它不遵循这个Object_name#method_name语法,所以我想他们只是正常功能.
所以我的问题是
everything a object & there are no primitives.作为例子,人们引用5.+(6)甚至说运营商只是简单的方法?如果"oid"和"instance"字段匹配,我想对子文档"value"字段执行多次更新.我一次可以做一个子文档,但有多种方法可以做到这一点
- 这适用于一个 -
db.myTable.update({ "data" : { "$elemMatch" : { "oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3",
"instance" : "0" } },
"$atomic" : "true" },
{ $set: { "data.$.value": "change good" }},
false,
true);
"_id" : 483,
"data" : [{
"oid" : "1.3.6.1.4.1.111.3.10.2.5.35.3",
"instance" : "0",
"value" : "0"
}, {
"oid" : "1.3.6.1.4.1.111.3.999.2.5.2",
"instance" : "0",
"value" : "aaa"
}, {
"oid" : "1.3.6.1.4.1.111.3.30.5.1.1",
"instance" : "0",
"value" : "BBB"
}]}
Run Code Online (Sandbox Code Playgroud) 我正在将redis集成到我的NodeJS服务器应用程序中,我正试图弄清楚是否使用hiredis命令安装node_redis.我认为如果它在某种程度上没有用处,那么安装它的选项将无法使用.同时,node_redis(https://github.com/mranney/node_redis)的github页面清楚地表明升级到较新版本的nodeJS会导致添加hiredis选项出现问题.
有人可以列出添加hiredis vs不是的不成文的利弊吗?使用C库可以提高多少性能?
我最近将一些模板从ERB转换为Haml.它大多变得更清洁,更好,但按钮定义开始变得很糟糕.
我想转换它
= link_to t('.new', :default => t("helpers.links.new")),
new_intern_path,
:class => 'btn btn-primary' if can? :create, Intern
Run Code Online (Sandbox Code Playgroud)
这样的事情
= new_button Intern
Run Code Online (Sandbox Code Playgroud)
我还有其他几个实体,Intern所以其他所有页面也会从中受益.
所以,我输入了这段代码
def new_button(person_class)
return unless can?(:create, person_class)
new_route_method = eval("new_#{person_class.name.tableize}_path")
link_to t('.new', :default => t("helpers.links.new")),
new_route_method,
:class => 'btn btn-primary'
end
Run Code Online (Sandbox Code Playgroud)
它按预期工作.我只是不确定那个eval电话(因为它是邪恶的,所有这一切).有一种更简单,更不邪恶的方式吗?
除了遍历文档之外,还有什么方法可以获取 MongoDB 中特定文档的键列表?
即我想获取由返回的文档的密钥
db.users.find({username:'xyz@abc.com})
Run Code Online (Sandbox Code Playgroud)
是否有任何内联命令。如果没有,任何人都可以给出如何做的想法吗?
我有一个由类型组成的数组,BSON::ObjectId我希望它与一些ID作为字符串进行比较.
if my_array_of_BSON_ObjectIds.include?(@my_id_as_a_string)
# delete the item from the array
else
# add the item to the array as a BSON::ObjectId
end
Run Code Online (Sandbox Code Playgroud)
由于类型不同,这不起作用,我可以将我的字符串转换为BSON::ObjectId?如果是这样,怎么样?
使用Redis进行会话存储而不是简单地将所有数据存储在应用程序内的变量中有什么好处?
我通常会为不同的代码段创建分支,但偶尔会忘记创建一个新的分支,并且所有内容都发生在主分支上.
我怎么能说git虽然我在主分支上,但这个提交是针对xyz分支的?
http://play.golang.org/p/jdWZ9boyrh
我收到了这个错误
prog.go:29: invalid receiver type *[]Sentence ([]Sentence is an unnamed type)
prog.go:30: cannot range over S (type *[]Sentence)
[process exited with non-zero status]
Run Code Online (Sandbox Code Playgroud)
当我的函数尝试接收结构数组时.
一个未命名的类型是什么意思?为什么不能命名?我可以在函数外面命名它,并将它们作为参数传递给它们命名.
这是行不通的.所以我只是将[] Sentence作为一个论点并解决了我需要的问题.但是当它们作为参数传递时,我不得不返回一个新副本.
我仍然认为如果我能让函数接收结构数组并且不必返回任何内容那将是很好的.
如下所示:
func (S *[]Sentence)MarkC() {
for _, elem := range S {
elem.mark = "C"
}
}
var arrayC []Sentence
for i:=0; i<5; i++ {
var new_st Sentence
new_st.index = i
arrayC = append(arrayC, new_st)
}
//MarkC(arrayC)
//fmt.Println(arrayC)
//Expecting [{0 C} {1 C} {2 C} {3 C} {4 C}]
//but not …Run Code Online (Sandbox Code Playgroud) 参考nginx官方文档。Nginx的reload命令用于重新加载配置文件?在此过程中,该服务不会停机。
我了解到,它会一直等待已连接的请求,直到完成为止,然后停止接受任何新请求。这个主意很酷,但是如何处理保持活动的连接呢?因为那些长期存在的连接不会关闭,并且不断有请求出现。